安全中国首页 > 动画中心 > 脱壳动画找动画,点这里
 

第三课脱壳教程:四种方法手动脱壳FSG 1.33

 
动画大小: 3.59 MB
添加时间: 2007-08-01
动画性质: 无声演示
录制工具: 屏幕录象专家
作者姓名: wynney
作者 Q Q: 不详
作者信箱: 不详
动画评级:
动画介绍:首先查壳FSG 1.33 -> dulek/xt

先给大家讲一下调试的异常设置方法吧,首先忽略所有异常,F9试运行一下,遇到异常,好我们现在试下不忽略内存异常(这是一个自己尝试的过程目的就是是要找到好多调试设置!),再试运行,OK,程序运行。。要的就是他

OD载入,我事先日、载入好了。
方法一:单步法(忽略所有异常)

004103E3 f> BE A4014000 mov esi,fsg_1_33.004001A4 //停在这里了,继续F8单步
004103E8 AD lods dword ptr ds:[esi]
004103E9 93 xchg eax,ebx
004103EA AD lods dword ptr ds:[esi]
004103EB 97 xchg eax,edi
004103EC AD lods dword ptr ds:[esi]
004103ED 56 push esi
004103EE 96 xchg eax,esi
004103EF B2 80 mov dl,80
004103F1 A4 movs byte ptr es:[edi],by>
004103F2 B6 80 mov dh,80
004103F4 FF13 call dword ptr ds:[ebx] //F7进入
。。。。。。。。
0041049E 02D2 add dl,dl //到这里啦,继续单步
004104A0 75 05 jnz short fsg_1_33.004104>
004104A2 8A16 mov dl,byte ptr ds:[esi]
004104A4 46 inc esi
004104A5 12D2 adc dl,dl
004104A7 C3 retn //返回
。。。。。。。。
004103F6 ^\73 F9 jnb short fsg_1_33.004103> //到这里了
004103F8 33C9 xor ecx,ecx
004103FA FF13 call dword ptr ds:[ebx]
004103FC 73 16 jnb short fsg_1_33.004104>
004103FE 33C0 xor eax,eax
00410400 FF13 call dword ptr ds:[ebx]
00410402 73 1F jnb short fsg_1_33.004104>
。。。。。。。。。。。。。。。
中间是我就不写了,单步F8或者是遇到往回跳的时候F4下来就可以啦
。。。。。。。。。。。。。。。
下面要注意的!!!!!!!!!
0041046C AD lods dword ptr ds:[esi]
0041046D 97 xchg eax,edi
0041046E 56 push esi
0041046F FF13 call dword ptr ds:[ebx] //一般来说这里应该是F7进入的,但是,一进去了就难出来了,在这里我们仍然是F8过,来到了系统领空!
00410471 95 xchg eax,ebp
00410472 AC lods byte ptr ds:[esi]
00410473 84C0 test al,al
。。。。。。。。。。。。。。。
77F75DB0 8B1C24 mov ebx,dword ptr ss:[esp> //来到这里,提示有异常
77F75DB3 51 push ecx
77F75DB4 53 push ebx
77F75DB5 E8 BC1A0200 call ntdll.77F97876
77F75DBA 0AC0 or al,al
77F75DBC 74 0C je short ntdll.77F75DCA
我们就按下shift+F9
00410471 95 xchg eax,ebp //到这里了,单步
00410472 AC lods byte ptr ds:[esi]
00410473 84C0 test al,al
00410475 ^ 75 FB jnz short fsg_1_33.004104> //要往回跳
00410477 FE0E dec byte ptr ds:[esi] //F4,继续F8
00410479 ^ 74 F0 je short fsg_1_33.0041046>
0041047B 79 05 jns short fsg_1_33.004104>
0041047D 46 inc esi
0041047E AD lods dword ptr ds:[esi]
0041047F 50 push eax
00410480 EB 09 jmp short fsg_1_33.004104>
00410482 FE0E dec byte ptr ds:[esi]
00410484 - 0F84 420CFFFF je fsg_1_33.004010CC //这里我们enter下去,就到了程序的OEP了,F2下断,F9运行到这里,F2取消下断
004010CC 55 db 55 ; CHAR ’U’ //OEP,右键“分析”--“从模块中删除分析”,再dump出来就可以啦
004010CD 8B db 8B
004010CE EC db EC
004010CF 83 db 83
大家在这里可以看到EP区段没有写什么。。。其实是没关系的,,,是加壳的缘故。
做一下减肥优化吧

方法二:内存镜像法(忽略所有异常)
ALT+M,打开内存镜像,找到.rsrc,F2下断,F9运行。
再次
ALT+M,打开内存镜像,找到code段。F2下断,shift+F9运行。
00410472 AC lods byte ptr ds:[esi] //停在这里了
00410473 84C0 test al,al
00410475 ^ 75 FB jnz short fsg_1_33.004104> //要往回跳了
00410477 FE0E dec byte ptr ds:[esi] //F4
00410479 ^ 74 F0 je short fsg_1_33.0041046>
0041047B 79 05 jns short fsg_1_33.004104>
0041047D 46 inc esi
0041047E AD lods dword ptr ds:[esi]
0041047F 50 push eax
00410480 EB 09 jmp short fsg_1_33.004104>
00410482 FE0E dec byte ptr ds:[esi]
00410484 - 0F84 420CFFFF je fsg_1_33.004010CC //按下enter(这个一个没有实现的大跳转!)
。。。。。。。。。。。。。。。。。。。。。。
004010CC 55 db 55 ; CHAR ’U’ //F2下断,F9运行,F2取消断点,右键“分析”--“从模块中删除分析”
004010CD 8B db 8B
004010CE EC db EC
004010CF 83 db 83
。。。。。。。。
004010CC 55 push ebp ; ADVAPI32.77DA0000 //在这里dump就可以啦
004010CD 8BEC mov ebp,esp
004010CF 83EC 44 sub esp,44
004010D2 56 push esi
004010D3 FF15 E0634000 call dword ptr ds:[4063E0>; kernel32.GetCommandLineA

 

 

方法三:ESP定律(忽略所有异常)
004103E3 f> BE A4014000 mov esi,fsg_1_33.004001A4
004103E8 AD lods dword ptr ds:[esi]
004103E9 93 xchg eax,ebx
004103EA AD lods dword ptr ds:[esi]
004103EB 97 xchg eax,edi
004103EC AD lods dword ptr ds:[esi]
004103ED 56 push esi
004103EE 96 xchg eax,esi ;fsg_1_33.004001B0 //ESP突现0012FFC0
004103EF B2 80 mov dl,80
下命令行,hr 0012FFC0,回车,F9运行。取消硬件断点。
0041045A AD lods dword ptr ds:[esi] //到这里了,继续F8
0041045B 48 dec eax
0041045C 74 0A je short fsg_1_33.0041046>
0041045E 79 02 jns short fsg_1_33.004104>
00410460 AD lods dword ptr ds:[esi]
00410461 50 push eax
00410462 56 push esi
00410463 8BF2 mov esi,edx
00410465 97 xchg eax,edi
00410466 ^ EB 87 jmp short fsg_1_33.004103>
00410468 AD lods dword ptr ds:[esi] //F4
00410469 93 xchg eax,ebx
0041046A 5E pop esi
0041046B 46 inc esi
0041046C AD lods dword ptr ds:[esi]
0041046D 97 xchg eax,edi
0041046E 56 push esi
0041046F FF13 call dword ptr ds:[ebx] //一般来说这里应该是F7进入的,但是,一进去了就难出来了,在这里我们仍然是F8过,来到了系统领空!
。。。。。。。。。。。。
77F69ECD FF40 10 inc dword ptr ds:[eax+10] //到了这里,提示异常,要shift+F9才能够过去
77F69ED0 8B45 FC mov eax,dword ptr ss:[ebp>
77F69ED3 83E0 01 and eax,1
我们shift+F9
00410471 95 xchg eax,ebp //到了这里
00410472 AC lods byte ptr ds:[esi]
00410473 84C0 test al,al
00410475 ^ 75 FB jnz short fsg_1_33.004104>
00410477 FE0E dec byte ptr ds:[esi]
其他的和方法一一样啦,自己慢慢研究下。

方法四:模拟跟踪法(不忽略内存异常)[首先忽略所有异常,F9试运行一下,遇到异常,好我们现在试下不忽略内存异常,(这是一个自己尝试的过程目的就是是要找到好多调试设置!),再试运行,OK,程序运行了。。要的就是他,模拟跟踪法是需要在没有异常的情况下才能够完全运用的]
ALT+M,打开内存镜像,
内存镜像,项目 15
地址=0040C000
大小=00005000 (20480.)
Owner=fsg_1_33 00400000
区段=
包含=SFX,imports,resources
类型=Imag 01001002
访问=R
初始访问=RWE

下命令行tc eip<0040c000,enter。正在跟踪之中。。。。有时候需要点时间等~
OK,完成了
004010CC 55 db 55 ; CHAR ’U’ //直接就停在了OEP
004010CD 8B db 8B
004010CE EC db EC
004010CF 83 db 83
004010D0 EC db EC
右键“分析”--“从模块中删除分析”,其他和法3一样啦。呵呵~是不是很简单~~

好了~今天的动画就到这里了~~我要实习去了~拜拜~

下载地址:安全中国anqn.com下载

 
安全中国网友投稿专用上传FTP空间:
Ftp服务器:download.anqn.com
Ftp端口:21
用户名:anqn
密 码:anqn.com
 
相关动画
 
学习软件编程开发技术,推荐加入以下软件编程培训班:
易语言软件编程培训班(简单易学)  Delphi软件编程培训班  VC++软件编程培训班
VB软件编程培训班  JAVA高端编程就业研发班

学习网站开发制作技术,推荐加入以下网站开发培训班:
ASP.net网站开发项目实战班  ASP语言网站建设培训班

学习网络安全入侵防护技术,推荐加入以下技术培训班:
大型网络安全入侵防护班  网站脚本程序全方位安全检测班

学习网络管理、网吧运营维护技术(网管),推荐加入以下培训班:
大型网吧技术管理人才特训班  Linux网络嵌入架构工程师培训班

学习专项特殊技术,推荐加入以下专项技术培训班:
软件与游戏外挂脱壳破解班(逆向工程)  赚钱王道-网赚技能培训班  Flash动画设计师就业特训班