+-txt-----------------------------------------------------------+ | Anti-SoftICE Seek'n'Destroy | +---------------------------------------------------Zenek-Jajko-+ перевод NightCat//Team-53 Этот текст предназначен для начинающих крэкеров/реверсеров и призван объяснить, как быстро и правильно локализовать и деактивировать используемый программой anti-SoftICE код. Во-первых убедитесь, что файл не запакован. Если запакован, то распакуйте его. Не можете сами - используйте автоматические распаковщики. Итак, у вас есть распакованый и работающий экзешник. Вам понадобится FrogsICE. Это программа для сокрытия СофтАйса от других программ, которые хотят его найти. :) Скачать его можно на тех же protools. Убедимся, что СофтАйс деактивирован. Для Win9x - удалите соответсвующие строки из autoexec.bat и перезагрузитесь. Запускаем FrogsICE и выбираем все опции кроме этих: - BlueScreenOfDeath - Pop-up SoftICE Затем актиируем FrogsICE (кнопка "Enable FrogsICE"). Теперь запустим и закроем нашу программу с anti-SoftICE кодом. Снова открываем FrogsICE и деактивируем его ("Disable FrogsICE"). Теперь нам нужно посмотреть лог ("View Log"), который создал FrogsICE во время своей работы. Одним из самых интерсных для нас моментов является адрес в памяти, под которым можно найти тот анти-SI код, который использует наш программа. Для примера (Iolo System Mechanic 4): ======= "=> Unpacked ** SOFTICE DETECTION ** code 0B, at cs:0067BF1F Attempting to load: SICE (string ref at cs:0067BF30)" ======= Видно, что адрес кода 067BF1Fh, а код, который там находится: ======= "Code 0B ======= This method is most known as 'MeltICE' ... It tries to open SoftICE drivers handles (SICE, SIWVID for Win9x, NTICE for WinNT) with the CreateFileA API. ..." ======= Это описание находится в файле "Code.txt" в каталоге FrogsICE. В этом файле описания многих anti-SI приёмов, которые определяет FrogsICE. Итак, из лога мы узнали где в программе находятся байты отвечающие за anti-SI. Теперь нам уже ничто не мешает кое-что поменять в файле, а точнее в этом самом коде. План: Открывем экзешник в Hiew -> Decode (F4) -> Goto F5 и вписываем наш адрес из лога -> модифицируем код, чтобы он нам не мешал. Для примера (распакованый exe Iolo System Mechanic 4): .0067BF00: 53 push ebx .0067BF01: 33DB xor ebx,ebx .0067BF03: 6A00 push 000 .0067BF05: 6880000000 push 000000080 .0067BF0A: 6A03 push 003 .0067BF0C: 6A00 push 000 .0067BF0E: 6A03 push 003 .0067BF10: 68000000C0 push 0C0000000 .0067BF15: 6830BF6700 push 00067BF30 .0067BF1A: E845D2D8FF call .000409164 -------- (1) > .0067BF1F: 83F8FF cmp eax,-001 .0067BF22: 7408 je .00067BF2C -------- (2) .0067BF24: 50 push eax .0067BF25: E80AD2D8FF call .000409134 -------- (3) .0067BF2A: B301 mov bl,001 .0067BF2C: 8BC3 mov eax,ebx .0067BF2E: 5B pop ebx .0067BF2F: C3 retn Как нам стало известно из лога FrogsICE, мы имеем дело с MeltICE. А из кода можно сделать вывод, что call .000409164 это API CreateFileA с параметром lpFileName = "SICE". В строке .0067BF1F происходит сравнение возвращаемого значения с -1 (INVALID_HANDLE_VALUE equ -1), программа узнаёт или выполнение API закончилось фиаско, или нет. Если нет, то это значит, что SI активен. Джамп на .0067BF2C выполняется только если SI неактивен. .0067BF24: 50 push eax .0067BF25: E80AD2D8FF call .000409134 -------- (3) .0067BF2A: B301 mov bl,001 Этот код закрывает файл и выставляет в BL единицу. Проследим, что там дальше происходит в регистром EBX в этой процедуре: .0067BF00: 53 push ebx ; Запоминаем EBX .0067BF01: 33DB xor ebx,ebx ; EBX = 0 .0067BF2A: B301 mov bl,001 ; EBX = 1 .0067BF2C: 8BC3 mov eax,ebx ; EAX = EBX .0067BF2E: 5B pop ebx Нам нужно так модифицировать эту процедуру(а точнее функцию), чтобы она возвращала в EAX 0. Одной из возможных может быть такая модификация: .0067BF00: 33C0 xor eax,eax .0067BF02: C3 retn ... ... ... Этот код обнуляет EAX и выходит из процедуры. У Iolo System Mechanic 4 есть еще одна процедура anti-SI, но пусть это будет вашим домашним заданием. ;) Вот и конец этого txt, надеюсь, что вы чему-нибудь научились. Гритcов не будет. :) -- Zenek Jajko -- Перевод by NightCat // Team-53 liquid.heaven{at}gmail.com --