飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3610|回复: 0

Delphi程序增加破解难度-初级-[2]

[复制链接]

该用户从未签到

发表于 2005-12-15 02:22:10 | 显示全部楼层 |阅读模式
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,引用请注明出处
PYG19周年生日快乐!
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表