手动脱壳入门第四篇Aspack 2.11

所属分类: 网络安全 / 加密解密 阅读数: 193
收藏 0 赞 0 分享

【脱文标题】 手动脱壳入门第四篇Aspack 2.11
【脱文作者】 weiyi75[Dfcg]
【作者邮箱】 weiyi75@sohu.com
【作者主页】 Dfcg官方大本营
【使用工具】 Peid,Ollydbg
【脱壳平台】 Win2K/XP
【软件名称】 NOTEPAD
【软件简介】 Aspack 2.11加壳Win98的记事本
【软件大小】 19.6K
【加壳方式】 ASPack 2.11 -> Alexey Solodovnikov
【脱壳声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:
好,我们这次脱Aspack2.11的壳看看它的特性。
首先必须的工具要准备好,
附件中壳为Peid测壳为Aspack2.11
手动脱壳建议大家用Ollydbg,工作平台Win2000,WinXp,Win9x不推荐。
手动脱壳时,用Olldbg载入程序,脱壳程序里面会有有好多循环。对付循环时,只能让程序往前运行,基本不能让它往回跳,要想法跳出循环圈。不要用Peid查入口,单步跟踪,提高手动找入口能力。
用OD载入程序后。
确定一个入口警告,Od提示程序加壳,选不继续分析。
停在这里
0040D001 60 pushad 我们先记住Aspack壳的加壳入口第一句是PUSHAD
0040D002 E9 3D040000 jmp NOTEPAD.0040D444 语句结构和Aspack1.08大不相同,直接跳走。
0040D444 81DD 719D255>sbb ebp, 55259D71 到这里。
0040D44A E8 14000000 call NOTEPAD.0040D463 比较近的Call,F7过,F8就跑飞。应该是变形的Jmp
0040D44F 47 inc edi
0040D450 DA7C6B E1 fidivr dword ptr ds:[ebx ebp*2-1>
0040D454 43 inc ebx
0040D455 C547 33 lds eax, fword ptr ds:[edi 33]
0040D458 EC in al, dx
0040D459 46 inc esi
0040D45A 2C D9 sub al, 0D9
0040D45C 64:2C AF sub al, 0AF
0040D45F 3F aas
0040D460 53 push ebx
0040D461 F8 clc
0040D462 BF BA6755B6 mov edi, B65567BA
0040D467 5A pop edx
0040D463 BA 6755B65A mov edx, 5AB65567 到这里。
0040D468 81D2 19620C9>adc edx, 9A0C6219
0040D46E 59 pop ecx
0040D46F 80CE E3 or dh, 0E3
0040D472 81C2 A9B064F>add edx, F164B0A9
0040D478 E9 14000000 jmp NOTEPAD.0040D491
0040D491 51 push ecx ; NOTEPAD.0040D44F
0040D492 BD 69806869 mov ebp, 69688069
0040D497 0FBFEF movsx ebp, di
0040D49A 5E pop esi
0040D49B 66:8BFB mov di, bx
0040D49E E9 14000000 jmp NOTEPAD.0040D4B7
0040D4B7 81C6 3D82E11>add esi, 14E1823D
0040D4BD 80CE 31 or dh, 31
0040D4C0 0FBFF9 movsx edi, cx
0040D4C3 BD 114E421D mov ebp, 1D424E11
0040D4C8 BB C3802D0F mov ebx, 0F2D80C3
0040D4CD 66:8BE8 mov bp, ax
0040D4D0 E9 14000000 jmp NOTEPAD.0040D4E9
0040D4E9 81F2 83CB7C9>xor edx, 9F7CCB83
0040D4EF B2 D5 mov dl, 0D5
0040D4F1 0FBFEA movsx ebp, dx
0040D4F4 8186 AF7D1EE>add dword ptr ds:[esi EB1E7DAF],>
0040D4FE 81D5 99DD7E1>adc ebp, 127EDD99
0040D504 B2 C0 mov dl, 0C0
0040D506 0FBFE9 movsx ebp, cx
0040D509 43 inc ebx
0040D50A 81D9 8F5710F>sbb ecx, F910578F
0040D510 81EE 0200000>sub esi, 2
0040D516 81EE 0200000>sub esi, 2
0040D51C 0FBFFA movsx edi, dx
0040D51F B2 9B mov dl, 9B
0040D521 81FB D1812D0>cmp ebx, 0F2D81D1
0040D527 ^ 0F85 C4FFFFF>jnz NOTEPAD.0040D4F1 往回跳
0040D52D 66:8BD5 mov dx, bp F4到这里
0040D530 81D9 4192AA9>sbb ecx, 90AA9241
0040D536 ^ E9 00FFFFFF jmp NOTEPAD.0040D43B 又往回跳
0040D53B A9 55C3500F test eax, 0F50C355 F4到这里不行,跑飞了。
Ctrl F2从来。
到不了下一句,没办法,让0040D536 ^ E9 00FFFFFF jmp NOTEPAD.0040D43B 往回跳
0040D43B ^\E9 C7FBFFFF jmp NOTEPAD.0040D007 到这里,往回跳
0040D440 0000 add byte ptr ds:[eax], al 不能F4到这里,只能让它回跳。
0040D001 N> 60 pushad
0040D002 E9 3D040000 jmp NOTEPAD.0040D444
0040D007 E8 24040000 call NOTEPAD.0040D430 跳到这里,这不是入口处的第三条代码吗?
0040D00C /EB 00 jmp short NOTEPAD.0040D00E 隔壁也跳。
0040D00E \BB 30394400 mov ebx, 443930
0040D013 03DD add ebx, ebp
0040D015 2B9D D03F440>sub ebx, dword ptr ss:[ebp 443FD>
0040D01B 83BD FC49440>cmp dword ptr ss:[ebp 4449FC], 0
0040D022 899D FC49440>mov dword ptr ss:[ebp 4449FC], e>
0040D028 0F85 6603000>jnz NOTEPAD.0040D394
0040D02E C785 3339440>mov dword ptr ss:[ebp 443933], 0
0040D038 8D85 044A440>lea eax, dword ptr ss:[ebp 444A0>
0040D03E 50 push eax
0040D03F FF95 004B440>call dword ptr ss:[ebp 444B00] ; 注意: kernel32.GetModuleHandleA
0040D045 8985 004A440>mov dword ptr ss:[ebp 444A00], e>
0040D04B 8BF8 mov edi, eax
0040D04D 8D9D 114A440>lea ebx, dword ptr ss:[ebp 444A1>
0040D053 53 push ebx
0040D054 50 push eax
0040D055 FF95 FC4A440>call dword ptr ss:[ebp 444AFC] ;注意: kernel32.GetProcAddress
0040D05B 8985 FC3F440>mov dword ptr ss:[ebp 443FFC], e>
0040D061 8D9D 1E4A440>lea ebx, dword ptr ss:[ebp 444A1>
0040D067 53 push ebx
0040D068 57 push edi
0040D069 FF95 FC4A440>call dword ptr ss:[ebp 444AFC] 注意: kernel32.GetProcAddress
0040D06F 8985 0040440>mov dword ptr ss:[ebp 444000], e>
0040D075 8D85 B539440>lea eax, dword ptr ss:[ebp 4439B>
0040D07B FFE0 jmp eax ; NOTEPAD.0040D085
0040D085 8B9D D83F440>mov ebx, dword ptr ss:[ebp 443FD>
0040D08B 0BDB or ebx, ebx
0040D08D 74 0A je short NOTEPAD.0040D099 跳
0040D08F 8B03 mov eax, dword ptr ds:[ebx]
0040D091 8785 DC3F440>xchg dword ptr ss:[ebp 443FDC], >
0040D097 8903 mov dword ptr ds:[ebx], eax
0040D099 8DB5 1940440>lea esi, dword ptr ss:[ebp 44401>
0040D09F 833E 00 cmp dword ptr ds:[esi], 0
0040D0A2 0F84 1F01000>je NOTEPAD.0040D1C7
............................................
0040D0F8 50 push eax
0040D0F9 53 push ebx
0040D0FA E8 DA060000 call NOTEPAD.0040D7D9 往回Call,F8放心过。
0040D0FF 80BD 1040440>cmp byte ptr ss:[ebp 444010], 0
0040D106 75 5E jnz short NOTEPAD.0040D166
0040D108 FE85 1040440>inc byte ptr ss:[ebp 444010]
0040D10E 8B3E mov edi, dword ptr ds:[esi]
0040D110 03BD FC49440>add edi, dword ptr ss:[ebp 4449F>
0040D116 FF37 push dword ptr ds:[edi]
0040D118 C607 C3 mov byte ptr ds:[edi], 0C3
0040D11B FFD7 call edi
.................................................
0040D141 43 inc ebx
0040D142 49 dec ecx
0040D143 ^ EB EB jmp short NOTEPAD.0040D130 往回跳。
0040D145 8B06 mov eax, dword ptr ds:[esi] F4过。
0040D147 EB 00 jmp short NOTEPAD.0040D149
0040D149 803E 00 cmp byte ptr ds:[esi], 0
0040D14C ^ 75 F3 jnz short NOTEPAD.0040D141 往回跳。
0040D14E 24 00 and al, 0 F4过。
0040D150 C1C0 18 rol eax, 18
0040D153 2BC3 sub eax, ebx
0040D15A 83C6 04 add esi, 4
0040D15D 83E9 05 sub ecx, 5
0040D160 ^ EB CE jmp short NOTEPAD.0040D130 往回跳。
0040D162 5B pop ebx F4 ; NOTEPAD.00401000
0040D163 5E pop esi
0040D164 59 pop ecx
0040D165 58 pop eax
0040D166 8BC8 mov ecx, eax
0040D168 8B3E mov edi, dword ptr ds:[esi]
0040D196 83C6 08 add esi, 8
0040D199 833E 00 cmp dword ptr ds:[esi], 0
0040D19C ^ 0F85 26FFFFF>jnz NOTEPAD.0040D0C8 往回跳
0040D1A2 68 00800000 push 8000 F4
0040D1A7 6A 00 push 0
0040D1A9 FFB5 F83F440>push dword ptr ss:[ebp 443FF8]
0040D1AF FF95 0040440>call dword ptr ss:[ebp 444000]
0040D25E /74 11 je short NOTEPAD.0040D271 跳。
0040D260 |03F2 add esi, edx
0040D271 8BB5 B139440>mov esi, dword ptr ss:[ebp 4439B>
0040D277 8B95 FC49440>mov edx, dword ptr ss:[ebp 4449F>
0040D27D 03F2 add esi, edx
0040D27F 8B46 0C mov eax, dword ptr ds:[esi C]
0040D282 85C0 test eax, eax
0040D284 0F84 0A01000>je NOTEPAD.0040D394
0040D28F FF95 004B440>call dword ptr ss:[ebp 444B00] ; kernel32.GetModuleHandleA
0040D295 85C0 test eax, eax
0040D297 75 07 jnz short NOTEPAD.0040D2A0
0040D299 53 push ebx
0040D29A FF95 044B440>call dword ptr ss:[ebp 444B04]
.............................................................
0040D370 8907 mov dword ptr ds:[edi], eax
0040D372 8385 F03F440>add dword ptr ss:[ebp 443FF0], 4
0040D379 ^ E9 32FFFFFF jmp NOTEPAD.0040D2B0 往回跳
0040D37E 8906 mov dword ptr ds:[esi], eax F4 ; NOTEPAD.004061CC
0040D380 8946 0C mov dword ptr ds:[esi C], eax
0040D383 8946 10 mov dword ptr ds:[esi 10], eax
0040D386 83C6 14 add esi, 14
0040D389 8B95 FC49440>mov edx, dword ptr ss:[ebp 4449F>
0040D38F ^ E9 EBFEFFFF jmp NOTEPAD.0040D27F 往回跳
0040D394 8B85 AD39440>mov eax, dword ptr ss:[ebp 4439A>F4下来。
0040D39A 50 push eax
0040D39B 0385 FC49440>add eax, dword ptr ss:[ebp 4449F>
0040D3A1 59 pop ecx
0040D3A2 0BC9 or ecx, ecx
0040D3A4 8985 E63C440>mov dword ptr ss:[ebp 443CE6], e>
0040D3AA 61 popad 看到这个,入口就在附近。
0040D3AB /75 08 jnz short NOTEPAD.0040D3B5
0040D3AD |B8 01000000 mov eax, 1
0040D3B2 |C2 0C00 retn 0C
0040D3B5 \68 CC104000 push NOTEPAD.004010CC 放入入口值4010CC
0040D3BA C3 retn 返回。
004010CC 55 push ebp 004010CC 程序跨段,并且经过了PoPad关键字。我们再这里用Od的Dump插件直接脱壳。
004010CD 8BEC mov ebp, esp
004010CF 83EC 44 sub esp, 44
004010D2 56 push esi
004010D3 FF15 E463400>call dword ptr ds:[4063E4] ; kernel32.GetCommandLineA
004010D9 8BF0 mov esi, eax
004010DB 8A00 mov al, byte ptr ds:[eax]
004010DD 3C 22 cmp al, 22
重建输入表时,插件有两个选项。Method2重建输入表很快,脱壳后运行率高。Method1重建输入表慢,脱壳后运行率较低。不过本程序用Method2重建输入表无法运行,Method1重建输入表后程序可直接运行。
更多精彩内容其他人还在看

破解Oracle数据库的密码

要连接远程的 Oracle 数据库,需要知道 SID,用户名, 密码,当然还有最重要的 IP 地址。SID 如果被管理 员修改的话,可以利用 sidguess 来进行破解,速度非常的快,至于成功与否,就要看你的字典配置了。破解 效果如图 1。   图 1
收藏 0 赞 0 分享

破解CMOS密码的四种方法

1.简单的DOS下DEBUG破解程序:   用软盘启动进入DOS下,执行Debug程序(你没有,那得去拷贝一个啊)   1)debug   o 70 2e (回车)   o 71 00 (回车)   o 70 2f (回车)
收藏 0 赞 0 分享

轻松破解无线网络WEP密码下篇

上期为各位介绍了将自己的网卡重新安装驱动,以便使用无线网络检测及WEP解密工具。当我们把网卡驱动更新完毕后,我们再来看看如何找出已经禁用了SSID号广播的无线网络以及进行WEP解密工作。   一、使用airodump抓取无线网络数据包并破解SSID名称:   
收藏 0 赞 0 分享

简单破解“高强度文件夹加密大师”

今天我们社团学弟拿了一个高强度文件夹加密大师给社长试试,说是一个这加密文件夹很好的东西,可以把私藏的物品放在文件夹然后加密文件夹。我处于好奇也跟了上去看看。他又说,这是他花了好长时间才找到的一个不错的东西,还说网络上没有比这个还好的加密文件夹软件了
收藏 0 赞 0 分享

在KDE环境下安装GnuPG加密软件

大多数人以前没有使用过加密技术,我记录了在Mandrake 10.0发行版中KDE环境下创建我的公/私钥的过程,我将这些步骤记录下来了,没有使用到命令行,其linux发行版可能更容易安装。   首先你得在纸上创建你的密码,密码的长度没有限制,你应该小心选择,你可以使用空
收藏 0 赞 0 分享

轻松破解无线网络WEP密码上篇

近些年无线技术发展迅速,越来越多的用户使用无线设备在自己家建立起无线网络,通过搭建无线网络可以在家里的每个角落使用笔记本和无线网卡访问internet。有很多文章都向大家介绍了无线安全之中的通过设置WEP加密来保证其他计算机以及非法用户无法连接我们建立的无线
收藏 0 赞 0 分享

简述加密和数字签名的区别

什么是加密?   用非常基本的词汇说,加密是一种以密码方式发送信息的方法。只有拥有正确密钥的人才能解开这个信息的密码。对于其他人来说,这个信息看起来就像是一系列随机的字母、数字和符号。如果你要发送不应该让其他人看的敏感信息时,加密是特别重要的。由于
收藏 0 赞 0 分享

介绍几款“加密”软件的破解方法

现在网络上流行很多文件夹加密和文件加密的所谓加密软件,很多都是个人根据开源代码编写的程序,多数都是利用windows技巧实现的(最常见的就是将文件隐藏到回收站,万一你不小心删除了回收站或者重装了系统,那就只有哭了),最受不了的就是他们还都号称自己是什么“
收藏 0 赞 0 分享

加密全接触

经过陈冠希的艳照门事件之后,相信各位网友都对自己电脑里的一些隐私文件的保存问题有了更高的安全要求(不吃亏不知道补牢)。无论是黑客入侵、电脑丢失、电脑送修等都可能会导致自己的隐私文件泄露。为了避免这些问题,最方便快捷的方法就是对我们的隐私文件进行加密处理
收藏 0 赞 0 分享

破解Rar加密文件的方法

(1)了解破解rar加密文件方面的相关知识 (2)使用工具软件Advanced RAR Password Recovery 1.11破解rar加密文件 对于一些安全意识比较强的人来说,一般都会对文件进行加密,例如使用rar自带的加密功能进行加密,如果偶然获取了
收藏 0 赞 0 分享
查看更多