能力值:
( LV2,RANK:10 )
|
-
-
2 楼
刚才试了试 也搞不定 都说用ESP到OEP
我试了也不行啊
0146C636 6A 58 push 0x58
0146C638 68 48614E01 push 1.014E6148
0146C63D E8 7A110000 call 1.0146D7BC
0146C642 33F6 xor esi,esi
0146C644 8975 FC mov dword ptr ss:[ebp-0x4],esi
0146C647 8D45 98 lea eax,dword ptr ss:[ebp-0x68]
0146C64A 50 push eax
0146C64B FF15 04F44901 call dword ptr ds:[0x149F404] ; kernel32.GetStartupInfoA
0146C651 6A FE push -0x2
0146C653 5F pop edi
0146C654 897D FC mov dword ptr ss:[ebp-0x4],edi
0146C657 B8 4D5A0000 mov eax,0x5A4D
0146C65C 66:3905 0000340>cmp word ptr ds:[0x1340000],ax
0146C663 75 38 jnz short 1.0146C69D
0146C665 A1 3C003401 mov eax,dword ptr ds:[0x134003C]
|
能力值:
( LV4,RANK:50 )
|
-
-
3 楼
|
能力值:
( LV4,RANK:50 )
|
-
-
4 楼
ps:没优化没整合 程序可能有点大。。。。。
|
能力值:
( LV9,RANK:270 )
|
-
-
5 楼
1. 脱壳
我是写脚本脱的。应该感谢楼主,发现原来的脚本在还原资源数据时犯了一个低级的严重错误!貌视 《UPX完美脱壳脚本》也存在同样的BUG。

这样,两个ASPack的区段就完全去掉了,对比脱壳前后的文件大小和区段信息:
[FONT="Courier"]2013-09-11 22:18 947,872 1.exe
2014-04-11 17:02 2,902,016 1_UnPacked.exe
Number Name VirtSize RVA PhysSize Offset Flag
1 .text 0015E000 00001000 0008F800 00000400 E0000060
2 .rdata 0004F000 0015F000 00012E00 0008FC00 C0000040
3 .data 0001E000 001AE000 00005600 000A2A00 C0000040
4 .rsrc 000E1000 001CC000 00023200 000A8000 C0000040
5 .reloc 00028000 002AD000 0000CC00 000CB200 C2000040
6 .aspack 0000E000 002D5000 0000DE00 000D7E00 E0000060
7 .adata 00001000 002E3000 00000000 000E5C00 E0000040
Number Name VirtSize RVA PhysSize Offset Flag
1 .text 0015E000 00001000 0015DE00 00000400 60000020
2 .rdata 0004F000 0015F000 0004E800 0015E200 40000040
3 .data 0001E000 001AE000 0000F800 001ACA00 C0000040
4 .rsrc 000E1000 001CC000 000E0A00 001BC200 C0000040
5 .reloc 00028000 002AD000 00027C00 0029CC00 C2000040[/FONT]
2. 修补文件自校验
原程序是经数字签名的,有自校验的代码:
[FONT="Courier"]0041AFCA 68 04010000 PUSH 0x104 ; /BufSize = 104 (260.)
0041AFCF 8D4C24 58 LEA ECX, DWORD PTR [ESP+0x58] ; |
0041AFD3 51 PUSH ECX ; |PathBuffer
0041AFD4 6A 00 PUSH 0x0 ; |hModule = NULL
0041AFD6 FF15 1CF45500 CALL NEAR DWORD PTR [<&KERNEL32.GetModuleFileNameA>] ; \GetModuleFileNameA
0041AFDC 8D5424 54 LEA EDX, DWORD PTR [ESP+0x54]
0041AFE0 52 PUSH EDX ; /Arg1
0041AFE1 E8 BACB0000 CALL 00427BA0 ; \1_UnPack.00427BA0
0041AFE6 A1 BC9E5C00 MOV EAX, DWORD PTR [0x5C9EBC]
0041AFEB 83C4 04 ADD ESP, 0x4
0041AFEE 68 A08C5800 PUSH 00588CA0 ; /Arg2 = 00588CA0 ASCII "2E3E39164832021EA8FE7DDB0C732E4D"
0041AFF3 50 PUSH EAX ; |Arg1 => 00000000
0041AFF4 E8 C9DA1000 CALL 00528AC2 ; \1_UnPack.00528AC2
0041AFF9 83C4 08 ADD ESP, 0x8
0041AFFC 85C0 TEST EAX, EAX
0041AFFE 0F95C0 SETNE AL
0041B001 84C0 TEST AL, AL
0041B003 0F84 1C010000 JE 0041B125 ; <- *** JUST Patch this!!!
0041B009 6A 00 PUSH 0x0 ; /Arg3 = 00000000
0041B00B 6A 00 PUSH 0x0 ; |Arg2 = 00000000
0041B00D 68 C48C5800 PUSH 00588CC4 ; |Arg1 = 00588CC4
0041B012 E8 0B4C0100 CALL 0042FC22 ; \1_UnPack.0042FC22
0041B017 6A 01 PUSH 0x1 ; /IsShown = 0x1
0041B019 6A 00 PUSH 0x0 ; |DefDir = NULL
0041B01B 6A 00 PUSH 0x0 ; |Parameters = NULL
0041B01D 68 F88C5800 PUSH 00588CF8 ; |FileName = "bc6K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4g2H3j5h3&6Q4x3X3g2U0j5#2)9J5c8Y4c8G2L8$3I4K6i4K6u0r3N6r3g2K6N6q4)9J5c8V1y4Z5K9i4m8q4j5i4y4&6i4K6u0W2K9s2c8E0L8l9`.`."
0041B022 68 248D5800 PUSH 00588D24 ; |Operation = "open"
0041B027 6A 00 PUSH 0x0 ; |hWnd = NULL
0041B029 FF15 0CF55500 CALL NEAR DWORD PTR [<&SHELL32.ShellExecuteA>] ; \ShellExecuteA
...[/FONT]
CALL 00528AC2会出对话框,提示“程序已被非法篡改,运行失败...”,点“确定”后,SHELL32.ShellExecuteA将打开程序下载页面。
将0041B003处修改半个字节就OK了。
[FONT="Courier"]0041B003 0F85 1C010000 JNZ 0041B125[/FONT]
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
我也是楼主的问题,一样的壳,附加数据也按教程做了,运行起来CPU百分百,我也是新手,高手能不能帮忙看看
|
能力值:
( LV12,RANK:2670 )
|
-
-
7 楼
|
能力值:
( LV9,RANK:270 )
|
-
-
8 楼
|
能力值:
( LV9,RANK:270 )
|
-
-
9 楼
昨天下来看了一下,应用名称:"Sws AspWebServer v2.3(标准版)"。
有趣的部分在脱壳后,重点在附加数据,通过“ 网络盒子(NexBox)”实现。Overlay需要解密,用于解密的Key是和原文件的校验值相关的,即脱壳后Key不正确,进入解密死循环。
注意Overlay的最后0xC字节,含两个文件指针(脱壳后需调整);一个标志"9465"。脱壳后如果忘记附加Overlay或标志不正确,将进入NexBox控制台。
|
|
|