- UID
- 5199
注册时间2005-12-14
阅读权限10
最后登录1970-1-1
周游历练
该用户从未签到
|
Delphi程序增加破解难度-初级-[2]
隐藏程序的退出点
部分Delphi程序在没有检查到加密狗或者注册号不正确需要退出程序时,选择了使用
Application.Terminate;
来结束程序,这不是一种好的作法,因为很多人在破解的时候都会对
ExitProcess,PostQuitMessage等函数设置断点,只要我们一调用
Application.Terminate;
就很容易被发现退出位置,这个位置和加密点很靠近的话,就非常危险了
因此我们在加密程序时,一般不要调用Application.Terminate;来退出程序
使用以下方法之一,或者结合以下几种方法来退出程序,有助于我们隐藏程序的退出点
一、异常不处理
把
Application.Terminate;
换成
asm
MOV FS:[0],0;
MOV DS:[0],EAX;
end;
异常不处理时,Windows会直接结束掉我们的进程,不容易断下来
二、新线程延时结束
新开一个线程,等待一点点时间后退出程序,好让主程序的EIP的位置运行到加密点只外
procedure TerminateThis;stdcall;
begin
Sleep(100);
ExitProcess(0);
end;
var
Thid : DWORD;
begin
CreateThread(NIL,0,@TerminateThis,NIL,0,Thid);
end;
三、远线程结束本进程
....
我们会在今后的帖子中继续讨论...
蓝色光芒发表于bbs.66h6.com,引用请注明出处 |
|