![]() |
eXeL@B —› Вопросы новичков —› Добавление кода в прогу=/ |
Посл.ответ | Сообщение |
|
Создано: 06 октября 2007 22:16 · Личное сообщение · #1 как можно добавить код в программу с помощью OllyDebugger'а? например, есть такой код: PUSH 0 CALL GetModuleHandleA MOV DWORD PTR [00411030],EAX JMP XXXXXXXX............ и т.д. как добавить вызов MsgBox'а например? чтоб было PUSH 0 PUSH 0 PUSH 00413010 PUSH 0 CALL MessageBoxA PUSH 0 CALL GetModuleHandleA MOV DWORD PTR [00411030],EAX в смысле вставить код в начало... когда я нажимаю пробем и ввожу новый код, то старый просто заменяется... нету проблем, когда программа начинается NOP'ами и можно просто их заменять на новый код, но это ведь будет раз из ста раз. я, конечно, могу в текстовом редакторе в начало вставить пару символов, потом их заменить на новый код, но ведь так неудобно! еще если в начало проги вставлять то можно, но если в середину... подскажите, пожалуйста, есть ли в отладчике функция добавления кода? ![]() ![]() |
|
Создано: 06 октября 2007 22:43 · Личное сообщение · #2 |
|
Создано: 06 октября 2007 22:43 · Поправил: tnt17 · Личное сообщение · #3 ну а почему тебе не сделать таким образом: ищешь свободное место в секции кода, либо затираешь не нужный код( иногда процедуру регистрации можно с легкостью затереть) ,ну и оформляешь патч вида: EP: jmp add_of_icode ; те n байт целого количества инструкций, что были в оригинальной проге, мы сохраняем(old_bytes) ;дальше идут оригинальные инструкции программы ... add_of_icode: PUSH 0 PUSH 0 PUSH 00413010 PUSH 0 CALL MessageBoxA PUSH 0 CALL GetModuleHandleA MOV DWORD PTR [00411030],EAX old_bytes; наши старый байти инструкций, что были сохранены jmp EP+n ; где n >=5 байт инструкций. ----- – Почему ты работаешь по ночам ? – Так удобнее... В одну смену с чертями... ![]() |
|
Создано: 06 октября 2007 22:47 · Поправил: Sturgeon · Личное сообщение · #4 |
|
Создано: 06 октября 2007 22:56 · Личное сообщение · #5 |
|
Создано: 06 октября 2007 22:57 · Личное сообщение · #6 |
|
Создано: 06 октября 2007 22:59 · Личное сообщение · #7 |
|
Создано: 06 октября 2007 23:02 · Личное сообщение · #8 |
|
Создано: 06 октября 2007 23:06 · Поправил: tnt17 · Личное сообщение · #9 |
|
Создано: 06 октября 2007 23:11 · Личное сообщение · #10 |
|
Создано: 06 октября 2007 23:44 · Поправил: tnt17 · Личное сообщение · #11 Necromancer13 А вот тут нужно уточнять, тебе нужно в памяти или на диске. В памяти он обычно не привышает 4кб, так как выравнивание идет по размеру страницы обычно равно тому, что прописано в SectionAlignment // Размеp выpавнивания секций в памяти. Hапpимеp, если значение в этом поле pавно 4096 (1000h), каждая секция должна начинаться по адpесу, кpатном этому значению. Если пеpвая секция находится в 401000h и его адpес pавен 10 байтам, следующая секция должна начинаться в 402000h, даже если адpесное пpостpанство между ними останется неиспользованным. // а если на диске, то см FileAlignment и SizeOfHeaders //FileAlignment Размеp выpавнивания секций в файле. Hапpимеp, если значение в этом поле pавно 512 (200h), каждая секция должна начинаться на pасстоянии от начала файла кpатном 512 байтам. Если пеpвая секция в файле находится по смещению 200h и ее pазмеp 10 байт, следующая секцию должна быть pасположена со смещением 400h: пpостpанство между смещениями 522 и 1024 будет неиспользованно/неопpеделенно. // //SizeOfHeaders Размеp всех заголовков + таблицы секций. То есть это значение pавно pазмеpу файла минус комбиниpованный pазмеp всех секций в файле. Вы можете также использовать это значение в качестве файлового смещения пеpвой секции в PE-файле. // смотри доку: http://wasm.ru/series.php?sid=4 http://wasm.ru/series.php?sid=4 ----- – Почему ты работаешь по ночам ? – Так удобнее... В одну смену с чертями... ![]() |
|
Создано: 07 октября 2007 01:26 · Личное сообщение · #12 |
|
Создано: 08 октября 2007 12:29 · Личное сообщение · #13 |
|
Создано: 08 октября 2007 15:11 · Личное сообщение · #14 |
|
Создано: 08 октября 2007 15:15 · Личное сообщение · #15 |
|
Создано: 08 октября 2007 16:22 · Личное сообщение · #16 |
|
Создано: 08 октября 2007 16:34 · Поправил: tnt17 · Личное сообщение · #17 |
|
Создано: 08 октября 2007 18:27 · Личное сообщение · #18 |
![]() |
eXeL@B —› Вопросы новичков —› Добавление кода в прогу=/ |