![]() |
eXeL@B —› Вопросы новичков —› мой Патчик )) |
Посл.ответ | Сообщение |
|
Создано: 17 декабря 2007 11:06 · Поправил: UR-Shark · Личное сообщение · #1 Собственно хотел пропатчить одну програмку, на помощь пришел с++. Потом решил более поковыряться на эту тему, раз уж взялся... Задача не заключается перехватывании именно этой АПИ что у меня в исходниках. Я использую эту АПИ в качестве примера, ведь здесь достаточно было бы изменить пару байт... Это так сказать в образовательных целях ![]() Хотелось задать несколько вопросов по коду: 1) Есть автоматические способы поиска или добавления свободного места куда я могу добавить свой код и исполнить его? 2) Я использую LoadLibrary для загрузки файла в память для последующего получения AddressOfEntryPoint и ImageBase, в принцепе это очень просто и работает, но ведь есть и другие способы? 3) Постоянно перещитытывать смещения при добавлении\измениении кода влом, есть что-нить более продвинутое? 4) Рад буду любым советам по оптимизации кода. 5) Подкиньте доков в тему. Конкретно меня ещё интересуют опкоды. Заранее спасибо за помощь. Собственно сами исходники + откомпиленые версии на всяк случай ![]() хотя всё прекрасно компилиться в VC6 и VS2005 ![]() ![]() |
|
Создано: 17 декабря 2007 15:10 · Личное сообщение · #2 |
|
Создано: 17 декабря 2007 20:16 · Личное сообщение · #3 UR-Shark пишет: 1) Есть автоматические способы поиска или добавления свободного места куда я могу добавить свой код и исполнить его? Секции подвигать? Кода туча в нете - всё сводится к разбору PE структур и fread()+fwrite() UR-Shark пишет: 2) Я использую LoadLibrary для загрузки файла в память для последующего получения AddressOfEntryPoint и ImageBase, в принцепе это очень просто и работает, но ведь есть и другие способы? Смотри выше - .exe это PE file. UR-Shark пишет: Кстати дайте что-нить про опкоды почитать, а то компилить а потом олькой лезти их выдирать это извращение тебе disasm движок нужен? ![]() |
|
Создано: 18 декабря 2007 07:30 · Личное сообщение · #4 UR-Shark пишет: Кстати дайте что-нить про опкоды почитать, а то компилить а потом олькой лезти их выдирать это извращение В таком ракурсе проще пользоваться Олей или Hiew'ом (они умеют транслировать команды асма в маш. коды), но лучше всё-таки FASM =). UR-Shark пишет: Постоянно перещитытывать смещения при добавлении\измениении кода влом, есть что-нить более продвинутое? Не очень понятно, какие именно смещения ты пересчитываешь, но если, например, хочешь получить метки, имена и всё такое, то FASM лучшее решение. ----- Всем привет, я вернулся ![]() |
|
Создано: 18 декабря 2007 09:37 · Личное сообщение · #5 Да, я фасм и юзал при написании. Очень хорошо помогает, компилишь потом открываешь олей и вытаскиваешь всё. Я имел ввиду тапа табличку или ещё лучше прогу, где ей сказал: PUSH EAX ана тебе 0x50 выдала! Хотелось бы как-нить по быстрее опкоды получать, может есть такое чудо?? Я имел ввиду вот что: kernel32_WriteProcessMemory это 0x0000220F + 0x7C800000 = 0x7С80220F пощиталось. дальше если записать это как 0xE8, 0x0F, 0x22, 0x80, 0x7C то получим совсем не то что хотелось, как оказалось нужно ещё отнять EIP. Вот и тут понадобилось допустим вставить пару байт посередке, теперь нужно будет отнимать другой EIP для кода, который ниже... Это всё вычислимо, но делать это заново ужос как не нравится. Можно также вызывать функцию через указатель, тогда отнимать EIP не приходиться, зато теперь нужно выделять место для указателя и вызывать так: 0xFF, 0x15, 0x??, 0x??, 0x??, 0x?? - здесь ?? это адрес где записано 0x0F, 0x22, 0x80, 0x7C кстати попробовал использовать 0xE9, 0x??, 0x??, 0x??, 0x?? вместо 0x68, 0x??, 0x??, 0x??, 0x??, 0xC3 касперскому это жутко не понравилось.. ![]() |
|
Создано: 18 декабря 2007 10:59 · Личное сообщение · #6 |
|
Создано: 18 декабря 2007 11:14 · Поправил: UR-Shark · Личное сообщение · #7 |
|
Создано: 18 декабря 2007 13:55 · Личное сообщение · #8 |
|
Создано: 18 декабря 2007 21:24 · Личное сообщение · #9 UR-Shark пишет: Да, я фасм и юзал при написании. Очень хорошо помогает, компилишь потом открываешь олей и вытаскиваешь всё. Я имел ввиду тапа табличку или ещё лучше прогу, где ей сказал: PUSH EAX ана тебе 0x50 выдала! Хотелось бы как-нить по быстрее опкоды получать, может есть такое чудо?? эээ, товарищ, в hiew есть асемблер - в decode рещиме Edit/F3, потом F2/Asm и пиши себе инструкции. ![]() |
|
Создано: 19 декабря 2007 11:54 · Личное сообщение · #10 |
![]() |
eXeL@B —› Вопросы новичков —› мой Патчик )) |
Эта тема закрыта. Ответы больше не принимаются. |