声明:
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,不勾选内存访问异常,其他异常全部勾选
[Asm] 纯文本查看 复制代码 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:[ecx],74
00401011 0FD19CA4 0599E0>psrlw mm3,qword ptr ss:[esp+CFE09905]
00401019 AA stos byte ptr es:[edi]
3.最后一次异常法运行到最后一次,应该是第26次,第27次跑飞
[Asm] 纯文本查看 复制代码 00C339EC 3100 xor dword ptr ds:[eax],eax ; //最后一次异常法落脚点
00C339EE 64:8F05 0000000>pop dword ptr fs:[0]
00C339F5 58 pop eax
00C339F6 833D B07EC300 0>cmp dword ptr ds:[C37EB0],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:[ebp-8]
00C33A09 BA 04000000 mov edx,4
00C33A0E E8 2DD1FFFF call 00C30B40
00C33A13 FF75 FC push dword ptr ss:[ebp-4]
00C33A16 FF75 F8 push dword ptr ss:[ebp-8]
00C33A19 8B45 F4 mov eax,dword ptr ss:[ebp-C]
00C33A1C 8338 00 cmp dword ptr ds:[eax],0
00C33A1F 74 02 je short 00C33A23
00C33A21 FF30 push dword ptr ds:[eax]
00C33A23 FF75 F0 push dword ptr ss:[ebp-10]
00C33A26 FF75 EC push dword ptr ss:[ebp-14]
00C33A29 C3 retn ; //运行到最近的retn
00C33A2A 5F pop edi
4.先记录假的OEP,运行到最近的retn处(不能使用F4,用F2,SHIFT+F9,F2)后打开内存窗口在00401000处下断然后shift+F9运行一次来到假的OEP
[Asm] 纯文本查看 复制代码 004F27CF FF15 9CC25200 call dword ptr ds:[52C29C] ; //假的OEP
004F27D5 33D2 xor edx,edx
004F27D7 8AD4 mov dl,ah
004F27D9 8915 34306900 mov dword ptr ds:[693034],edx
004F27DF 8BC8 mov ecx,eax
004F27E1 81E1 FF000000 and ecx,0FF
004F27E7 890D 30306900 mov dword ptr ds:[693030],ecx
004F27ED C1E1 08 shl ecx,8
004F27F0 03CA add ecx,edx
004F27F2 890D 2C306900 mov dword ptr ds:[69302C],ecx
5.重新载入程序,运行步骤1-3,让程序落在最近的retn处,此时查看堆栈窗口,在命令行下硬件断点,地址填堆栈窗口第四行(程序名下的第二行)的地址或者是值都可以,上一个教程是使用的值,这个教程使用下地址,下硬件断点"hr 0012ff68",然后shift+F9运行一次
[Asm] 纯文本查看 复制代码 0012FF5C 00C45340
0012FF60 00400000 SoWorker.00400000
0012FF64 E3DE7228
0012FF68 0012FFA4
0012FF6C 00C20000
6.落脚点在这个位置,然后删除硬件断点单步跟两步
[Asm] 纯文本查看 复制代码 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:[eax],al
00C454C8 |00B9 00000000 add byte ptr ds:[ecx],bh
00C454CE |F3:AA rep stos byte ptr es:[edi]
00C454D0 |9D popfd
00C454D1 |5F pop edi
00C454D2 |59 pop ecx
7.单步两步之后程序应该是运行到了注释的地方,按照ximo大神视频中的讲解,这里应该是最佳以壳脱壳的位置。
[Asm] 纯文本查看 复制代码 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:[esp+1C],eax
00C46528 61 popad
8.到了这里之后,我们就可以使用loadPE先完整转存下来,然后查看程序现在运行到位置的地址,是00C4651B,我们使用loadPE部分转存,区段就选择包含了这个地址的区段。也就是00C40000这个区段,把这个区段给转存下来先,这里需要注意的是不同的PC或者是系统可能显示的地址是不同的,所以不要太过于死板。一定要按照视频教程走,其实你仔细看会发现我的教程里的地址跟ximo大神视频教程里的地址是不一样的。不过这并不影响。
9.完整转存和区域转存都执行完毕之后我们使用loadPE载入完整转存的文件,也就是点[PE编辑器]按钮,选中完整转存的那个文件;然后点击[区段]按钮,在最后一个区段右键---从磁盘载入---选中我们不分转存的那个区段。载入后我们右键选中我们载入的这个区段,然后点[编辑区段],名称我们可以随意填,虚拟地址选项输入添加区段的起始地址-基质,也就是00C40000-00400000=00840000。填完之后点确定然后保存
10.执行完上面的步骤之后我们使用需要给添加好区段的程序重建PE,使用loadPE即可。这里要说明一下,重建选项只勾选[使PE有效]这一个选项即可,其他选项都不勾选。
11.重建PE完成后我们就可以使用ImportREC进行脱壳了。脱壳地址就填假的OEP地址-基质也就是F27CF,然后进行修复,修复的时候还是使用等级1+插件进行修复。修复完毕之后先不要转存,我们需要把ImportREC上OEP地址改为最佳脱壳位置OEP-基质也就是0084651B后再进行转存。至此我们的以壳脱壳算是搞完了
12.运行查壳
运行OK,查壳:Unknown
需要说明的是我个人认为用这种方法壳应该是没有脱掉的。不过这样操作之后我们就可以使用资源编辑器对资源进行编辑修改,这样也就达到了我们的破解目的。所以壳是不是真的脱掉了我们也就不要太在意了。毕竟我们学习脱壳只是为了破解嘛。
|