本帖最后由 feizixiao 于 2014-9-30 23:02 编辑
首先来分析下外挂是否加壳
从区段名可以看出:加壳了。但到底是什么壳不清楚。
从连接信息可以看出:编译器不是易语言 就是VC6.0
现在载入OD
第一个指令就是 pushad 嘿嘿。 ESP定律脱壳试试。
esp定律之后,会直接到oep。非常简单吧。
从上图很容易看出,这货就是易语言写的。
现在保存下脱壳的文件。之后运行试试。
软件正常运行。脱壳是正确的。
-----------------------------------------------------------------------------------
现在来说说软件界面。
软件有:收费客户,和试用客户。
我们使用试用客户。软件可以试用2分钟。2分钟之后失效。当再次打开软件的时候,又可以试用2分钟。
咱们这次来实现无限试用。
首先来分析下。如果咱们自己是软件的作者。会怎么实现,2分钟失效这个功能。
1:创建线程,线程不停的判断。是否已经过了2分钟。
2:创建时钟,时钟每隔一定的时间,来检测是否过了2分钟。
那咱们就找到破解的思路了。
首先把外挂拖到OD,我们选择了试用,看会不会创建线程。
我选中的那个线程,并不是点击启动创建的。
也就是说,点击启动之后,并没有创建线程,只是加载了一些DLL文件。
那是不是创建时钟来检测呢?
我们上工具看看。(E-Debug Events V1.5.exe 工具会发的,下载就行。)
当然,你也可以用其他的工具来查看。
中断地址: 0042DDDD
Start......
StartAddress: 00476ED5
事件发生: 004010CB
事件发生: 004014D9
事件发生: 0040151D
事件发生: 00405A62
事件发生: 00404269
事件发生: 0040B8E7
事件发生: 00405900
事件发生: 0040985D
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 0040B8E7
事件发生: 00405900
事件发生: 0040B986
事件发生: 00405900
事件发生: 0040908D
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00409219
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 0040B8E7
事件发生: 00405900
事件发生: 00405900
事件发生: 0040908D
事件发生: 00405900
事件发生: 00405900
事件发生: 00405900
事件发生: 00409219
程序退出
......End
咱们一个一个找。这里我就不贴那么多的图了。
直接说关键:地址是0040B8E7
贴上0040B8E7地址的代码,来说说,为什么就是它。
[Asm] 纯文本查看 复制代码 0040B8E7 /. 55 push ebp
0040B8E8 |. 8BEC mov ebp,esp
0040B8EA |. 81EC 14000000 sub esp,0x14
0040B8F0 |. C745 FC 00000>mov [local.1],0x0
0040B8F7 |. FF05 941E7400 inc dword ptr ds:[0x741E94]
0040B8FD |. 833D 941E7400>cmp dword ptr ds:[0x741E94],0x78
0040B904 |. 0F85 78000000 jnz 脱壳.0040B982
0040B90A |. 6A 01 push 0x1
0040B90C |. B8 7FF95C00 mov eax,脱壳.005CF97F
0040B911 |. 8945 F8 mov [local.2],eax
0040B914 |. 8D45 F8 lea eax,[local.2]
0040B917 |. 50 push eax
0040B918 |. C745 F4 00000>mov [local.3],0x0
0040B91F |. 6A 00 push 0x0
0040B921 |. 8D45 F4 lea eax,[local.3]
0040B924 |. 50 push eax
0040B925 |. C745 F0 00000>mov [local.4],0x0
0040B92C |. 6A 00 push 0x0
0040B92E |. 8D45 F0 lea eax,[local.4]
0040B931 |. 50 push eax
0040B932 |. E8 828BFFFF call 脱壳.004044B9
0040B937 |. 8945 EC mov [local.5],eax
0040B93A |. 8B5D F0 mov ebx,[local.4]
0040B93D |. 85DB test ebx,ebx
0040B93F |. 74 09 je X脱壳.0040B94A
0040B941 |. 53 push ebx
0040B942 |. E8 F03D0000 call 脱壳.0040F737
0040B947 |. 83C4 04 add esp,0x4
0040B94A |> 8B5D F4 mov ebx,[local.3]
0040B94D |. 85DB test ebx,ebx
0040B94F |. 74 09 je X脱壳.0040B95A
0040B951 |. 53 push ebx
0040B952 |. E8 E03D0000 call 脱壳.0040F737
0040B957 |. 83C4 04 add esp,0x4
0040B95A |> 8B5D F8 mov ebx,[local.2]
0040B95D |. 85DB test ebx,ebx
0040B95F |. 74 09 je X脱壳.0040B96A
0040B961 |. 53 push ebx
0040B962 |. E8 D03D0000 call 脱壳.0040F737
0040B967 |. 83C4 04 add esp,0x4
0040B96A |> 8B45 EC mov eax,[local.5]
0040B96D |. 8945 FC mov [local.1],eax
0040B970 |. FF75 FC push [local.1]
0040B973 |. E8 22F1FFFF call 脱壳.0040AA9A
0040B978 |. 6A 00 push 0x0
0040B97A |. E8 E83D0000 call 脱壳.0040F767
0040B97F |. 83C4 04 add esp,0x4
0040B982 |> 8BE5 mov esp,ebp
0040B984 |. 5D pop ebp
0040B985 \. C3 retn
我们先来看这个跳转:0040B904 |. /0F85 78000000 jnz 脱壳.0040B982
这个跳转,直接是从头跳到尾。非常可疑。会不会是这样的意思呢?:如果时间到了,我就让外挂失效,否则就什么都不做。
再来分析,跳转的条件。
0040B8F7 |. FF05 941E7400 inc dword ptr ds:[0x741E94]
0040B8FD |. 833D 941E7400>cmp dword ptr ds:[0x741E94],0x78
第一句命令:inc的意思是加1,那很明显,这句话的意思是:这个地址的变量++ 。
第二句命令:cmp的意思是比较,上面那个自加的变量,和0x78比较。十六进制的0x78=十进制的120 。2分钟=120秒。
那么这三句指令 如果用高级语言来描述的话,就是这样的。
void isDisabled(){
int time=0;
time++;
if(time>120){
//检测到到期,执行失效命令。
}
}
分析完毕,祝大家国庆快乐。
下载地址里有2个版本。一个xp 一个win7 ,win7版可使用同样的方法破解。
修复下载链接
http://url.cn/KZddt2
|