![]() |
eXeL@B —› Вопросы новичков —› win2000, crackme и VirtualAlloc |
Посл.ответ | Сообщение |
|
Создано: 14 августа 2007 08:05 · Личное сообщение · #1 У меня windows2000 Есть кракми http://www.stnc.ru/ftpdrmist/other/crackme0.exe . Но он не запускается. Пишет "crackme0.exe has generated errors and will be closed by Windows.........." Открыл в Олли. Наверное, какие-то проблемы с функцией VirtualAlloc Вот какие параметры возвращает 100014C0 >/$ 6A 40 PUSH 40 ; /Protect = PAGE_EXECUTE_READWRITE 100014C2 |. 68 00300000 PUSH 3000 ; |AllocationType = MEM_COMMIT|MEM_RESERVE 100014C7 |. 68 00400000 PUSH 4000 ; |Size = 4000 (16384.) 100014CC |. 68 00004000 PUSH 400000 ; |Address = 00400000 100014D1 |. E8 88000000 CALL <JMP.&kernel32.VirtualAlloc>; \VirtualAlloc Можно ли как-то исправить это кракми, чтобы он работал под вин2000? ![]() |
|
Создано: 14 августа 2007 10:23 · Поправил: sniperZ · Личное сообщение · #2 |
|
Создано: 14 августа 2007 10:30 · Личное сообщение · #3 |
|
Создано: 14 августа 2007 12:23 · Личное сообщение · #4 |
|
Создано: 14 августа 2007 14:14 · Личное сообщение · #5 sniperZ 0012FFB0 100014D6 /CALL to VirtualAlloc from crackme0.100014D1 Стек: $ ==> > 100014D6 /CALL to VirtualAlloc from crackme0.100014D1 $+4 > 00400000 |Address = 00400000 $+8 > 00004000 |Size = 4000 (16384.) $+C > 00003000 |AllocationType = MEM_COMMIT|MEM_RESERVE $+10 > 00000040 \Protect = PAGE_EXECUTE_READWRITE $+14 > 7C581AF6 RETURN to kernel32.7C581AF6 $+18 > 0012CF6C А по адресу ПРЫГ 100014D1 стоит 100014D1 |. E8 88000000 CALL <JMP.&kernel32.VirtualAlloc> ; \VirtualAlloc В EAX возвращает 00000000 после бряка bp VirtualAlloc asmonavt потому как память не выделяется... В свойствах по кракми и выбери эмуляцию под винд2000, посмотри сам ![]() |
|
Создано: 14 августа 2007 16:52 · Личное сообщение · #6 |
|
Создано: 19 августа 2007 00:12 · Личное сообщение · #7 |
|
Создано: 19 августа 2007 00:32 · Личное сообщение · #8 Может не в тему...... А вы не думали, что может для работы этого крякми нужен какой-нибудь .Net Framework или что-то типа этого??? У вас в системе устанолвлена эта дрянь? Просто такие выводы у меня, что недавно тоже парился с одним крякми, а оказалось, что ему для работы нужен был .Net Framework 1.1. ![]() |
|
Создано: 19 августа 2007 19:12 · Личное сообщение · #9 |
|
Создано: 19 августа 2007 19:52 · Личное сообщение · #10 |
|
Создано: 19 августа 2007 21:08 · Поправил: deepred · Личное сообщение · #11 |
|
Создано: 20 августа 2007 08:38 · Личное сообщение · #12 |
|
Создано: 20 августа 2007 10:53 · Поправил: Mavlyudov · Личное сообщение · #13 |
|
Создано: 20 августа 2007 11:02 · Личное сообщение · #14 |
|
Создано: 20 августа 2007 11:47 · Личное сообщение · #15 |
|
Создано: 20 августа 2007 12:42 · Личное сообщение · #16 |
|
Создано: 20 августа 2007 22:11 · Личное сообщение · #17 |
|
Создано: 21 августа 2007 01:07 · Личное сообщение · #18 |
|
Создано: 21 августа 2007 06:15 · Личное сообщение · #19 |
|
Создано: 21 августа 2007 17:18 · Поправил: Amok · Личное сообщение · #20 Mavlyudov Если посмотреть в крякми дальше процедуры VirtualAlloc, то дальше начинается распаковка в выделенную память. Обращения в выделенную память идут по абсолютным адресам типа 00 40 ХХ ХХ. Если сделать, как тебе советовали. 100014CC |. 68 00 PUSH 0 ; 100014D1 |. E8 88000000 CALL <JMP.&kernel32.VirtualAlloc>; После VirtualAlloc у меня в ЕАХ лежит 00 8D 00 00. Нужно менять все адреса в проге вида 00 40 ХХ ХХ на 00 8D ХХ ХХ. Крякми успешно распаковывается в выделенную память по адресу 00 8D 00 00. Но и там код оперирует абсолютными адресами 00 40 ХХ ХХ. 008D124E C705 A0304000 23>MOV DWORD PTR DS:[4030A0],401023 008D1258 C705 C0304000 00>MOV DWORD PTR DS:[4030C0],403000 008D1262 C705 9C304000 03>MOV DWORD PTR DS:[40309C],3 ---------------------------------------------------------------- 008D137A FF25 14204000 JMP DWORD PTR DS:[402014] <--кусок иат 008D1380 FF25 08204000 JMP DWORD PTR DS:[402008] 008D1386 FF25 0C204000 JMP DWORD PTR DS:[40200C] 008D138C FF25 10204000 JMP DWORD PTR DS:[402010] Получается что и в распакованном коде надо править адреса. Ты на это больше времени потратишь, чем на ломание крякми. Вообщем у меня на одной из систем под ХР тоже кряк не запустился, аутпост занимает заветный адрес 00 40 00 00 своей wl_hook.dll. Грузи кряк в олю, смотри в карту памяти (альт+М), кто занял адрес. Дальше по обстоятельствам удалять/закрывать прогу мешающую тебе ломать кряк. ![]() |
![]() |
eXeL@B —› Вопросы новичков —› win2000, crackme и VirtualAlloc |