Как заменить cmp?
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Как заменить cmp? - 2011-08-12 16:43:46.500000
|
|
|
VintProgpRO
Сообщений: 11
Оценки: 0
Присоединился: 2011-07-08 08:44:26.156666
|
Вот кусок кода: .text:004C47DF 028 inc ebx ; default .text:004C47DF ; jumptable 004C478B cases 0-2 .text:004C47E0 028 add ebp, 38h .text:004C47E3 028 cmp ebx, 4Bh ; edx < 4Bh (markers) .text:004C47E6 028 fldz .text:004C47E8 028 fldz .text:004C47EA 028 fldz .text:004C47EC 028 jl loc_4C49F0 беда в том что в это сравнивание больше байта не запишешь .text:004C47E3 028 cmp ebx, 4Bh как мне пачнуть его чтобы можно было записывать 2 байта туда, писал такую функцию: void injectFunction (DWORD address, DWORD function) { DWORD Old; VirtualProtect( PVOID(address), 16, PAGE_READWRITE, &Old); BYTE * patch = (BYTE *)address; *patch = 0xE9; // JMP *(DWORD *)(patch+1) = (function-(address+5)); VirtualProtect( PVOID(address), 16, Old, &Old); } Пытался кусок кода заменить, но все равно ошибка! Код: injectFunction(0x04C47E3, (DWORD)Code_1); void Code_1() { _asm cmp ebx, 10h _asm fldz return; } кто знает выход из данной ситуации, пожалуйста помогите!
|
|
|
RE: Как заменить cmp? - 2011-08-13 12:42:04.603333
|
|
|
VintProgpRO
Сообщений: 11
Оценки: 0
Присоединился: 2011-07-08 08:44:26.156666
|
Ну и?
|
|
|
RE: Как заменить cmp? - 2011-08-14 13:36:49.780000
|
|
|
Flint_ta
Сообщений: 3720
Оценки: 1120
Присоединился: 2007-01-26 15:49:18.323333
|
Что ну и? Ты говоришь: тебе нужно пропатчить два байта, но они у тебя не влазиют т.к. CMP EBX,4Bh занимает один байт. Я тебе говорю, что CMP EBX,4Bh занимает не один, а три байта! и твои два байта патча запросто влезут на место трех. В чем проблема?
|
|
|
|
|