本帖最后由 2666fff 于 2011-6-28 11:25 编辑
LS传错了吧,是没有脱得啊。我附一个脱了的吧。
怎么说呢,其实这个程序脱不脱壳一样可以弄,因为所有判断什么的都不在源程序里,而是影射到了cmd.exe里。
调试起来有些难度,说一下方法吧:
OD附加原程序 “示例” 然后下断 BP CreateFileW 运行直到堆栈出现两次CMD.exe后的下一次。0012E1D0 7C814E05 /CALL 到 CreateFileW 来自 kernel32.7C814E00
0012E1D4 0012E228 |FileName = "G:\WINDOWS\system32\cmd.exe"
0012E1D8 80000000 |Access = GENERIC_READ
0012E1DC 00000005 |ShareMode = FILE_SHARE_READ|4
0012E1E0 00000000 |pSecurity = NULL
0012E1E4 00000003 |Mode = OPEN_EXISTING
0012E1E8 00000000 |Attributes = 0
0012E1EC 00000000 \hTemplateFile = NULL
这时候真正的窗口就出来了。
然后再开一个OD附加 cmd.exe
一定要让示例暂停,不然的话无法附加cmd.exe
在附加了cmd.exe的OD里 转到: 004012CB 83C4 10 add esp,0x10
004012CE 8945 FC mov dword ptr ss:[ebp-0x4],eax
004012D1 68 9DA64600 push cmd.0046A69D ; ASCII "123"
004012D6 FF75 FC push dword ptr ss:[ebp-0x4]
004012D9 E8 34FFFFFF call cmd.00401212
004012DE 83C4 08 add esp,0x8 ; eax置0
004012E1 83F8 00 cmp eax,0x0
004012E4 > B8 00000000 mov eax,0x0
004012E9 0F95C0 setne al
004012DE 这里下个断点,输入假吗后会运行到这里,然后将eax置0, 在继续运行就OK了。
这个方法很奇特,不常见,一般都是用dll来代替的,她这个用cmd,所以不好弄。
|