【脱文标题】 三次内存断点法快速搞定Telock0.96+Aspack两层壳
【脱文作者】 weiyi75[Dfcg] 【作者邮箱】 weiyi75@sohu.com 【作者主页】 Dfcg官方大本营 【使用工具】 Peid,Ollydbg,LoadPe,Imprec1.42,Freeres 【破解平台】 Win2000/XP 【软件名称】 系统管家 V2.71 【下载地址】 http://www.skycn.com/soft/11570.html 【软件简介】 系统管家是一款强大的操作系统设置软件。个性化的设置满足初学者及设置高手们的需求。系统管家不但为您提供从桌面、个性、安全、网络、优化等方面的设置,它还包揽了系统注册表的清理、维护、备份及还原,系统垃圾文件、软件、ActiveX无效组件的清理及维护等工作。您是否还在为系统需要同时安装多种设置、维护软件互补而烦恼?系统管家可以为您的Windows98/2000/ME/XP/2003操作系统提供全方位的服务!系统管家内置的系统信息检测可显示操作系统及硬件设备的的大量信息,并且集合了进程管理、内存整理工具软件。目前系统管家提供了桌面设置、开始菜单、任务栏、输入法、窗口界面、系统信息、OEM信息、个性文件夹、安全设置、多用户、密码策略、控制面板、安全视窗、注册表备份/还原、磁盘隐藏、伪装文件、隐藏特殊项目、自动运行、系统启动、文件系统、存储系统、程序加速、多媒体、网络加速、IE浏览器、后台服务、注册表清理、磁盘清理、软件清理、组件清理等功能设置。 【软件大小】 1852 KB 【加壳方式】 Telock0.96+Aspack 【脱壳声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:) -------------------------------------------------------------------------------- 【脱壳内容】
首先Peid查壳,tElock 0.96 -> tE!,然后用OD载入程序,Alt+M查看区段,发现里层还有一层Aspack。
Telock0.98我们在进阶篇看过,比较麻烦,断点不能乱下,如普通Int3断点,硬件断点都不能下。但还是可以通过内存断点中断的,Telock0.96较Telock0.98较弱。
OD载入程序,不忽略无效指令异常和内存异常。
首先火力探测Telock有一次内存异常和2次无效指令异常然后程序运行。
重新载入程序。
0053CBA2 >^\E9 59E4FFFF JMP NSSetWin.0053B000 //外壳入口 0053CBA7 0000 ADD BYTE PTR DS:[EAX],AL 0053CBA9 0000 ADD BYTE PTR DS:[EAX],AL 0053CBAB 0000 ADD BYTE PTR DS:[EAX],AL 0053CBAD 00D3 ADD BL,DL 0053CBAF 2BA3 0FEECB13 SUB ESP,DWORD PTR DS:[EBX+13CBEE0F] 0053CBB5 0000 ADD BYTE PTR DS:[EAX],AL 0053CBB7 0000 ADD BYTE PTR DS:[EAX],AL 0053CBB9 0000 ADD BYTE PTR DS:[EAX],AL 0053CBBB 0000 ADD BYTE PTR DS:[EAX],AL 0053CBBD 000E ADD BYTE PTR DS:[ESI],CL 0053CBBF CC INT3 ....................................................................
无效指令异常,必须Shift+F9过
0053B6A8 8DC0 LEA EAX,EAX ; 非法使用寄存器 0053B6AA 74 03 JE SHORT NSSetWin.0053B6AF 0053B6AC CD 20 INT 20 0053B6AE 64:67:8F06 0000 POP DWORD PTR FS:[0] 0053B6B4 EB 02 JMP SHORT NSSetWin.0053B6B8 0053B6B6 CD 20 INT 20 0053B6B8 59 POP ECX 0053B6B9 61 POPAD 0053B6BA F5 CMC 0053B6BB 8D7415 00 LEA ESI,DWORD PTR SS:[EBP+EDX] 0053B6BF 83C2 22 ADD EDX,22 0053B6C2 8BFE MOV EDI,ESI 0053B6C4 B9 80120000 MOV ECX,1280 0053B6C9 2ADB SUB BL,BL 0053B6CB AC LODS BYTE PTR DS:[ESI] 0053B6CC 32C3 XOR AL,BL 0053B6CE FEC0 INC AL ....................................................................
内存异常,Shift+F9
0053BBA6 CD 68 INT 68 0053BBA8 66:05 7B0C ADD AX,0C7B 0053BBAC 66:48 DEC AX 0053BBAE 74 55 JE SHORT NSSetWin.0053BC05 0053BBB0 8D85 450B0000 LEA EAX,DWORD PTR SS:[EBP+B45] 0053BBB6 894424 04 MOV DWORD PTR SS:[ESP+4],EAX 0053BBBA 64:67:8926 0000 MOV DWORD PTR FS:[0],ESP 0053BBC0 EB 1F JMP SHORT NSSetWin.0053BBE1 0053BBC2 CD 20 INT 20 0053BBC4 8B6424 08 MOV ESP,DWORD PTR SS:[ESP+8] 0053BBC8 8B6C24 08 MOV EBP,DWORD PTR SS:[ESP+8] 0053BBCC 8D85 7A0B0000 LEA EAX,DWORD PTR SS:[EBP+B7A] 0053BBD2 50 PUSH EAX 0053BBD3 EB 01 JMP SHORT NSSetWin.0053BBD6 0053BBD5 E8 81AD291C CALL 1C7D695B 0053BBDA 0000 ADD BYTE PTR DS:[EAX],AL 0053BBDC E7 25 OUT 25,EAX ; I/O 命令 0053BBDE A9 FEC3EB01 TEST EAX,1EBC3FE 0053BBE3 EB 33 JMP SHORT NSSetWin.0053BC18 ....................................................................
无效指令异常
0053C6BD 8DC0 LEA EAX,EAX ; 非法使用寄存器 0053C6BF EB 01 JMP SHORT NSSetWin.0053C6C2 0053C6C1 EB 68 JMP SHORT NSSetWin.0053C72B 0053C6C3 33C0 XOR EAX,EAX 0053C6C5 - EB FE JMP SHORT NSSetWin.0053C6C5 0053C6C7 FFE4 JMP ESP 0053C6C9 CD 20 INT 20 0053C6CB 8B6424 08 MOV ESP,DWORD PTR SS:[ESP+8] 0053C6CF 33C0 XOR EAX,EAX 0053C6D1 FF6424 08 JMP DWORD PTR SS:[ESP+8] 0053C6D5 - E9 58508304 JMP 04D71732 0053C6DA 24 37 AND AL,37 0053C6DC FFE0 JMP EAX 0053C6DE CD 20 INT 20 0053C6E0 64:8F00 POP DWORD PTR FS:[EAX] 0053C6E3 58 POP EAX 0053C6E4 EB 02 JMP SHORT NSSetWin.0053C6E8 ....................................................................
继续Shift+F9就略过第二层壳Aspack运行了。
Alt+M打开内存镜像。
内存镜像
地址 大小 Owner 区段 包含 类型 访问 初始访问 映射为
00400000 00001000 NSSetWin PE header Imag RW RWE 00401000 00001000 NSSetWin .text code Imag RW RWE 00402000 00001000 NSSetWin .rdata data Imag RW RWE 00403000 00133000 NSSetWin .ecode Imag RW RWE 00536000 00002000 NSSetWin .rsrc resources Imag RW RWE 00538000 00002000 NSSetWin .aspack Imag RW RWE //直接去Aspack必经之路下内存访问断点,Shift+F9运行立即中断。 0053A000 00001000 NSSetWin .adata Imag RW RWE 0053B000 00004000 NSSetWin SFX,imports, Imag RW RWE
当前位置0053C6E4还在0053B000Telock外壳段内,我们知道组合壳或单层壳的解压顺序是由下往上运行的。
00538001 60 PUSHAD //进入第二层壳Aspack入口 00538002 E8 03000000 CALL NSSetWin.0053800A 可以到这里后用esp定律到Aspack出口。 00538007 - E9 EB045D45 JMP 45B084F7 0053800C 55 PUSH EBP 0053800D C3 RETN 0053800E E8 01000000 CALL NSSetWin.00538014 00538013 EB 5D JMP SHORT NSSetWin.00538072 00538015 BB EDFFFFFF MOV EBX,-13 0053801A 03DD ADD EBX,EBP 0053801C 81EB 00801300 SUB EBX,138000 00538022 83BD 22040000 0>CMP DWORD PTR SS:[EBP+422],0 00538029 899D 22040000 MOV DWORD PTR SS:[EBP+422],EBX 0053802F 0F85 65030000 JNZ NSSetWin.0053839A 00538035 8D85 2E040000 LEA EAX,DWORD PTR SS:[EBP+42E] 0053803B 50 PUSH EAX 0053803C FF95 4D0F0000 CALL DWORD PTR SS:[EBP+F4D] ..................................................................
再次
Alt+M打开内存镜像。
内存镜像
地址 大小 Owner 区段 包含 类型 访问 初始访问 映射为
00400000 00001000 NSSetWin PE header Imag RW RWE 00401000 00001000 NSSetWin .text code Imag RW RWE 00402000 00001000 NSSetWin .rdata data Imag RW RWE //先在data过渡段下内存访问断点,F9运行。 00403000 00133000 NSSetWin .ecode Imag RW RWE 00536000 00002000 NSSetWin .rsrc resources Imag RW RWE 00538000 00002000 NSSetWin .aspack Imag RW RWE 0053A000 00001000 NSSetWin .adata Imag RW RWE 0053B000 00004000 NSSetWin SFX,imports, Imag RW RWE ..................................................................
0053875F 8A18 MOV BL,BYTE PTR DS:[EAX] //内存访问中断。 00538761 40 INC EAX 00538762 885C24 0C MOV BYTE PTR SS:[ESP+C],BL 00538766 8902 MOV DWORD PTR DS:[EDX],EAX 00538768 8B42 08 MOV EAX,DWORD PTR DS:[EDX+8] 0053876B 8B7C24 0C MOV EDI,DWORD PTR SS:[ESP+C] 0053876F C1E0 08 SHL EAX,8 00538772 81E7 FF000000 AND EDI,0FF 00538778 0BC7 OR EAX,EDI 0053877A 8B7A 04 MOV EDI,DWORD PTR DS:[EDX+4] 0053877D 03FE ADD EDI,ESI 0053877F 8942 08 MOV DWORD PTR DS:[EDX+8],EAX 00538782 8BC7 MOV EAX,EDI 00538784 897A 04 MOV DWORD PTR DS:[EDX+4],EDI 00538787 3BC1 CMP EAX,ECX 00538789 ^ 73 D2 JNB SHORT NSSetWin.0053875D ..................................................................
再次
Alt+M打开内存镜像。
内存镜像
地址 大小 Owner 区段 包含 类型 访问 初始访问 映射为
00400000 00001000 NSSetWin PE header Imag RW RWE 00401000 00001000 NSSetWin .text code Imag RW RWE //对401000 Code段下内存访问断点,F9运行。 00402000 00001000 NSSetWin .rdata data Imag RW RWE 00403000 00133000 NSSetWin .ecode Imag RW RWE 00536000 00002000 NSSetWin .rsrc resources Imag RW RWE 00538000 00002000 NSSetWin .aspack Imag RW RWE 0053A000 00001000 NSSetWin .adata Imag RW RWE 0053B000 00004000 NSSetWin SFX,imports, Imag RW RWE ..................................................................
[1] [2] [3] 下一页 |