前几天看到有人在求助中说脱壳后载入调试时出现问题,于是自己也尝试了一下,并未发现有所谓的问题。。。 自己本身还是临时会员,拿不出什么料来转正,现将这次经过写出来让大家点评点评。。。鉴于自己水平有限,不敢在各位大牛面前卖弄,这篇就写给像我一样的菜鸟学习交流一下吧,本人菜鸟,还望各位大牛们赐教。。。 废话不多说,下面进入正文··· 第一步:用PEiD检测壳··· UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo 第二步:脱壳 1、 00673C50 > $ 60 PUSHAD 00673C51 . BE 00C05100 MOV ESI,优易ip代.0051C000 00673C56 . 8DBE 0050EEFF LEA EDI,DWORD PTR DS:[ESI+FFEE5000] 00673C5C . 57 PUSH EDI 00673C5D . 83CD FF OR EBP,FFFFFFFF 00673C60 . EB 10 JMP SHORT 优易ip代.00673C72 载入OD后看到 PUSHAD ,既然有入栈,肯定就有出栈···待到出栈之时就是壳恢复了真正的原程序··· 0012FF6C 00000000 0012FF70 00000000 0012FF74 0012FF94 0012FF78 0012FF8C 0012FF7C 7FFD3000 0012FF80 00673C50 优易ip代.<模块入口点> 0012FF84 00000000 0012FF88 768CED5A kernel32.BaseThreadInitThunk 第一次压栈后的栈内容~~~接下来就是下断点 2、输入命令 hw 12FF6C 按 F9 接下来就是出口附近了是不?神奇吧~~ 3、 等跳转后再用OD脱壳就是了~~~~~~ 用PEiD检测Microsoft Visual C++ 6.0第三步:破解··· 1、 点击 正版认证 结果发现要购买序列号,而且还是网上购买,最杯具的还是通过QQ看来这不是普通的用户名&注册码的玩意了,然后看了下有什么限制。。。找了好久,结果发现就是在程序运行5分钟后会弹出一个框框提示···你懂的。。。 既然不能通过序列号拿到正版,至少可以把这300秒的限制给去除吧。。。Come on~~~ 2、 程序要通过检测时间,必定有个计时器,而大部分的程序都是调用SetTimer来实现~~~试了一个,果真行了··· 3、 a、用OD载入,在SetTimer设置断点···按F9运行··· b、本想用Alt+F9直接跳回程序领空,结果发现跳回后不是调用SetTimer的地方··· c、执行a d、既然b这样做不行,就一步一步慢慢来嘛 按F8,看出来的是在哪个领空,如果不是程序领空就按F9,又来到SetTimer,按F8··· 循环上一行的步骤,直到回到程序的领空。断点不要取消哦,不然程序一发而不可收拾了。。。从SetTimer来来回回几次后终于回到我们可爱的程序的领空啦··· 看注释那是不有 USER32.SetTimer 有就对了··· e、 0048E750 6A 00 PUSH 0 0048E752 68 C8000000 PUSH 0C8 0048E757 6A 01 PUSH 1 0048E759 50 PUSH EAX 0048E75A FF15 ECE54E00 CALL DWORD PTR DS:[<&USER32.SetTimer>] ; USER32.SetTimer 0048E760 8BC7 MOV EAX,EDI我们往上看有四个 PUSH 。这些就是调用SetTimer所需要的东东,我们所需要做的就是不让这程序产生 SetTimer 这样的事件,这样程序的计时功能就被我们搞定了,嘿嘿··· 具体做法就是将 0048E750 6A 00 PUSH 0 这个改为 JMP 0048E760 f、OK,保存~~~~ g、接下来就是检验成功与否,很明显这样理论上是没什么问题的。。。。打开程序运行,嘀嗒嘀嗒,5分钟过去了,竟然又弹出了这东东。。。。纳尼,再来一遍a~f 的步骤,再来一遍后就再也没有提示说5分钟关闭的框框了··· 原来程序有两个地方调用SetTimer的地方,不过现在还是未注册的版本,功能基本上可以用,不过现在是没有提示关闭程序了。。。鉴于我的是校园网,调试起来有点不应手。。。 水平有限,欢迎点评~~~ ps:附件rar最大只能1000K,所以就只好加个.pdf了,下载后把.pdf去掉就行了···
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课