Как автоматизировать задачу в OllyDBG? Использование Ollyscript или любого другого инструмента

Как автоматизировать задачу в OllyDBG? Я хочу создать сценарий.

Я bp по определенному адресу и перехожу к его аргументам стека. Есть четыре аргумента стека. Я использую адрес 2-го аргумента и размер из 4-го аргумента и выгружаю данные HEX в файл журнала.

Например :

Я установил точку останова на 512A12 и вижу в стеке следующее:

00192003   005DB123  RETURN to program.005DB123 from program.00512A12
00192011   0018F058 - 1st argument
00192028   03F48D78 - 2nd argument
00192032  03F48D78 - 3rd argument
00192036   00000500 - 4th argument

Поэтому я выгружаю данные с адреса, начинающегося с 00192028 03F48D78 - 2nd argument, где 03F48D78 — это адрес, с которого начинается дамп.

И я использую размер из 4-го аргумента 00192036 00000500 - 4th argument, где 500 — это размер данных для дампа.

Данные сохраняются в файле журнала. Это шестнадцатеричные данные из раздела дампа в OllyDBG.

Теперь я хочу зациклить эту функцию и автоматизировать ее. Как можно сделать эту автоматизацию в Ollyscript или чем-то еще?


person EAXEBP    schedule 12.02.2015    source источник


Ответы (3)


Насколько я знаю, ни один из существующих плагинов не предлагает функциональность .writemem для Windbg. Загруженный ниже плагин ollydbg улучшен на основе модифицированного плагина cmdline для анонимного (openrce blog) с добавленной командой .writemem

Скачайте и поместите dll в ollydbg 1.10 plugin path.

исправлен возможный путь сбоя (FindModule -> Mod-name может быть нулевым, если FindModule возвращает null, в таких случаях добавлена ​​строка «unknown_module» в качестве имени модуля для sprintf_s)

http://wikisend.com/download/750442/cmdline.dll

Этот плагин является enhanced version of modified cmdline plugin for ollydbg 1.10 by anonymouse (openrce blog) и содержит одну дополнительную команду .writemem

улучшения, являющиеся оригинальным исходным кодом, значительно изменены, чтобы компилироваться с помощью Visual Studio 2010 Express (старые команды не тестировались) добавлена ​​​​одна дополнительная команда .writemem (similar to windbg's .writemem)

usage as follows alt+f1 or plugin -> cmdline plugin . в диалоговом окне введите

writemem [esp+0x4] dword [esp+0x10] c:\dumps 

или, может быть

writemem 0x403085 0x45 f:\foo\blah

первая команда выгрузит байты 0xxxx, указанные [esp+0x10], с адреса, указанного [esp+0x4], в уже существующую папку c:\dumps

вторая команда сбросит 0x45 байт из 0x402085 в указанную папку

для автоматизации используйте эту команду с условной точкой останова журнала pass commands to plugin when paused functionality (shift+f4)

в поле редактирования введите

.writemem <address> <size> <folder path>
.run

когда когда-либо будет достигнута точка останова, содержимое памяти будет сброшено

еще один снимок, чтобы лучше объяснить слова ниже использование команды writemem

person blabb    schedule 17.02.2015
comment
не могли бы вы повторно загрузить расширенную версию модифицированного плагина cmdline для ollydbg 1.10? - person Minh-Triet Pham Tran; 09.09.2018
comment
@MinhTrietPhamTran, к сожалению, мне нужно просмотреть, я сообщу вам, когда я это сделаю - person blabb; 28.09.2018
comment
Было бы здорово, если бы у вас была учетная запись GitHub для архивирования вашего арсенала инструментов. - person Minh-Triet Pham Tran; 17.12.2018

Это руководство может помочь: http://x9090.blogspot.com/2009/07/ollyscript-tutorial-unpack-upx.html

Кроме того, вы можете внимательно прочитать некоторые сценарии, чтобы узнать больше о сценариях Olly.

person Yaser Al-Najjar    schedule 14.02.2015
comment
Хотя эта ссылка может дать ответ, пожалуйста, включите соответствующий код и комментарий на случай, если ссылка изменится. - person rfornal; 14.02.2015

Фактическая функция, которая мне нужна в конце концов, чтобы выполнить мою задачу, выглядит следующим образом.

Это функция шифрования/расшифровки

0x1 PUSH EBP — загружаются зашифрованные данные.

0x5 RETN — данные расшифрованы

Таким образом, зашифрованные/дешифрованные данные загружаются в значения стека, как я объяснял ранее.

1 - Когда bp достигает 0x1 PUSH EBP

2 - Переходим к значениям стека

3 - Мы следуем второму аргументу в качестве начального адреса для фрагмента зашифрованных данных и четвертому аргументу для размера данных.

4- Делаем дамп с помощью wrtiemem из мода cmdline


Также мы следуем тому же для расшифрованных данных

1 - Когда bp достигает 0x5 RETN

2 - Переходим к значениям стека

3 - Мы следуем второму аргументу в качестве начального адреса для фрагмента расшифрованных данных и четвертому аргументу для размера данных.

4- Делаем дамп с помощью wrtiemem из мода cmdline.


Мне было интересно, можно ли сохранить данные в одном текстовом файле с именем encdec.txt.

Зашифрованные значения HEX Расшифрованные значения HEX.

Например:

ENC - 88 F4 62 71 3D 25 CD 7C 72 76 8E 14 95 0B D1 8B DEC - 3E 2E BA 24 FA 22 47 A0 00 0F A5 0E F7 B0 9C 32

Если вышеперечисленное выполнено, мне нужно автоматизировать поиск HEX и заменить значения из encdec.txt в целевом зашифрованном файле.

Таким образом, автоматизация проверит строку «ENC - 88 F4 62 71 3D 25 CD 7C 72 76 8E 14 95 0B D1 8B», найдет ее в целевом файле и заменит значения шестнадцатеричными значениями в «DEC - 3E 2E BA 24». FA 22 47 A0 00 0F A5 0E F7 B0 9C 32"

person John Dev    schedule 21.02.2015