R0 CREW

Ассемблирование кода в Immunity Debugger

Здравствуйте!

Подскажите пожалуйста, я решил изучить Immunity Debugger, и сейчас учусь писать PyCommands для него.

Пишу срипт для поиска команды во всем адресном пространстве. Имеется следующий код:

import immlib

def main(args):
	imm = immlib.Debugger()
	search_bytes = imm.assemble("push 22") # ассемблируем инструкцию PUSH 22 в опкоды
	return str(search_bytes).encode("hex") # выводим в статус бар эти коды в 16-ричном представлении

Результат работы данного скрипта: Выводит в статус бар значение 6822000000
Но я ожидал результата 6A22 (что тоже является инструкцией PUSH 22)

В итоге мой скрипт (дополненный функционалом поиска) не находит эту инструкцию, т.к. опкоды другие :frowning: хотя инструкция такая имеется в модулях и её не мало находится через пункт Search For -> All Commands in all modules.

Напиши так:

search_bytes = imm.assemble(“push byte 0x22”)

Увы, не помогает :frowning: Выдает ошибку, не понимает инструкцию.

Значит баг ассемблера.

Я тоже попробовал. Если ассемблировать через окно, то дает 6а 22, а если скриптом, то 68 22 00 00 00. Хотя двиг один и в скрипт просто отдано АПИ. Хз.

Отложил это дело. Как вариант, можно писать код в окне, затем делать Binary - Binary Copy и искать в скрипте этот набор опкодов.
Вопрос задавал в целях изучения, практического применения пока-что мне не потребовалось.

Там в апи есть модификаторы, которые влияют на длину кода, который генерируется.

Не нашел такого там… Можешь подсказать, как регулировать это?
В документации написано только то, что метод assemble принимает просто string. Да и в коде immlib.py ничего не нашел.

в апи олли/иммунити, а не в биндингах, просто эти параметром пренебрегли когда писали их

http://www.ollydbg.de/Help/Assemble.htm

Понятно. Спасибо )

Жесть то какая. Я думал встроеный скриптовый ассемблер из коробки это главная килер фича имунити которая выгодно отличает его от всех прочих дебагеров. А тут выясняется что ему нельзя никак задать фактическую длинну операнда…

Как говорится, пока не попробуешь, не узнаешь :smiley: