- UID
- 13801
注册时间2006-5-22
阅读权限40
最后登录1970-1-1
独步武林
该用户从未签到
|
【文章标题】: KeyGenMe6破文
【文章作者】: caterpilla(惊涛)
【软件名称】: KeyGenMe6
【下载地址】: https://www.chinapyg.com/viewthr ... &extra=page%3D1
【编写语言】: Delphi
【使用工具】: OD,IDA
【操作平台】: WINXP SP2
【软件介绍】: DEDE无法反编译,有反跟踪
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
猫兄提供的这个CRACKME,用PEID查为DELPHI所编,但用DEDE无法反编译,不知用了什么方法,呵呵。。。。。。
一、去反跟踪
用OD载入后,发现一运行就退出,感觉有反跟踪存在。。。。。。。。
用CTRL+N查找程序用到的标签,发现有这样一些调用:
名称位于 Keygenme, 条目 11
地址=000171C0
区段=.idata
类型=输入 (已知)
名称=user32.FindWindowA
名称位于 Keygenme, 条目 32
地址=000171D8
区段=.idata
类型=输入 (已知)
名称=kernel32.IsDebuggerPresent
名称位于 Keygenme, 条目 43
地址=0001716C
区段=.idata
类型=输入 (已知)
名称=kernel32.OutputDebugStringA
其中IsDebuggerPresent和OutputDebugStringA都是用来干扰调试器和发现调试器的,而FINDWINDOWA也常用来发现调试器所在的窗口,
由此分析可知这个程序的反跟踪机制有这些部分。
应对之法:
对于IsDebuggerPresent调用可以用OD中的PLUG-IN来完成,只需调用IsDebuggerPresent这个PLUG-IN就可以把调试器隐藏起来,从而达到
欺骗程序的目的。而对于FINDWINDOWA调用,则可以通过修改查找参数来完成。
二、具体操作
用OD载入程序后,首先运行PLUG-IN:IsDebuggerPresent,选择其中的隐藏功能。然后对FINDWINDOWA的每个参考下断点。F9运行之。。。
程序在FINDWINDOWA处停下:
00013DEC |. 50 push eax ; |Class
00013DED |. E8 BAFAFFFF call <jmp.&user32.FindWindowA> ; \FindWindowA
00013DF2 |. 85C0 test eax, eax
00013DF4 |. 74 06 je short 00013DFC
00013DF6 |. E8 7DF0FFFF call 00012E78
下面还有一个FINDWINDOW调用。。。。。。。
在这里观察对FINDWINDOW传入的参数,发现这样两个地址,[150E0],[150E4],跟随地址在数据窗口中可看到下面的内容:
00013C48 4F 4C 4C 59 44 42 47 00 FF FF FF FF 0A 00 00 00 OLLYDBG. |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?加入我们
x
|