再次分析“高效e人”
这篇是学习mm475老大https://www.52hb.com/thread-4331-1-1.html之后自己总结了一下,分享一下心得(感谢mm475):1、不管是用m大的内存法还是用字符串法还是用暂停法,总之走到关键跳处:Server (IO) Erro
服务器貌似出问题了,要不就是我本地联通抽了。最近北方风大。我复制吧:
(图片看m大帖子里的就行)
00DC33F1 .E8 CA7DC6FF call 00A2B1C0
00DC33F6 .84C0 test al,al
00DC33F8 75 3E jnz short 00DC3438
00DC33FA .A0 7C34DC00 mov al,byte ptr ds:
00DC33FF .50 push eax
00DC3400 .B2 01 mov dl,0x1
00DC3402 .A1 A8B3A100 mov eax,dword ptr ds:
如果jnz跳不过,这个就是未注册版本。
如果jnz直接jmp,那个只是当前弹窗可以过注册。肯定不是完全注册。
(已经发现的至少启动的注册窗和帮助里的注册窗就是不同的地址)
2、所以目光落在了al上,而al上面的call就很可能就是给al赋值的。(或者根据关键跳上面的call一般为关键call来判定)
(m大在帖子中讲了进去这个call,在进去一个call,就完全是注册算法)
右键此call,查找参考----调用目的地址:
参考位于 Efficien:CODE 于 00A2B1C0
地址 反汇编 注释
00A2B60F call Efficien.00A2B1C0
00A2B641 call Efficien.00A2B1C0
00A2B6D3 call Efficien.00A2B1C0
00A2B705 call Efficien.00A2B1C0
00A2B892 call Efficien.00A2B1C0
00A2C735 call Efficien.00A2B1C0
00A2C764 call Efficien.00A2B1C0
00C30F49 call Efficien.00A2B1C0
00DAFC44 call Efficien.00A2B1C0
00DC33F1 call Efficien.00A2B1C0 (初始 CPU 选择)
我们看到这一堆,应该就是包括整个程序所有需要验证注册码的call了。
我们进去这个call,也能证实:
esp=0012F310
本地调用来自 00A2B60F, 00A2B641, 00A2B6D3, 00A2B705, 00A2B892, 00A2C735, 00A2C764, 00C30F49, 00DAFC44, 00DC33F1
3、m大的方法是进去算法那个call里,在最后通过修改ebx堆栈值来进行爆破。
我想,既然00A2B1C0是负责所有需要注册的,那我们进去这个call,直接给retn了得了(而不进去那个算法call)。
经验证,完全爆破,效果同修改al赋值。
4、但是,关于里还是未注册版本。其实直接在帮助---重新输入注册码,里面,重新注册就ok,因为爆破,所以不管怎样都是ok。
有因为本程序有ini配置文件进行配置,所以再次启动后,关于里同样是注册。
5、我知道,这个主题说的很多东西与m大是重复的,其实我是想说明以下几点:
1)通常爆破不止要修改跳转,而要修改赋值:(发现m大很在意这点,他的教程一般都是修改赋值)
关键跳上面的比较(通过查找参考--地址常量,来寻找相关mov或其他赋值),或者关键call里的赋值。
2)通过查看关键call在不同地方的调用,可以了解软件在注册保护机制方面的东西,可以在编程中借用。
3)有时retn能简单明了的爆破,而不用去分析堆栈调用的值。
你真牛。。
感谢分享经验总结{:7_231:}
北方风大,南方也风大,,,,谢谢分享教程。
学习的过程确实应该学会总结,感谢
感谢楼主总结,学习了
[快捷回复]-软件反汇编逆向分析,软件安全必不可少! [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
页:
[1]
2