Hmily 发表于 2015-7-4 23:41

【交作业贴】吾爱破解培训第一课交作业专帖

前提介绍:
《吾爱破解培训第一课:破解基础知识之介绍常见工具和壳的特征》,讲师:Hmily
http://www.52pojie.cn/thread-378612-1-1.html
请跟贴回复作业,回复内容包括说明程序加的是什么壳,和基本的脱壳步骤哦,成品可以上传网盘贴地址,节省论坛空间就不要上传到论坛了。

作业截至到2015年7月16号00:00前提交算数,没有加报名群的同学也可以提交,后期会通过作业的提交情况,来淘汰没有交作业的,让交作业的新人加入。

对于作业的解答我已经更新到上面培训贴中,作业遇到问题的可以参考一下。

帖子我设置只有我可见,等一周后取消,切记不要回复和作业无关内容,否则会被扣分,前50个名交作业的同学有奖励。

cyw 发表于 2015-7-9 19:43

本帖最后由 cyw 于 2015-7-10 20:19 编辑

@xh5510 首先很感谢XH师傅对我的悉心指导。师傅谢谢你!

第一个作业分析如下

首先先对课件查壳:
UPX -> Markus & Laszlo ver. [      ] <- from file. [ ! Modified ! ] ( sign like UPX packer )

可以确定为是UPX壳

然后我用的方法是ESP定律手脱UPX壳

第一步:载入程序,取消分析

00457580 >60            pushad
00457581    BE 00A04300   mov esi,吾爱破解.0043A000
00457586    8DBE 0070FCFF   lea edi,dword ptr ds:
0045758C    57            push edi
0045758D    83CD FF         or ebp,-0x1
00457590    EB 10         jmp short 吾爱破解.004575A2
00457592    90            nop
00457593    90            nop
00457594    90            nop
00457595    90            nop
00457596    90            nop
00457597    90            nop

第二步:F8单步一次,观察寄存器窗口 ESP突变红色


第三步:右击击ESP寄存器值0012FFA4然后数据窗口跟随

0012FFA47C930208ntdll.7C930208
0012FFA8FFFFFFFF
0012FFAC0012FFF0
0012FFB00012FFC4
0012FFB47FFD3000
0012FFB87C92E4F4ntdll.KiFastSystemCallRet
0012FFBC0012FFB0

第四步:在数据窗口下硬件断点


第五步:F9运行,删除硬件断点
00457758    8D4424 80       lea eax,dword ptr ss:
0045775C    6A 00         push 0x0
0045775E    39C4            cmp esp,eax
00457760^ 75 FA         jnz short 吾爱破解.0045775C
00457762    83EC 80         sub esp,-0x80
00457765- E9 4266FCFF   jmp 吾爱破解.0041DDAC
0045776A    0000            add byte ptr ds:,al
0045776C    48            dec eax
0045776D    0000            add byte ptr ds:,al
0045776F    0000            add byte ptr ds:,al
00457771    0000            add byte ptr ds:,al
00457773    0000            add byte ptr ds:,al
00457775    0000            add byte ptr ds:,al
00457777    0000            add byte ptr ds:,al
00457779    0000            add byte ptr ds:,al

第六步:继续F8单步

0045775E    39C4            cmp esp,eax
00457760^ 75 FA         jnz short 吾爱破解.0045775C   //向上跳转不能实现
00457762    83EC 80         sub esp,-0x80               //在此行F4运行至此
00457765- E9 4266FCFF   jmp 吾爱破解.0041DDAC
0045776A    0000            add byte ptr ds:,al
0045776C    48            dec eax

第七步:继续两次F8,顺利到达OEP
0041DDAC    E8 EF4E0000   call 吾爱破解.00422CA0
0041DDB1^ E9 79FEFFFF   jmp 吾爱破解.0041DC2F
0041DDB6    3B0D B0074400   cmp ecx,dword ptr ds:
0041DDBC    75 02         jnz short 吾爱破解.0041DDC0
0041DDBE    F3:             prefix rep:
0041DDBF    C3            retn
0041DDC0    E9 714F0000   jmp 吾爱破解.00422D36
0041DDC5    8BFF            mov edi,edi
0041DDC7    55            push ebp
0041DDC8    8BEC            mov ebp,esp
0041DDCA    51            push ecx
0041DDCB    53            push ebx
0041DDCC    56            push esi

第八步:用OD自带插件脱壳。结束。。。。



第二个作业分析如下

还是用ESP定律脱

首先查壳nsPack ver.3.x-4.1 reg by North Star 北斗压缩壳

第一步:接着载入OD。
0044C0BF >9C            pushfd
0044C0C0    60            pushad
0044C0C1    E8 00000000   call 吾爱破解.0044C0C6
0044C0C6    5D            pop ebp
0044C0C7    83ED 07         sub ebp,0x7
0044C0CA    8D85 61FCFFFF   lea eax,dword ptr ss:
0044C0D0    8038 00         cmp byte ptr ds:,0x0
0044C0D3    74 0F         je short 吾爱破解.0044C0E4
0044C0D5    8D85 89FCFFFF   lea eax,dword ptr ss:
0044C0DB    8038 01         cmp byte ptr ds:,0x1
0044C0DE    0F84 42020000   je 吾爱破解.0044C326
0044C0E4    C600 01         mov byte ptr ds:,0x1
0044C0E7    8BD5            mov edx,ebp


第二步:观察ESP寄存器突变红色,右键数据窗口跟随

第三步:下硬件断点

第四步:F9运行,删除硬件断点
0044C33C- E9 6B1AFDFF   jmp 吾爱破解.0041DDAC
0044C341    8BB5 15FCFFFF   mov esi,dword ptr ss:
0044C347    0BF6            or esi,esi
0044C349    0F84 97000000   je 吾爱破解.0044C3E6
0044C34F    8B95 1DFCFFFF   mov edx,dword ptr ss:
0044C355    03F2            add esi,edx
0044C357    833E 00         cmp dword ptr ds:,0x0
0044C35A    75 0E         jnz short 吾爱破解.0044C36A
0044C35C    837E 04 00      cmp dword ptr ds:,0x0
0044C360    75 08         jnz short 吾爱破解.0044C36A
0044C362    837E 08 00      cmp dword ptr ds:,0x0

第五步:继续F8单步。

0041DDAC      E8            db E8
0041DDAD      EF            db EF
0041DDAE      4E            db 4E                                    ;CHAR 'N'
0041DDAF      00            db 00
0041DDB0      00            db 00
0041DDB1      E9            db E9
0041DDB2      79            db 79                                    ;CHAR 'y'
0041DDB3      FE            db FE
0041DDB4      FF            db FF
0041DDB5      FF            db FF
0041DDB6      3B            db 3B                                    ;CHAR ';'
0041DDB7      0D            db 0D
0041DDB8      B0            db B0
0041DDB9      07            db 07
0041DDBA      44            db 44                                    ;CHAR 'D'

接着右键删除分析,到达OEP,接着脱壳!

0041DDAC    E8 EF4E0000   call 吾爱破解.00422CA0
0041DDB1^ E9 79FEFFFF   jmp 吾爱破解.0041DC2F
0041DDB6    3B0D B0074400   cmp ecx,dword ptr ds:
0041DDBC    75 02         jnz short 吾爱破解.0041DDC0
0041DDBE    F3:             prefix rep:
0041DDBF    C3            retn
0041DDC0    E9 714F0000   jmp 吾爱破解.00422D36
0041DDC5    8BFF            mov edi,edi
0041DDC7    55            push ebp
0041DDC8    8BEC            mov ebp,esp

OEP代码


第三个作业分析如下


查壳:FSG v2.0   F S G
ESP定律不能用了 单步F8直到软件跑起来

第一步:载入程序
00400154 >8725 E4624700   xchg dword ptr ds:,esp
0040015A    61            popad
0040015B    94            xchg eax,esp
0040015C    55            push ebp
0040015D    A4            movs byte ptr es:,byte ptr ds:
0040015E    B6 80         mov dh,0x80
00400160    FF13            call dword ptr ds:
00400162^ 73 F9         jnb short 吾爱破解.0040015D//下一行F4,打断上跳
00400164    33C9            xor ecx,ecx
00400166    FF13            call dword ptr ds:
00400168    73 16         jnb short 吾爱破解.00400180
0040016A    33C0            xor eax,eax

继续用上面的步骤直到程序跑起来

00400168   /73 16         jnb short 吾爱破解.00400180
0040016A   |33C0            xor eax,eax
0040016C   |FF13            call dword ptr ds:
0040016E   |73 1F         jnb short 吾爱破解.0040018F
00400170   |B6 80         mov dh,0x80
00400172   |41            inc ecx
00400173   |B0 10         mov al,0x10
00400175   |FF13            call dword ptr ds:
00400177   |12C0            adc al,al
00400179^|73 FA         jnb short 吾爱破解.00400175//这里有两个跳
0040017B   |75 3A         jnz short 吾爱破解.004001B7
0040017D   |AA            stos byte ptr es:       //在这行F4
0040017E^|EB E0         jmp short 吾爱破解.00400160
00400180   \FF53 08         call dword ptr ds:
00400183    02F6            add dh,dh


00400172    41            inc ecx
00400173    B0 10         mov al,0x10
00400175    FF13            call dword ptr ds:
00400177    12C0            adc al,al
00400179^ 73 FA         jnb short 吾爱破解.00400175
0040017B    75 3A         jnz short 吾爱破解.004001B7
0040017D    AA            stos byte ptr es:
0040017E^ EB E0         jmp short 吾爱破解.00400160 //这里要打断上跳
00400180    FF53 08         call dword ptr ds:
00400183    02F6            add dh,dh                   //在此行F4
00400185    83D9 01         sbb ecx,0x1

004001C6    FF53 10         call dword ptr ds:
004001C9    95            xchg eax,ebp
004001CA    8B07            mov eax,dword ptr ds:
004001CC    40            inc eax
004001CD^ 78 F3         js short 吾爱破解.004001C2
004001CF    75 03         jnz short 吾爱破解.004001D4
004001D1    FF63 0C         jmp dword ptr ds:
004001D4    50            push eax
004001D5    55            push ebp
004001D6    FF53 14         call dword ptr ds:
004001D9    AB            stos dword ptr es:
004001DA^ EB EE         jmp short 吾爱破解.004001CA
004001DC    33C9            xor ecx,ecx      //运行到此行,程序跑起来了
004001DE    41            inc ecx
004001DF    FF13            call dword ptr ds:


程序跑起来了。在运行的那个jmp地方上面找最近的jmp F2下断

重新运行后,F9运行

004001D1- FF63 0C         jmp dword ptr ds:               ; 吾爱破解.0041DDAC
004001D4    50            push eax
004001D5    55            push ebp
004001D6    FF53 14         call dword ptr ds:
004001D9    AB            stos dword ptr es:
004001DA^ EB EE         jmp short 吾爱破解.004001CA
004001DC    33C9            xor ecx,ecx
004001DE    41            inc ecx
004001DF    FF13            call dword ptr ds:
004001E1    13C9            adc ecx,ecx
004001E3    FF13            call dword ptr ds:
004001E5^ 72 F8         jb short 吾爱破解.004001DF
004001E7    C3            retn

程序已经断下来了,F7进入,右键删除分析,到达OEP

0041DDAC    E8 EF4E0000   call 吾爱破解.00422CA0
0041DDB1^ E9 79FEFFFF   jmp 吾爱破解.0041DC2F
0041DDB6    3B0D B0074400   cmp ecx,dword ptr ds:
0041DDBC    75 02         jnz short 吾爱破解.0041DDC0
0041DDBE    F3:             prefix rep:
0041DDBF    C3            retn
0041DDC0    E9 714F0000   jmp 吾爱破解.00422D36
0041DDC5    8BFF            mov edi,edi
0041DDC7    55            push ebp
0041DDC8    8BEC            mov ebp,esp
0041DDCA    51            push ecx
0041DDCB    53            push ebx

然后OD插件脱壳、打开程序提示找不到入口点

显然这个OD插件脱这种壳不管用

换LordPE脱壳dumped完成后,发现程序还是不能打开。

用Import REC修复输入表

OEP:0001DDAC
RVA:00032000
Size:00000200

终于脱壳完成了。OK了!

作业地址:链接:http://share.weiyun.com/eda90c075683fb3444cca016a0767741 (密码:LHjx)

虽然这次作业不是自己独立完成的,靠着师傅的指导完成,但是我从中体会到了自己手动脱壳成功的喜悦,本来之前要放弃了,但是经过今天的小小的成功,我顿时感觉信心足足的!我会继续努力的!
续。。。。。。。。

之前做的作业在XP环境下运行正常,但是在WIN7下运行就出问题了,今天在群里得到了答案,现在再把修复好的作业再提交上来,这次在WIN7和XP环境下都可以完美运行了!

修复作业地址:链接:http://share.weiyun.com/bbf9d6a0a2978bee1482e54bf4e3d3b9 (密码:7BcW)

無涯 发表于 2015-7-16 00:09

1 upx壳
2 FSG壳
3 NsPack

海盗小K 发表于 2015-7-5 13:14

本帖最后由 海盗小K 于 2015-7-5 14:09 编辑

这是H大留给我们的第一次作业了,理所当然应该好好对待。

我本以为这种没有安全风险的程序直接在我Win7 x64非虚拟机环境下调试就可以分分钟搞定了,哪知道昨晚搞到三点都没能让dumped的程序跑起来。

后来查了查,发现并不能使用win7 x64环境,于是转战吾爱破解专用虚拟机,分分钟就搞定了。

下面说一下思路。

作者玩了狡猾,把区段的名字都改掉了,应该为upx0,upx1的位置变成了www.52pojie.cn之类,然后这种简单的壳,其实用PEiD效果也很好。

下面查壳。



所以   吾爱破解培训第一课作业一.exe 的壳为UPX 0.89.6 - 1.02 /1.05 -1.24 -> Markus&Laszlo

UPX脱壳非常简单,我之前在Win7下试过好多UPX脱壳机都不行,唉,可爱又可恨的Win7啊。脱壳调试还是认准XP吧亲们。

载入后问是否分析代码,点否后来到pushad处,可以直接往下拉,就能找到popad,下面不远处就是一个大跳jmp,F2下断,F9跑起来会停下,在jmp处按一下F8即可到达OEP。

很明显的VS2008入口特征。

直接右键,使用OllyDump脱壳调试进程,保存,OK。

XP中可以完美运行。再次查壳:



C++ 8.0即为VS2008啦,脱壳成功。

第二个UnpackMe直接PEiD查壳:



NsPack北斗压缩壳,也很简单。直接ESP定律,硬件断点,硬件访问->Word,F9会停下,删除硬件断点后,F8一下即可到达OEP。

使用OllyDump脱壳调试进程,OK。程序完美运行,无需修复。

再次查壳,也为Microsoft Virtual C++ 8.0,为VS2008程序。

第三个UnpackMe也直接PEiD查壳:



FSG 2.0的壳,可以手脱,但是重点在修复。

重点说一下这个。看了ximo脱这个壳很有感触。

首先OD载入,停在这里。


单步走两下后,来到这里,其中堆栈窗口的显示是这样的:



在第四个那里右键,数据窗口中跟随。

然后数据窗口第一行右键,下硬件执行断点。(FSG专用ESP定律)



F9运行,停在这里:



CPU窗口第一行右键,分析->从模块删除分析。



这样此时显示的就是我们的OEP了。



此时我们用OllyDump脱壳,是跑不起来的。(OD暂时不要关闭)错误如下:



所以我们还需要修复该文件的输入表。打开Import REConsturctor,将第三课.exe附加进来。

从OEP看出,入口地址的偏移为1DDAC,我们输入Improt REC 中的OEP处,然后点击自动查找IAT,然后点击获取输入表:



将那个输入表展开后,我们发现第一个RVA为000320BC,玩过FSG的应该知道,这种自动查找的IAT肯定是不完全的。

但是在这里OEP跟VC++ 6.0的OEP不同,找不到教程里的那种call地址,怎么办呢?

我们直接根据第一个RVA来找。

在OD的command栏里面输入 d 4320bc回车

此时数据窗口出现一堆API函数,如下图所示:



正好与Import REC中的那些相对应。

我们往上找找,一直找到为空的地方,记下此时的位置:



此时第一个API的地址为00432000

我们再往下找,找到最后一个API的地址:



最后一个地址是00432558

所以我们根据这些信息让Import REC手动查找IAT:



输入这数据后,直接点获取输入表,然后点无效函数,右键,剪切。然后转存,即可。



OK,大功告成,现在程序能正常运行了。查壳为Microsoft Virtual C++ 8.0,已经脱壳成功。

作业到现在完全结束。

脱壳成果:链接:http://pan.baidu.com/s/1gdCQjyr 密码:gt71

仅能在XP下运行。Win7以上均不可。

dagangwood 发表于 2015-7-5 00:47

本帖最后由 dagangwood 于 2015-7-5 02:05 编辑

作业1:UPX壳
作业2:nsPack壳
作业3:FSG壳

作业1:UPX壳: 使用ESP定律,程序入口点截图如下


作业2:nsPack壳:
使用ESP定律,程序入口点截图如下



作业3:FSG壳:
单步执行F8+F4+大跳转,程序入口点截图如下








1094483658 发表于 2015-7-5 00:22

本帖最后由 1094483658 于 2015-7-5 11:59 编辑

吾爱破解培训第一课作业一.exe是UPX -> Markus & Laszlo ver加的壳
脱壳:用ESP定律或右键直接查找POPAD或单步,往下几行就会看到
00457765- E9 4266FCFF   jmp 吾爱破解.0041DDAC
这个跳转,直接跳向程序入口点
0041DDAC    E8 EF4E0000   call 吾爱破解.00422CA0
用LordPE和ImpREC脱壳保存


吾爱破解培训第一课作业二.exe是nsPack ver.3.x-4.1 reg by North Star加的壳
脱壳:用ESP定律或单步,来到
0044C33C- E9 6B1AFDFF   jmp 吾爱破解.0041DDAC
跳向程序入口点
0041DDAC   .E8 EF4E0000   call 吾爱破解.00422CA0
用LordPE和ImpREC脱壳保存


吾爱破解培训第一课作业三.exe是FSG v2.0   F S G加的壳
脱壳:但不往下第三行,来到
0040015B    94            xchg eax,esp
这时我们观察堆栈窗口。如下
004762E8   004001E8吾爱破解.004001E8
004762EC   004001DC吾爱破解.004001DC
004762F0   004001DE吾爱破解.004001DE
004762F4   0041DDAC吾爱破解.0041DDAC
004762F8 > 7C801D7Bkernel32.LoadLibraryA
004762FC > 7C80AE40kernel32.GetProcAddress
我们在004762F4   0041DDAC吾爱破解.0041DDAC处
右键——数据窗口跟随——选中四个字节直接下硬件执行断点
按F9运行,程序直接跳向OEP处
0041DDAC   .E8 EF4E0000   call 吾爱破解.00422CA0
修复IAT时要手动查找IAT的起始位置和大小。随便找一个像这样的CALL
call dword ptr ds:
下硬件访问断点,重载程序,观察数据窗口,就能发现IAT的起始位置和大小
之后用LordPE和ImpREC脱壳保存




hnicf 发表于 2015-7-5 00:29

lyxsh2013 发表于 2015-7-5 00:43

本帖最后由 lyxsh2013 于 2015-7-8 21:22 编辑

[一]OD加载看见一大群nop,就知道是UPX的,F8一次用ESP定律来到
00457758    8D4424 80       lea eax,dword ptr ss:
0045775C    6A 00         push 0x0
0045775E    39C4            cmp esp,eax
00457760^ 75 FA         jnz short 吾爱破解.0045775C
00457762    83EC 80         sub esp,-0x80//这里F4
00457765- E9 4266FCFF   jmp 吾爱破解.0041DDAC//这里跳过去后就到OEP
0045776A    0000            add byte ptr ds:,al
0045776C    48            dec eax
0045776D    0000            add byte ptr ds:,al
0045776F    0000            add byte ptr ds:,al
00457771    0000            add byte ptr ds:,al
00457773    0000            add byte ptr ds:,al

在向上jnz下面一行F4(奇怪的是要按两次)

接下来F8单步走两次,大跳后,就到了入口
目测判断是VS2008的程序

0041DDAC    E8 EF4E0000   call 吾爱破解.00422CA0
0041DDB1^ E9 79FEFFFF   jmp 吾爱破解.0041DC2F
0041DDB6    3B0D B0074400   cmp ecx,dword ptr ds:
0041DDBC    75 02         jnz short 吾爱破解.0041DDC0
0041DDBE    F3:             prefix rep:
0041DDBF    C3            retn


脱下来的程序用PE查怪怪的...{:301_982:}




[二]OD加载完全看不懂,用PE一查是:nsPack ver.3.x-4.1 reg by North Star
百度查一下这壳,能用EPS定律脱

F8,单步走后ESP定律到了0044C33C,直接是个JMP,F8跟过去后出现了一大堆看不懂的
右键--分析--从模块中删除分析后,发现和第一个程序入口完全一样



[三]OD加载也目测不出是什么壳,PE查出是:FSG v2.0   F S G- www.xtreeme.prv.pl
自己试了下ESP定律发现不好使
看了http://www.52pojie.cn/thread-338937-1-1.html   分享 FSG 2.0的一次脱壳经历,IAT API修复--wanttobeno 的帖子后
学她点击跳转F4跑,找到跑飞的JMP
004001CD^\78 F3         js short 吾爱破解.004001C2
004001CF    75 03         jnz short 吾爱破解.004001D4
004001D1    FF63 0C         jmp dword ptr ds:               ; 这个跳转
004001D4    50            push eax
004001D5    55            push ebp
下断,重载,F9运行到004001D1这个跳转,F8跟过去后,发现又是一堆看不懂的,从模块中删除分析后,看见了程序入口.

在入口脱壳后,运行却出问题了,想必是要修复{:301_977:}



看了小生大大的压缩壳练习二,以及百度上手动寻找IAT方法后,成功修复啦.{:301_1003:}

脱壳脱到OEP的时候,右键当前CALL:数据窗口中跟随-内存地址,然后在左下角右键:长型-地址

这时左下角大概是这个样

向上翻,找一大堆数值为00000000和有英文注释交界的地方

OEP:1DDAC RVA:32000,长度不会算,填的2000,修复之后就好了

黑的思想 发表于 2015-7-5 00:56


作业一:UPX
作业二:nsPack ver.3.x-4.1
作业三:FSG v2.0
脱壳
作业一:查找命令popad,00457765处下断点,F9,jmp 0041DDAC。用LordPE dump,用ImportREC修复,oep为1DDAC。
作业二:查找命令序列popad popfd,0044C33C处下断点,F9,来到0041DDAC。用LordPE dump,用ImportREC修复,oep为1DDAC。
作业三:观察代码,稍微往下拉,即可发现004001D1处的可疑跳转,下断点,F9,来到0041DDAC,从模块删除分析。用LordPE dump,用ImportREC修复,oep为1DDAC,特别修改rva为00032000,大小为554。

作业链接:http://pan.baidu.com/s/1ntvIPo1 密码: vdjn

蚯蚓翔龙 发表于 2015-7-5 01:00



成品
链接:http://pan.baidu.com/s/1eQwDfbk 密码:kcg8
{:1_924:}路过领CB

单曲循环丶T 发表于 2015-7-5 01:19

作业一的壳是UPX壳,我使用的是单步跟踪法,遇见向上跳转就到下一步F4。也可以使用ESP定律法。
作业二的壳是Nspack壳,我使用的是ESP定律法,瞬间到达~!
作业三的壳是FSG壳,他有好几次跑飞要注意,还有OEP的地址隐藏也要注意,在三个跳转的一个位置。
我作业答案~。H大,如果有问题纠正我啊~!
链接:http://pan.baidu.com/s/1jGvOXCU 密码:sxdy

BlackTrace 发表于 2015-7-5 02:02

作业1:
壳:UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo

脱壳方法:ESP定律
        在第一个pushad执行完以后,选择设置esp刚刚压进去的数据的硬件访问断点,然后F9.就到了这里
        00457758    8D4424 80       lea eax,dword ptr ss:
0045775C    6A 00         push 0x0
0045775E    39C4            cmp esp,eax
00457760^ 75 FA         jnz short 吾爱破解.0045775C
00457762    83EC 80         sub esp,-0x80
00457765- E9 4266FCFF   jmp 吾爱破解.0041DDAC
0045776A    0000            add byte ptr ds:,al
0045776C    48            dec eax

取消硬件断点,单步下去,有个跳转。
就到了这里:
0041DDAC    E8 EF4E0000   call 吾爱破解.00422CA0
0041DDB1^ E9 79FEFFFF   jmp 吾爱破解.0041DC2F
0041DDB6    3B0D B0074400   cmp ecx,dword ptr ds:
0041DDBC    75 02         jnz short 吾爱破解.0041DDC0
0041DDBE    F3:             prefix rep:

然后用od的插件脱,保存,查壳(这里有个疑问,EXEinfo查脱完的壳的程序,居然是未知的壳,用peid查就是VC8.0,不知道是不是我弄错了),已脱运行没有报错。


作业2:
壳:nsPack
脱壳方法:ESP定律
0044C0BF >9C            pushfd
0044C0C0    60            pushad
0044C0C1    E8 00000000   call 吾爱破解.0044C0C6

用od加载了以后,是这样的,让od执行pushfd,pushad,然后把刚压进栈的数据设置硬件访问断点,然后F9,来到这里。
0044C33B    9D            popfd
0044C33C- E9 6B1AFDFF   jmp 吾爱破解.0041DDAC
0044C341    8BB5 15FCFFFF   mov esi,dword ptr ss:
0044C347    0BF6            or esi,esi
0044C349    0F84 97000000   je 吾爱破解.0044C3E6

取消硬件断点,继续单步下去,下面的那个jmp,直接跳到OEP

0041DDAC   .E8 EF4E0000   call 吾爱破解.00422CA0
0041DDB1   .^ E9 79FEFFFF   jmp 吾爱破解.0041DC2F
0041DDB6   $3B0D B0074400 cmp ecx,dword ptr ds:
0041DDBC   .75 02         jnz short 吾爱破解.0041DDC0
0041DDBE   .F3:         prefix rep:
0041DDBF   .C3            retn

VS2008的入口点。
用od的插件脱,搞定。


作业3:
壳:FSG v2.0
脱壳方法:ESP定律+单步
刚加载的时候
00400154 >8725 E4624700   xchg dword ptr ds:,esp
0040015A    61            popad
0040015B    94            xchg eax,esp
0040015C    55            push ebp
0040015D    A4            movs byte ptr es:,byte ptr ds:
看见popad,我还是在popad执行后,把压入的数据设硬件访问断点。
然后f9到这里。
004001E8    02D2            add dl,dl
004001EA    75 05         jnz short 吾爱破解.004001F1
004001EC    8A16            mov dl,byte ptr ds:
004001EE    46            inc esi                                  ; 吾爱破解.00455CCD
004001EF    12D2            adc dl,dl
004001F1    C3            retn

去掉硬件断点,让其跑起来,向下跳转让其实现,向上跳转,则到它的下一行F4,最后在一个地方跑飞了。

004001CD^\78 F3         js short 吾爱破解.004001C2
004001CF    75 03         jnz short 吾爱破解.004001D4
004001D1- FF63 0C         jmp dword ptr ds:               ; 吾爱破解.0041DDAC
004001D4    50            push eax                                 ; kernel32.RaiseException
004001D5    55            push ebp                                 ; kernel32.7C800000
004001D6    FF53 14         call dword ptr ds:             ; kernel32.GetProcAddress
004001D9    AB            stos dword ptr es:
004001DA^ EB EE         jmp short 吾爱破解.004001CA
004001DC    33C9            xor ecx,ecx                              ; ntdll.7C937DE9

在004001DC这里F4跑飞了,看起来是哪个jmp里面有问题,继续看了哪个jmp循环里面的代码,发现004001D1- FF63 0C         jmp dword ptr ds: 这个是最有可能跑飞的了。下断后,重新载入,F9,然后F8,跳到OEP
0041DDAC   .E8 EF4E0000   call 吾爱破解.00422CA0
0041DDB1   .^ E9 79FEFFFF   jmp 吾爱破解.0041DC2F
0041DDB6   $3B0D B0074400 cmp ecx,dword ptr ds:
0041DDBC   .75 02         jnz short 吾爱破解.0041DDC0
0041DDBE   .F3:         prefix rep:
0041DDBF   .C3            retn

接下来脱壳,遇到点小问题,就是用od的插件脱出来,用i汉化版的import修复了一下输入表,结果还是跑不起来,折腾了一下,还是没搞定,在论坛里搜了一下,发现有人也遇到了这个问题,看了一下帖子,发现,它的修复有点复杂,又是对比,又是添加,重点是用脱壳机脱了再对比修复(不想下脱壳机),最后看帖子,看见H大,说把import的查找范围设置大一些,果断试了,结果还是不行。也是醉了,看见说是要关机重启电脑,想想就麻烦,然后试了一下用loadPe脱,然后用原版的import把查找范围弄大,然后查找把无效的也干掉,然后修复,结果成功运行了。收工了,菜鸟也是不容易啊。

脱完壳的程序
链接: http://pan.baidu.com/s/1jG4CzaA 密码: gi8a

谢谢,H大。最后请问,loadpe的完全脱壳的原理是怎么样的呢?疑问2,EXEinfo查脱完的壳的程序,居然是未知的壳,用peid查就是VC8.0,不知道是不是我弄错了。上面的脱完用exeinfo都查不出来。用peid就没问题。


用记事本敲的,看起来可能会有点累,辛苦了H大。谢谢:loveliness:

冲动IS魔鬼 发表于 2015-7-5 02:14

本帖最后由 冲动IS魔鬼 于 2015-7-6 23:21 编辑

百度网盘 作业
http://pan.baidu.com/s/1c0jQcFY
作业一 UPX 一步法
起始 搜索
popad
找到出栈并找到关键跳
00457757   .61            popad
00457758   .8D4424 80   lea eax,dword ptr ss:
0045775C   >6A 00         push 0x0
0045775E   .39C4          cmp esp,eax
00457760   .^ 75 FA         jnz short 吾爱破解.0045775C
00457762   .83EC 80       sub esp,-0x80
00457765   .- E9 4266FCFF   jmp 吾爱破解.0041DDAC

大跳过后就是oep
0041DDAC    E8 EF4E0000   call 吾爱破解.00422CA0
0041DDB1^ E9 79FEFFFF   jmp 吾爱破解.0041DC2F
0041DDB6    3B0D B0074400   cmp ecx,dword ptr ds:
0041DDBC    75 02         jnz short 吾爱破解.0041DDC0
0041DDBE    F3:             prefix rep:
0041DDBF    C3            retn
0041DDC0    E9 714F0000   jmp 吾爱破解.00422D36
0041DDC5    8BFF            mov edi,edi
0041DDC7    55            push ebp
0041DDC8    8BEC            mov ebp,esp
0041DDCA    51            push ecx
0041DDCB    53            push ebx
0041DDCC    56            push esi
0041DDCD    57            push edi



作业二 NsPack ESP定律法
单步执行到
0044C0C1    E8 00000000   call 吾爱破解.0044C0C6
ESP断点并运行 直达出栈

0044C33B    9D            popfd
0044C33C- E9 6B1AFDFF   jmp 吾爱破解.0041DDAC
0044C341    8BB5 15FCFFFF   mov esi,dword ptr ss:
0044C347    0BF6            or esi,esi
0044C349    0F84 97000000   je 吾爱破解.0044C3E6
0044C34F    8B95 1DFCFFFF   mov edx,dword ptr ss:
0044C355    03F2            add esi,edx                              ; ntdll.KiFastSystemCallRet

并找到关键跳 大跳之后就是oep
0041DDAC   .E8 EF4E0000   call 吾爱破解.00422CA0
0041DDB1   .^ E9 79FEFFFF   jmp 吾爱破解.0041DC2F
0041DDB6   $3B0D B0074400 cmp ecx,dword ptr ds:
0041DDBC   .75 02         jnz short 吾爱破解.0041DDC0
0041DDBE   .F3:         prefix rep:
0041DDBF   .C3            retn
0041DDC0   >E9 714F0000   jmp 吾爱破解.00422D36
0041DDC5   $8BFF          mov edi,edi
0041DDC7/.55            push ebp
0041DDC8|.8BEC          mov ebp,esp
0041DDCA|.51            push ecx
0041DDCB|.53            push ebx







作业三   FSG   ESP定律法
单步走到
0040015D    A4            movs byte ptr es:,byte ptr ds:
esp下断点

运行到如下位置
004001C2    AD            lods dword ptr ds:
004001C3    97            xchg eax,edi                           ; 吾爱破解.00453000
004001C4    AD            lods dword ptr ds:
004001C5    50            push eax
004001C6    FF53 10         call dword ptr ds:             ; kernel32.LoadLibraryA
004001C9    95            xchg eax,ebp
004001CA    8B07            mov eax,dword ptr ds:
004001CC    40            inc eax
004001CD^ 78 F3         js short 吾爱破解.004001C2
004001CF    75 03         jnz short 吾爱破解.004001D4
004001D1- FF63 0C         jmp dword ptr ds:               ; 吾爱破解.0041DDAC

找到三个关键跳转 大跳之后到达oep
0041DDAC   .E8 EF4E0000   call 吾爱破解.00422CA0
0041DDB1   .^ E9 79FEFFFF   jmp 吾爱破解.0041DC2F
0041DDB6   $3B0D B0074400 cmp ecx,dword ptr ds:
0041DDBC   .75 02         jnz short 吾爱破解.0041DDC0
0041DDBE   .F3:         prefix rep:
0041DDBF   .C3            retn
0041DDC0   >E9 714F0000   jmp 吾爱破解.00422D36
0041DDC5   $8BFF          mov edi,edi                              ;吾爱破解.004322F4
0041DDC7/.55            push ebp                                 ;oleaut32.770F0000
0041DDC8|.8BEC          mov ebp,esp
0041DDCA|.51            push ecx                                 ;ntdll.7C937DE9
0041DDCB|.53            push ebx                                 ;吾爱破解.004762E8
0041DDCC|.56            push esi                                 ;吾爱破解.0043CF04
0041DDCD|.57            push edi                                 ;吾爱破解.004322F4

用loadpe 保存脱壳

寻找call
0041E0E6   .FF15 3C224300 call dword ptr ds:             ;ntdll.RtlGetLastWin32Error

指针起始位置 3200 大小选择1000 然后剪切无效指针 保存修复即可





页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 【交作业贴】吾爱破解培训第一课交作业专帖