PDA

Просмотр полной версии : Патчинг бинарика


CyberSun
26.05.2009, 14:35
Всем привет, вопрос такой:
Как пропатчить бинарик с такого простенького исходника:
#include <stdio.h>

main()
{
printf("First message\n");
printf("Second message\n");
}

Собрали, отдизасмили
http://s52.radikal.ru/i137/0905/cc/f211fe0372a5.jpg
Получили адреса двух printf'ов 004012DC и 004012E9...Как пропатчить экзешник этот, чтобы прога доходила до 004012DC(первого printf) и не делала call _printf, а заменить на jmp 004012E9 тоесть сразу прыгала на выполнение второй функции. Открываю в WinHex'e экзешник, http://s52.radikal.ru/i137/0905/bd/82d785a72fdb.jpgа что дальше искать???как патчить???Адреса что-то не те вообще???Помогите разобраться новичку.

zeppe1in
26.05.2009, 14:54
грузиш в olly, там патчиш как надо и сохраняеш изменения.

0rs
26.05.2009, 15:00
Надо из адресов, что в дизасме, вычесть image base.
004012DC-00400000=000012DC
И в интервале от 12DC до 12E8 забить байт 90

ProTeuS
26.05.2009, 15:07
насколько я понял, то байты по смещениям 12DC-12E1 нужно заменить на 0x90, тогда проскипается первое сообщение, и сразу выведется второе, и стек не порушится

CyberSun
26.05.2009, 16:18
Открыл в winhex'e бинарик(как на скрине выше привел), но не могу найти 000012DC(с вычетом imagebase'a)???Как найти этот адрес?

0rs
26.05.2009, 16:26
Меню Position/Go To Offset...
Чтобы увидеть шетнадцатиричное представление в меню View убрать галочку Text Display Only

neprovad
26.05.2009, 17:27
на мой взгляд winhex не самое удобное средство для редактирования exe и dll
лучше hiew :)

CyberSun
26.05.2009, 17:46
так нашли 12DC http://s56.radikal.ru/i151/0905/1c/97e0f1e7e85b.jpg

Переставил другой winhex, а в прежнем не было даже меню Position. Теперь такой вопрос:
Нопить мне не нужно (почему кстати по 12Е1) мне нужно заменить на "JMP 004012E9"(адрес второй ф-ции)..другими словами в hex редакторе открыв бинарик и найдя смещение 12DC заменить опкодами на команду "JMP любой адрес" сохранить изменения и запустив файл увидеть только один printf в выводе(так как первый мы заменим на безусловный переход).

Kaimi
26.05.2009, 19:18
Дай экзешник свой

CyberSun
26.05.2009, 19:31
Дай экзешник свой

http://rapidshare.com/files/237460563/1.exe.html

Kaimi
26.05.2009, 19:47
Начиная с 004012D7 впиши 68 E4 12 40 00 C3
Это правда не джамп, но сработает так как тебе нужно

CyberSun
26.05.2009, 20:26
На сколько я понимаю это опкоды 68 E4 12 40 00 C3 где можно с ними более детально ознакомиться и почему начиная с 004012D7, если не jmp то что тогда, просто для себя хочу разбираться а не тупо поросил - подсказали...если можно немного подробней

Kaimi
26.05.2009, 20:43
68 - push
E4 12 40 00 - адрес перехода
C3 - retn

Список опкодов http://wasm.ru/baixado.php?mode=doc&id=129
Начиная с 004012D7 потому что левая пятка так пожелала

CyberSun
27.05.2009, 15:14
Будем разбираться..Спс