Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 12 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Memory Patcher для ASProtect

Обсудить статью на форуме

Хорошая подборка видеоуроков, инструментов крэкера, книг и статей - здесь.

Автор: -= ALEX =- <alex-xakep@mail.ru>

Вступление: свою статью я назвал так, потому что мы будем делать memory патч  для прог, запакованных ASProtect. Для этого нам всего лишь потребуются Дельфи и мозги :)) Тренироваться мы будем на проге, сделанной мною, как раз для этих целей, т.к. искать какой-то софт мне уже надоело :) Сразу скажу, что взломать ее вообще не составляет труда, т.к. цель ее назначения - опробывать патч. Итак находим, что чтобы программы при вводе любого серийника, говорила, что все окей, надо по адресу 00441785 не было прыжка на условном переходе 7515, для этого все это дело надо за'nop'ить. Итак приступим...

Прежде всего скажу вам, что писать теорию я не буду, а приведу сразу листинг исходного кода патча:

program memorypatcher;
{$R *.RES}
uses
Windows;

const buf:array[0..1] of byte=($75,$90); // Первый байт - хоть что, второй опкод nop'а
filename='packed.exe'; // Имя файла
appname='ASProtect CrackMe by -= ALEX =-'; // Название проги
var
i:cardinal;
sti:tstartupinfo;
lpPi:tprocessinformation;

begin
// Создаем процесс
if not CreateProcess(nil,filename,nil,nil,false,CREATE_NEW_CONSOLE or
NORMAL_PRIORITY_CLASS,nil,nil,StI,lpPI) then
begin
messageboxa(0,'А где '+filename+' ?',appname+' Loader by -= ALEX =-',MB_ICONQUESTION);
halt;
end
else
while true do
if readprocessmemory(lppi.hProcess,pointer($441785),@buf[0],1,i) // Читаем один байт по адресу 00441785
then
if buf[0]<>$0 then // Проверяем на распакованность, если не 0 - то распаковалась
begin
// Подождем, пока asprotect проверит память, иначе будет писать 'Protection Error 15'
sleep(300);
//остановили процесс
suspendthread(lppi.hThread);
//записали что хотели
writeprocessmemory(lppi.hProcess,pointer($441785),@buf[1],1,i);
writeprocessmemory(lppi.hProcess,pointer($441786),@buf[1],1,i);
//поехали дальше!
resumethread(lppi.hThread);
closehandle(lppi.hprocess);
// Сами закрываемся
halt;
end;
end.

В принципе здесь все должно быть сразу понятно. Создаем процесс, читаем байт по адресу 00441785, если он не 0, значит прога распаковалась, далее подождем, в этом то и фишка !, пока aspr проверит память на целкостность, далее останавливаем процесс, забиваем nop'ами данный адрес и отпускаем прогу на волю :) Сразу скажу, что это может быть самый простой способ побороть asprotect, если на каких либо прогах он не заработает, а он точно может не заработать, напишите в чем я был не прав.



Обсуждение статьи: Memory Patcher для ASProtect >>>


Комментарии к статье: Memory Patcher для ASProtect


Материалы находятся на сайте https://exelab.ru



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS