KeyGenMe6(有反跟踪,抗DEDE反编译)破文,附算法注册机(更新版)
【文章标题】: KeyGenMe6破文【文章作者】: caterpilla(惊涛)
【软件名称】: KeyGenMe6
【下载地址】: https://www.chinapyg.com/viewthread.php?tid=6128&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传入的参数,发现这样两个地址,,,跟随地址在数据窗口中可看到下面的内容:
00013C484F 4C 4C 59 44 42 47 00 FF FF FF FF 0A 00 00 00OLLYDBG. 我要破文呀,不要注册机
要注册机也可以,不过是要注册机的找码
你这样发帖我只能说你是高手,但我菜鸟还是什么都没学到
:L:L:L
[ 本帖最后由 浮云思音 于 2006-7-17 10:46 编辑 ] 原帖由 浮云思音 于 2006-7-17 10:44 发表
我要破文呀,不要注册机
要注册机也可以,不过是要注册机的找码
你这样发帖我只能说你是高手,但我菜鸟还是什么都没学到
:L:L:L
你调试他的注册机,岂不更妙?;P 此帖技术性含量高,推荐加精!!! 学习一下。。。。。。。。。。。。顶 反跟踪技术讲解的很详细,但是算法分析还差一点.(只是讲解了注册码是如何形成的).
学习反跟踪技术,算法分析正在研究中== 原帖由 hbqjxhw 于 2006-7-17 18:01 发表
反跟踪技术讲解的很详细,但是算法分析还差一点.(只是讲解了注册码是如何形成的).
学习反跟踪技术,算法分析正在研究中==
代码计算过于繁琐,呵呵,所以没写,关键部分都在上面列着呢 跟了一下的确是很繁琐,但还是想把它研究一下。 个人感觉:里面的汇编语言计算部分中,数据类型总在变化,有四字,双字,字节的类型,用高级语言描述时需要注意。程序中嵌入汇编写起来会方便些。
[ 本帖最后由 caterpilla 于 2006-7-17 21:37 编辑 ] 都是高手偶不能落后了~~~