Capstone динамически переключается с ARM на THUMB - PullRequest
0 голосов
/ 24 февраля 2020

Я пытаюсь написать простой скрипт для разбора байт-кода ARM / THUMB. В ARM очень часто происходит переключение с одного режима на другой, и поэтому крайне важно, чтобы дизассемблер мог следовать этому. У меня возникли проблемы с этим, хотя в документах говорится, что это очень просто (см. https://www.capstone-engine.org/lang_python.html#62 -dinically-change-disassemble-mode-at-run-time ). Мне кажется, это не работает во время выполнения.

Вот как выглядит мой тест:

for i in md.disasm(CODE, 0x1000):
    print("0x%x:\t%s\t%s" %(i.address, i.mnemonic, i.op_str))
    if i.mnemonic == "bx":
        md.mode = cs.CS_MODE_THUMB

Обратите внимание, что на самом деле он go переводит в режим большого пальца, но не во время л oop. Таким образом, происходит то, что код полностью разбирается в ARM, но если я запустлю его снова, он будет полностью разобран в THUMB.

Заранее спасибо за помощь

...