Jian丶ylt 发表于 2015-11-21 23:10

手脱ASProtect v1.23 RC1(有Stolen Code)之以壳解壳

声明:

       1.只为纪录自己成长历程,高手勿喷
       2.您的热心是新手持续发帖的动力


说明:

       至此ximo大神教程视频里的壳算是都脱了一遍了,附上ximo大神教程地址:http://pan.baidu.com/s/151PWq
       附上我的相关配套文字解说教程勿喷,大家自己看索引,不是按照正常顺序排列的,那是因为我做了一下整合,把相同的壳不同版本都整合到一块去了,所以大家在对照的视频教程学习的过程中请自行查找。另外文字教程中我添加了一些自己的思想,如果有错误的地方也请指出。
       --1、手脱UPX壳:http://www.52pojie.cn/thread-423992-1-1.html
       --2、手脱ASPACK壳:http://www.52pojie.cn/thread-433042-1-1.html
                                       http://www.52pojie.cn/thread-433446-1-1.html
                                       http://www.52pojie.cn/thread-433460-1-1.html
       --3、手脱Nspack壳:http://www.52pojie.cn/thread-433456-1-1.html
                                        http://www.52pojie.cn/thread-433070-1-1.html
                                        http://www.52pojie.cn/thread-433064-1-1.html
       --4、手脱FSG壳:http://www.52pojie.cn/thread-433438-1-1.html
                                 http://www.52pojie.cn/thread-420761-1-1.html
       --5、手脱PECompact2.X壳:http://www.52pojie.cn/thread-433103-1-1.html
       --6、手脱EZIP壳:http://www.52pojie.cn/thread-433124-1-1.html
       --7、手脱TELock0.98b1壳:http://www.52pojie.cn/thread-423000-1-1.html
       --8、手脱EXE32PACK壳:http://www.52pojie.cn/thread-433314-1-1.html
       --9、脱WinUpack加的壳:http://www.52pojie.cn/thread-433341-1-1.html
       --10、脱壳基本的思路及小结:http://www.52pojie.cn/thread-433417-1-1.html
                                                       http://www.52pojie.cn/thread-433432-1-1.html
                                                       http://www.52pojie.cn/thread-433397-1-1.html
                                                       http://www.52pojie.cn/thread-433388-1-1.html
       --11、附加数据的处理方法:http://www.52pojie.cn/thread-418404-1-1.html
       --12、自校验的去除方法:http://www.52pojie.cn/thread-418731-1-1.html
       --16、脱ACProtect:http://www.52pojie.cn/thread-434572-1-1.html
                                       http://www.52pojie.cn/thread-434064-1-1.html
                                       http://www.52pojie.cn/thread-434022-1-1.html
                                       http://www.52pojie.cn/thread-433988-1-1.html
                                       http://www.52pojie.cn/thread-433466-1-1.html
                                       http://www.52pojie.cn/thread-433462-1-1.html
      --22、手脱ASProtect:http://www.52pojie.cn/thread-436881-1-1.html
                                          http://www.52pojie.cn/thread-436843-1-1.html
                                          http://www.52pojie.cn/thread-436826-1-1.html
                                          还有本帖
       另外我就想谈谈我的一些学习感悟,分享给同是小白的一些人:
       1.不要太过于死板,我每天都会看到论坛里一些新手朋友发求助帖说自己脱壳怎么遇到了和视频教程上不一样的地方怎么怎么的。 其实我也有遇到过,但是每次我遇到同样的情况我不是发求助贴,我会在论坛搜索,百度搜索,寻求和我类似的问题,在这个过程中我学到了很多东西,包括一些大神的经验,如果搜索不到相关信息我会自己尝试去解决,解决过程中我可能会失败很多次,会掉很多坑,但是在解决之后我都有了一点新的感悟,对脱壳也更加深了一点个人见解,我们在看视频的过程中大神们轻描淡写就把一些强壳给脱掉了,换我们呢?或许按照视频的步骤我们也可以把样本脱掉,但是换个程序加同样版本的壳你行吗?让我呵呵一下。当然我也会发求助贴,基本都是搜索和自己解决都无果的情况下,我可能会发个贴来寻求大神帮忙。我个人最看不起的就是遇到问题就马上发帖求助的,明明可以搜索到答案,说句不好听的话,这样你是永远都学不会的,可能目前来说这个问题你解决掉了,但是下次碰到同样的问题以不同的形式出现你就没辙了。那么你的水平也就只能局限于按照教程脱壳来自慰了。可是事实上市面上的很多比较牛的软件或是程序使用的根本就不可能是你能搜索到的视频教程里会有的,那该怎么办呢?这种时候就是需要你灵活应用平时学习的一些知识的时候了。
       2.ximo大神的教程我是第二遍看,第一遍看的时候我跟着教程走,没有写过笔记,当时看完教程的时候我是可以脱掉哪些壳的,可是稍微过了那么几天,我再去脱同版本的壳的时候我发现我又脱不掉了。因为我忘记了当时是怎么操作的,无奈我只能再次去找视频教程。不得不说这是新手的悲哀,也是懒人的悲哀。终于有一天我认识到了笔记费得重要性。于是我写下了上面的哪些帖子。当然是重温一遍ximo大神的教程。在重温的过程中我对一些壳又有了新的看法,也有了自己的思想。很多以前考虑过也搜索过的问题好像一瞬间就懂了。我终于明白了一个词[温故而知新]的重要性了。也许以后有些朋友也会有跟我一样的感受。
            

1.载入PEID

    ASProtect v1.23 RC1

2.载入OD,不勾选内存访问异常,其他异常全部勾选

00401000 >68 01C06D00   push SoWorker.006DC001                   ; //入口点
00401005    E8 01000000   call SoWorker.0040100B
0040100A    C3            retn
0040100B    C3            retn
0040100C    74 23         je short SoWorker.00401031
0040100E    C039 74         sar byte ptr ds:,74
00401011    0FD19CA4 0599E0>psrlw mm3,qword ptr ss:
00401019    AA            stos byte ptr es:

3.最后一次异常法运行到最后一次,应该是第26次,第27次跑飞

00C339EC    3100            xor dword ptr ds:,eax               ; //最后一次异常法落脚点
00C339EE    64:8F05 0000000>pop dword ptr fs:
00C339F5    58            pop eax
00C339F6    833D B07EC300 0>cmp dword ptr ds:,0
00C339FD    74 14         je short 00C33A13
00C339FF    6A 0C         push 0C
00C33A01    B9 B07EC300   mov ecx,0C37EB0
00C33A06    8D45 F8         lea eax,dword ptr ss:
00C33A09    BA 04000000   mov edx,4
00C33A0E    E8 2DD1FFFF   call 00C30B40
00C33A13    FF75 FC         push dword ptr ss:
00C33A16    FF75 F8         push dword ptr ss:
00C33A19    8B45 F4         mov eax,dword ptr ss:
00C33A1C    8338 00         cmp dword ptr ds:,0
00C33A1F    74 02         je short 00C33A23
00C33A21    FF30            push dword ptr ds:
00C33A23    FF75 F0         push dword ptr ss:
00C33A26    FF75 EC         push dword ptr ss:
00C33A29    C3            retn                                     ; //运行到最近的retn
00C33A2A    5F            pop edi

4.先记录假的OEP,运行到最近的retn处(不能使用F4,用F2,SHIFT+F9,F2)后打开内存窗口在00401000处下断然后shift+F9运行一次来到假的OEP

004F27CF    FF15 9CC25200   call dword ptr ds:               ; //假的OEP
004F27D5    33D2            xor edx,edx
004F27D7    8AD4            mov dl,ah
004F27D9    8915 34306900   mov dword ptr ds:,edx
004F27DF    8BC8            mov ecx,eax
004F27E1    81E1 FF000000   and ecx,0FF
004F27E7    890D 30306900   mov dword ptr ds:,ecx
004F27ED    C1E1 08         shl ecx,8
004F27F0    03CA            add ecx,edx
004F27F2    890D 2C306900   mov dword ptr ds:,ecx

5.重新载入程序,运行步骤1-3,让程序落在最近的retn处,此时查看堆栈窗口,在命令行下硬件断点,地址填堆栈窗口第四行(程序名下的第二行)的地址或者是值都可以,上一个教程是使用的值,这个教程使用下地址,下硬件断点"hr 0012ff68",然后shift+F9运行一次

0012FF5C   00C45340
0012FF60   00400000SoWorker.00400000
0012FF64   E3DE7228
0012FF68   0012FFA4
0012FF6C   00C20000

6.落脚点在这个位置,然后删除硬件断点单步跟两步

00C454BB   /EB 44         jmp short 00C45501                     ; //落脚点
00C454BD   |EB 01         jmp short 00C454C0
00C454BF   |9A 51579CFC BF0>call far 00BF:FC9C5751
00C454C6   |0000            add byte ptr ds:,al
00C454C8   |00B9 00000000   add byte ptr ds:,bh
00C454CE   |F3:AA         rep stos byte ptr es:
00C454D0   |9D            popfd
00C454D1   |5F            pop edi
00C454D2   |59            pop ecx

7.单步两步之后程序应该是运行到了注释的地方,按照ximo大神视频中的讲解,这里应该是最佳以壳脱壳的位置。

00C46519    03C3            add eax,ebx
00C4651B    BB A2000000   mov ebx,0A2                              ; //以壳脱壳最佳位置
00C46520    0BDB            or ebx,ebx
00C46522    75 07         jnz short 00C4652B
00C46524    894424 1C       mov dword ptr ss:,eax
00C46528    61            popad



8.到了这里之后,我们就可以使用loadPE先完整转存下来,然后查看程序现在运行到位置的地址,是00C4651B,我们使用loadPE部分转存,区段就选择包含了这个地址的区段。也就是00C40000这个区段,把这个区段给转存下来先,这里需要注意的是不同的PC或者是系统可能显示的地址是不同的,所以不要太过于死板。一定要按照视频教程走,其实你仔细看会发现我的教程里的地址跟ximo大神视频教程里的地址是不一样的。不过这并不影响。

9.完整转存和区域转存都执行完毕之后我们使用loadPE载入完整转存的文件,也就是点按钮,选中完整转存的那个文件;然后点击[区段]按钮,在最后一个区段右键---从磁盘载入---选中我们不分转存的那个区段。载入后我们右键选中我们载入的这个区段,然后点[编辑区段],名称我们可以随意填,虚拟地址选项输入添加区段的起始地址-基质,也就是00C40000-00400000=00840000。填完之后点确定然后保存

10.执行完上面的步骤之后我们使用需要给添加好区段的程序重建PE,使用loadPE即可。这里要说明一下,重建选项只勾选[使PE有效]这一个选项即可,其他选项都不勾选。

11.重建PE完成后我们就可以使用ImportREC进行脱壳了。脱壳地址就填假的OEP地址-基质也就是F27CF,然后进行修复,修复的时候还是使用等级1+插件进行修复。修复完毕之后先不要转存,我们需要把ImportREC上OEP地址改为最佳脱壳位置OEP-基质也就是0084651B后再进行转存。至此我们的以壳脱壳算是搞完了

12.运行查壳

    运行OK,查壳:Unknown

    需要说明的是我个人认为用这种方法壳应该是没有脱掉的。不过这样操作之后我们就可以使用资源编辑器对资源进行编辑修改,这样也就达到了我们的破解目的。所以壳是不是真的脱掉了我们也就不要太在意了。毕竟我们学习脱壳只是为了破解嘛。





sxdcr 发表于 2015-11-22 03:07

抢个沙发,谢谢分享。

tangdragon 发表于 2015-11-22 09:46

果断收藏,留着以后慢慢看。

系统大玩家 发表于 2015-11-24 21:22

谢谢分享。。。。。。。。。。。。。。。

Hslim 发表于 2015-11-27 20:36

先mak,待会来看

乐灿峰 发表于 2017-5-5 13:54

十二年过去,还有人发三人行的东西,他的多高兴啊
页: [1]
查看完整版本: 手脱ASProtect v1.23 RC1(有Stolen Code)之以壳解壳