发表于 2015-9-25 23:25

申请会员ID:少年梦【冒充他人作品申请】

1、申请ID:少年梦2、个人邮箱:1520765870@qq.com
3、原创技术文章:自创脱壳教程和脱ASPack 2.12壳


壳的概念:
在一些计算机软件里加入一段专门负责保护软件不被非法修改或反编译的程序。它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。大家就把这样的程序称为“壳”。

壳的分类:
1.   压缩壳
将软件体积减小。
2.   密码壳
在正常的软件中插入自己的代码,使得打开软件后需要输入密码才能运行。
3.   保护壳
一般我们称这类壳为猛壳,因为比较难对付,加壳后的程序一般体积会变大,也有部分壳可以起压缩作用。

了解了初步的知识后我们就来具体练习一下破解技术吧。

脱壳任务:
1.   UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo
2.   JDPack 1.x / JDProtect 0.9 -> TLZJ18 Software

破解任务:
test for upx.exe
test for JDPack.exe
为了方便我自己写的,很容易就被破解的,今天主要是练习脱壳嘛~

拿出PEiD对test for upx.exe进行扫描,很清楚的就发现软件用UPX加了壳(其实是我自己加的,嘿嘿~~)

对于UPX这个壳网络上有很多脱壳软件,今天我们使用Quick Unpack 4.0 来脱掉它,打开软件选择test for upx.exe,然后点下面的“获取”按扭。


现在我们就可以点脱壳了,我们按照默认的文件名保存为unpacked.exe。
现在我们已经将软件的壳给脱掉,可是软件是不好运行的。没关系,我们现在使用软件将它的输入表修复一下。


打开LordPE,点击Rebuild PE后选择我们刚才脱过壳的unpackde.exe,软件就直接将输入表修复好了,双击unpackde.exe后程序正常运行。




现在我们使用W32dsm.exe打开软件,然后打开串式数据参考,我们就可以看到软件中的注册提示了。

双击注册成功后我们来到如下地方:


Copy code
:00402E1F E8F6020000       call 0040311A
:00402E24 50         push eax
:00402E25 E886030000       call 004031B0
:00402E2A 83C408         add esp, 00000008
:00402E2D 85C0         test eax, eax //比较注册码
:00402E2F 7416         je 00402E47

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00402DB8(U)
|
:00402E31 6A40         push 00000040

* Possible StringData Ref from Data Obj ->"失败" //提示注册失败
            |
:00402E33 6880444000       push 00404480

* Possible StringData Ref from Data Obj ->"注册失败"
            |
:00402E38 6874444000       push 00404474
:00402E3D 8B4DF0         mov ecx, dword ptr
:00402E40 E8E1020000       call 00403126
:00402E45 EB14         jmp 00402E5B

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00402E2F(C)         //很明显注册成功的提示是从00402E2F地址跳过来的
|
:00402E47 6A40         push 00000040

* Possible StringData Ref from Data Obj ->"恭喜!" //提示注册成功
            |
:00402E49 686C444000       push 0040446C

* Possible StringData Ref from Data Obj ->"注册成功"
            |
:00402E4E 6860444000       push 00404460
:00402E53 8B4DF0         mov ecx, dword ptr
:00402E56 E8CB020000       call 00403126




到这里就不要我说了吧,还不快使用UltraEdit将00402E2F的74改成75。在这次脱壳中我们都是使用的工具,简单、方便、快捷。可是有很多壳是没有现成的脱壳工具的,所以需要手工来脱壳,下面我们就来学习一下手工脱壳。

1.   寻找OEP
2.   DUMP文件3.   修复输入表

我们用PeiD查到我们现在要脱的壳是铁甲。

网络上还没出现铁甲这个壳的脱壳机,所以我们只有手工来搞了,拿出我们菜鸟喜欢用的OllyDbg加载程序,忽略所有的异常。程序停留在0040A000处。



现在我们就按F8来调试,当程序运行到0040A04F的时候0040A058处就会改变成pushfd,我们直接单击此处,按F4   ,这个时候程序已经进行了第一次代码解密,我们继续用F8来向下走,一直来到第二个循环0040A0B1处。


这里是软件的第二次代码解密的地方,我们和上面一样,单击popad处按下F4,让程序直接解密,这个时候程序已经解密好了,现在我们就是要找OEP了,我们按下CTRL+F,调出查找命令对话框,将整个段块前面的钩去掉,输入popad来查找。经过6次的查找我们来到了如下地方


单击retn处,直接按F4来到这里,这个时候会弹出一个说JDPack没注册的对话框,不管它,直接点确定就可以了,再按一下F8,来到004031c0处。哈哈~~我们已经很接近成功了。现在程序在内存中已经完全解密好了。


现在我们就使用Ollydbg的DUMP插件来将软件DUMP出来



我们现在只要点“脱壳之”的按扭就可以了。我将DUMP出来的软件保存为121.exe,我们单击他可以直接运行,其实到这里我们就可以结束了,可是我们3步中还有修复输入表却没做,虽然我们这个软件不需要修复就可以运行,但很多情况下是需要修复的,所以我在这里就继续的介绍一下修复的方法。

我们打开ImportREC.exe 在第一项中选取我们正用Ollydbg调试的test for JDPack.exe,现在我们来计算一下软件的OEP。

OEP=004031c0-00400000

所以我们就在OEP处填写000031C0 然后单击“IAT自动搜索”,再单击“获得输入信息”后我们会发现所有的函数都是有效的。


最后我们单击“修理抓取文件”按扭,选择我们刚才DUMP出来的121.exe就可以修复了。

下面是脱ASPack 2.12壳教程


我说呢:ASPack 2.12是比较简单的东西,可以说,很大程度上,它可以对程序的大小进行压缩,方便发布。第一个我们打开PEID查壳

第二个就是动态调试工具OD(ollydbg),这个工具同样可以自己再网络上找到下载。我以一个ascii转换的小工具为例子。因为刚刚好是用aspack加的壳。所以我就拿它开刀。http://fj.ikafan.com/pic/72/33/723330f24bf185317720cb12e71fca0d.png
上图是软件的界面,这个时候的软件大小是846 KB (866,816 字节)是不是感觉很小呢?我们用PEID进行查看壳。http://fj.ikafan.com/pic/01/96/0196903ddf878e4196b4a6b54d7841c6.png
我们可以清晰的看到是aspack的壳吧。而且还有版本,我们使用OD打开它。对于是否继续分析,我们点否就可以。然后我们就可以看到下面类似的代码。http://fj.ikafan.com/pic/68/cc/68ccf08c6f62dc1eca4f81ad6b64ee8b_thumb.png
我们可以看到入口是停止了pushad,也就是寄存器压统一入栈操作。那么我们就可以轻松的使用所谓的ESP定律来搞定了。按一下F7,到下一行,看寄存器窗口。里面的ESP的值 。http://fj.ikafan.com/pic/4b/b2/4bb2f596aef3fdda8e5029cdf262fce0.png
看到ESP寄存器是红色的了。我们copy对应的0012FFA4,到我们的命令行窗口下硬件断点。硬件断点就是hr ,然后加上我们刚刚copy的地址,然后回车,这个时候我们可以再菜单的。调试》硬件断点 中看到我们设置的硬件断点了。http://fj.ikafan.com/pic/92/2e/922e1a11fa3f1621896aa90c1bfb2aad_thumb.png
设置好断点后,我们直接按F9运行程序,它会在断点处停下来。大致的位置看截图
http://fj.ikafan.com/pic/d0/82/d08203ff4826e59164e948435d9df2b1.png
好,我们可以高兴的看到,发生了jnz,就是不等于0就跳转,而且是红色的方向向下跳转。红色代表跳转已经实现,方向是向下,就是到了地址为006AF3BA的地方,然后这个地 方push压入一个地址,通过retn方式返回。我们这个时候删除硬件断点。方法是调试》硬件断点 选择删除我们刚刚hr命令添加的硬件断点。然后我们按F7单步就到了push 这个压栈的地方。然后我们在 按两次F7单步执行。就到了http://fj.ikafan.com/pic/8a/2f/8a2fc0a0424ac2edd174be0d46b48ed5_thumb.png
看到这个地方,如果你调试比较多的话,一定明白这个就是入口了。首先你看地址,跳转跨度很大。说明壳的代码前面执行完成,现在跳转来执行真正的代码了。而且这个代码 是典型的vc的编译出现的汇编代码。在地址00422240的地方,我们选择右键,选择用ollydump脱壳调试进程。弹出如下的界面http://fj.ikafan.com/pic/54/ea/54ea813f01e30f6670554eb8368b89d2.png
方式随便选择。我默认,我们直接点击脱壳按钮,然后取一个脱壳完成的exe名称就可以了。然后我们来查看是否脱壳成功,使用我们的peid进行查壳。具体效果如下图所示
http://fj.ikafan.com/pic/38/b7/38b7f4c3c2f131eed58a990a81befb77.png
我们可以看到真正的语言了。和编译器的版本。然后我们再运行我们脱壳后的程序,如果正在运行就说明一切OK了。当然如果无法运行我们就需要使用修复工具对脱壳后的程序就行修复操作,常用的修复工具是Import Fix 1.6。大家自己可以再网络上下载到。修复我就不说啦,因为这个脱壳后正常运行了。就没有必要修复了。我们再看一下程序的大小3.17 MB (3,331,584 字节)看到了吧,这个壳的压缩能力惊人 呀呵呵。所以总的来说这个壳可以定性为压缩壳而非加密壳。因为程序大小变小是它主要目的吧。总结:希望我能加入吾爱破解家族,为你们出一份了,同时我也会将吾爱破解http://www.52pojie.cn/ 这个网站宣传到qq,微信让更多人来学习破解!

Hmily 发表于 2015-9-27 10:55

请问哪个内容是你创的?

乖乖 发表于 2015-9-27 11:15

Hmily 发表于 2015-9-27 10:55
请问哪个内容是你创的?

看了一下,觉得不是

发表于 2015-9-28 12:05

第二个和第一个

Sound 发表于 2015-9-29 01:32

http://forum.eviloctal.com/thread-24949-1-1.html

樓主這是你?

发表于 2015-9-29 12:24

是的 没错
页: [1]
查看完整版本: 申请会员ID:少年梦【冒充他人作品申请】