脱壳Tmd1950 参阅a__p 大侠 笨虫虫动画
脱壳Tmd1950参阅a__p 大侠 笨虫虫动画Tmd1950 unpackme 新anti
http://www.unpack.cn/viewthread.php?tid=18423&extra=page%3D2
OD隐藏插件
http://www.unpack.cn/viewthread.php?tid=19109&extra=page%3D1
PhantOm plugin V1.20.by Hellsp@wn & Archer
http://hellspawn.nm.ru/works/PhantOm.plugin.1.20.zip
手脱Tmd1950 unpackme (已更新)
【文章标题】: 手脱Tmd1950 unpackme
【文章作者】: a__p
【作者邮箱】: [email protected]
【作者主页】: http://www.unpack.cn
【作者QQ号】: xxxxxxx
【软件名称】: test.exe
【软件大小】: 641 KB
【下载地址】:http://www.unpack.cn/viewthread.php?tid=18423&extra=page%3D2
【保护方式】: Themida/WinLicense V1.9.5.0
【使用工具】: OD修改版,LoadPE,ImportREC
【操作平台】: WINXP,WIN2003
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
脱壳大致流程:
1、代码段内存写入断点。
2、搜索代码:3985??????0?0F,改成JMP。
3、搜索代码:FFD3,上面4个JE改成NOP。
4、在ZwFreeVirtualMemory末尾下断。
5、在代码段下断就可以到OEP
废话不多说,配置好OD和插件,推荐用okdodo大侠的新版插件或者PhantOm plugin V1.20来隐
藏。
ollydbg修改无bug版 可调试tmd 1.950 pyg下载https://www.chinapyg.com/viewthread.php?
tid=29336&extra=page%3D1
Alt+M在代码段下内存写入断点,Shift+F9运行,遇到 rep 代码时F7+F8步过
0054351A F3:A4 REP MOVS BYTE PTR ES:,BYTE PTR DS:[>?
0054351C C685 3D204607 5>MOV BYTE PTR SS:,56
00543523 68 396D1FD4 PUSH D41F6D39
00543528 FFB5 C1234607 PUSH DWORD PTR SS:
00556B88 8F00 POP DWORD PTR DS:
00556B8A 51 PUSH ECX
00556B8B B9 00000000 MOV ECX,0
00556B90 01C1 ADD ECX,EAX
00556B92 8131 60585F23 XOR DWORD PTR DS:,235F5860
搜索代码:3985??????0?0F,改成JMP。
00554087 3985 752B4607 CMP DWORD PTR SS:,EAX
0055408D 0F84 80000000 JE test.00554113 ?
00554093 E9 10000000 JMP test.005540A8
00554098 8F ??? ; 未知命令
00554099 EE OUT DX,AL ; I/O 命令
0055409A 0B1C38 OR EBX,DWORD PTR DS:
搜索代码:FFD3,上面4个JE改成NOP。
005549AA F4 HLT ; 特权命令
005549AB^ 79 F5 JNS SHORT test.005549A2
005549AD FFD3 CALL EBX
005549AF F9 STC
0055498F 2BD9 SUB EBX,ECX
00554991 0F84 4D000000 JE test.005549E4 ?
00554997 F9 STC
00554998 8D9D D9FD5007 LEA EBX,DWORD PTR SS:
00554955 /0F84 89000000 JE test.005549E4 ?
0055495B |E9 11000000 JMP test.00554971
00554960 |46 INC ESI
00554961 |7B A3 JPO SHORT test.00554906
00554963 |F6447A 4F 1E TEST BYTE PTR DS:,1E
0055492A 2BD9 SUB EBX,ECX
0055492C 0F84 B2000000 JE test.005549E4 ?
00554932 FC CLD
00554933 8B9D 55274607 MOV EBX,DWORD PTR SS:
00554939 E9 10000000 JMP test.0055494E
005548E3 8B9D 9D074607 MOV EBX,DWORD PTR SS:
005548E9 E9 06000000 JMP test.005548F4
005548EE 137C1F 32 ADC EDI,DWORD PTR DS:
005548F2 8499 4B0F84E9 TEST BYTE PTR DS:,BL
005548F4 4B DEC EBX
005548F5 0F84 E9000000 JE test.005549E4 ?
005548FB 0F84 0E000000 JE test.0055490F
00554901 E9 09000000 JMP test.0055490F
00554906 B6 D8 MOV DH,0D8
做完上面以后,就可以Ctrl+G在ZwFreeVirtualMemory末尾下断了
7C92DA48 >B8 53000000 mov eax,53
7C92DA4D BA 0003FE7F mov edx,7FFE0300
7C92DA52 FF12 call dword ptr ds:
7C92DA54 C2 1000 retn 10
;这里F2
OK,这时候可以按F9运行了,在ZwFreeVirtualMemory末尾断下后(不要取消断点),F8单步返
回
00B08F2F 8BF8 MOV EDI,EAX
00B08F31 85FF TEST EDI,EDI
00B08F33 0F8C 68C60200 JL 00B355A1
00B08F39 33C0 XOR EAX,EAX
00556B90 01C1 ADD ECX,EAX
00556B92 8131 60585F23 XOR DWORD PTR DS:,235F5860
00556B98 59 POP ECX
004B6973 FF32 PUSH DWORD PTR DS: F8 ; kernel32.GetVersion
004B6975^ E9 F092FFFF JMP test.004AFC6A
004B697A 81EE 344B114A SUB ESI,4A114B34
004B6980 8B3C24 MOV EDI,DWORD PTR SS:
004B6983 83C4 04 ADD ESP,4
004B6986 81C6 02000000 ADD ESI,2
DS:=7C8111DA (kernel32.GetVersion) api
0040386B C8 1805EC ENTER 518,0EC 这里就是OEP了
0040386F 42 INC EDX
00403870^ 7D EC JGE SHORT test.0040385E
00403872 1ABC3C 0FA8DA56 SBB BH,BYTE PTR SS:
00403879 232D C4E52637 AND EBP,DWORD PTR DS:
0040387F 65:C6 ??? ; 未知命令
00403881 71 5B JNO SHORT test.004038DE
00403883 B8 DCE9A093 MOV EAX,93A0E9DC
00403888 83BD 9C55A7E1 7>CMP DWORD PTR SS:,7E
0040388F B9 B74F156F MOV ECX,6F154FB7
00403894 54 PUSH ESP
00403895 4B DEC EBX
00403896 5B POP EBX
00403897 33D2 XOR EDX,EDX
Microsoft Visual C++ 6.0 E语言
0040389F 55 push ebp 这里就是OEP了
004038A0 8BEC mov ebp,esp
004038A2 6A FF push -1
004038A4 68 F8724000 push 风火助理.004072F8
004038A9 68 04554000 push 风火助理.00405504
004038AE 64:A1 00000000 mov eax,dword ptr fs:
004038B4 50 push eax
004038B5 64:8925 00000000 mov dword ptr fs:,esp
004038BC 83EC 58 sub esp,58
004038BF 53 push ebx
004038C0 56 push esi
004038C1 57 push edi
004038C2 8965 E8 mov dword ptr ss:,esp
004038C5 FF15 48704000 call dword ptr ds:
004038CB 33D2 xor edx,edx
004038CD 8AD4 mov dl,ah
004038CF 8915 94BA4000 mov dword ptr ds:,edx
004038D5 8BC8 mov ecx,eax
004038D7 81E1 FF000000 and ecx,0FF
004038DD 890D 90BA4000 mov dword ptr ds:,ecx
004038E3 C1E1 08 shl ecx,8
004038E6 03CA add ecx,edx
004038E8 890D 8CBA4000 mov dword ptr ds:,ecx
55 8B EC 6A FF 68 00 71 40 00 68 64 4C 40 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC
58
53 56 57 89 65 E8 FF 15 6C 70 40 00
堆栈
0012FF80 0012FF2C
0012FF84 0012FFE0指向下一个 SEH 记录的指针
0012FF88 00404C64SE 处理器
0012FF8C 00407100test.00407100
0012FF90 FFFFFFFF
0012FF94 004F912Ftest.004F912F
0012FF98 004001D8ASCII " "
02700000 8BFF MOV EDI,EDI
02700002 60 PUSHAD
02700003 0FBFD8 MOVSX EBX,AX
02700006 B8 E5B2245A MOV EAX,5A24B2E5
02700234 E8 F301117A CALL kernel32.CreateRemoteThread
02700239 60 PUSHAD
0270023A 66:B8 8B16 MOV AX,168B
0270023E 9C PUSHFD
0270023F E9 0B000000 JMP 0270024F
02700244 67:14 BD ADC AL,0BD ; 多余前缀
02700247 B2 03 MOV DL,3
02700249 80B9 FE5FAC75 6>CMP BYTE PTR DS:,66
02700250 81F0 9836E906 XOR EAX,6E93698
02700256 0000 ADD BYTE PTR DS:,AL
02700258 00D6 ADD DH,DL
0270025A 57 PUSH EDI
0270025B 44 INC ESP
0270025C 2D 62F39D61 SUB EAX,619DF362
02700261 5D POP EBP
02700262 60 PUSHAD
02700263 66:8BD9 MOV BX,CX
02700266 50 PUSH EAX
02700267 52 PUSH EDX
02700268 0F31 RDTSC
0270026A E8 08000000 CALL 02700277
0270026F^ E0 99 LOOPDNE SHORT 0270020A
02700271 5E POP ESI
02700272 3F AAS
02700273 0C 55 OR AL,55
02700275 6A 5B PUSH 5B
02700277 5E POP ESI
02700278 5A POP EDX
02700279 58 POP EAX
0270027A 61 POPAD
0270027B C2 1800 RETN 18
0270027E 0000 ADD BYTE PTR DS:,AL
02700280 0000 ADD BYTE PTR DS:,AL
GetVersion
VB声明
Declare Function GetVersion Lib "kernel32" Alias "GetVersion" () As Long
说明
判断当前运行的Windows和DOS版本
返回值
Long,低16位包含了windows版本;低字节包含了主版本号(3代表windows 3.10,4代表nt 4.0);高字
节包含了两个数位的辅助版本号(10代表windows 3.10,95代表windows 95)。高16位则包含了平台信息
。针对windows NT,高位设为0;针对windows for workgroups上运行的Win32s,则高位为1
注解
在win32下,最好换用GetVersionEx函数。在win32下,高字不会返回DOS版本**** Hidden Message *****
[ 本帖最后由 hxqlky 于 2008-4-4 22:47 编辑 ] 好啊 看看/:011 这个不错
谢谢 学习了!不错!/:014 学习脱壳最重要啊,支持 修复很重要!~~~~ 支持分享 下来学习! 强人做的脱壳../:001 这个不错
谢谢 非常不错,支持兄弟!!学习了!