附件中含加壳文件和本人脱壳的文件。加壳文件为龙族兄弟的作品。本人脱壳后有些问题,请各位大侠指教一二。
00282551 /75 0A JNZ SHORT 0028255D
00282553 |8B52 04 MOV EDX,DWORD PTR DS:[EDX+4]
00282556 |C742 50 0010000>MOV DWORD PTR DS:[EDX+50],1000
0028255D \89AD 17090000 MOV DWORD PTR SS:[EBP+917],EBP
00282563 8B85 87090000 MOV EAX,DWORD PTR SS:[EBP+987]
00282569 0385 73090000 ADD EAX,DWORD PTR SS:[EBP+973]
0028256F - FFE0 JMP NEAR EAX ; notepad.01006420////到入口。
00282571 50 PUSH EAX
00282572 8BC4 MOV EAX,ESP
00282574 60 PUSHAD
加密IAT处:
0028251A 8BDE MOV EBX,ESI////修改此处。
0028251C 2BD8 SUB EBX,EAX
0028251E 8958 FC MOV DWORD PTR DS:[EAX-4],EBX ; notepad.010012D8
00282521 83C7 08 ADD EDI,8
00282524 ^ EB E7 JMP SHORT 0028250D
00282526 64:FF35 30000000 PUSH DWORD PTR FS:[30]
修改为:
0028251A /E9 E1280000 JMP 00284E00
0028251F |90 NOP
00282520 |90 NOP
Path代码:
00284E00 8B5F 04 MOV EBX,DWORD PTR DS:[EDI+4]
00284E03 66:C740 FF FF15 MOV WORD PTR DS:[EAX-6],15FF
00284E09 8958 FD MOV DWORD PTR DS:[EAX-4],EBX
00284E0F ^ E9 0DD7FFFF JMP 00282521////跳回。
按上述方法Dump出来的文件不能正常运行。出错处:
010065F0 |$ 68 00000300 PUSH 30000
010065F5 |. 68 00000100 PUSH 10000 ; UNICODE "=::=::\"
010065FA |. E8 31000000 CALL dumped_.01006630////此Call进入后不能正常返回到010065FF处。
010065FF |. 83C4 08 ADD ESP,8
01006602 \. C3 RETN
而是一直运行到0100664E的异常处:
01006630 $ FF15 58110001 CALL NEAR DWORD PTR DS:[<&msvcrt._contro>; \_controlfp////这里不能返回010065FF处。而是直接经过下面4个CALL后到0100664E的异常处,然后出错。
01006636 $ FF15 E0120001 CALL NEAR DWORD PTR DS:[<&comdlg32.Print>; comdlg32.PrintDlgExW
0100663C $ FF15 CC120001 CALL NEAR DWORD PTR DS:[<&winspool.Close>; winspool.ClosePrinter
01006642 $ FF15 C4120001 CALL NEAR DWORD PTR DS:[<&winspool.GetPr>; winspool.GetPrinterDriverW
01006648 $ FF15 C8120001 CALL NEAR DWORD PTR DS:[<&winspool.OpenP>; winspool.OpenPrinterW
0100664E . CC INT3
0100664F . CC INT3
01006650 . 0000 ADD BYTE PTR DS:[EAX],AL
请各位大侠指教!
附件:unpackme.rar
[课程]Linux pwn 探索篇!