查壳利器:Peid最新完整特征库:UpKPEiDSign.V20090826.By.fly
详细介绍:01.增加新的PEiDSign,请不要调整特征库内Sign的排列次序
02.UpKPEiDSign.V20090826.By.fly[CUG].rAr PassWord:UpK
03.请不要把UpKPEiDSign与其他特征库合并,发现某些人拿到特征库后进行修改合并操作然后再打包散发
04.收录的几百条PEiDSign绝大部分都是fly亲手制作并验证的
05.由于伪装壳和其他原因,无法保证所有的Sign都可准确识别出目标壳信息
06.fly提醒您:PEiD侦壳信息仅仅提供参考作用,尽信书则不如无书
07.UpKPEiDSign使用方法:把userdb.txt释放于PEiD主程序目录下即可
08.欢迎大家自由转载UpKPEiDSign,但是请保持压缩包的完整性并注明出处
09.欢迎大家多来UpK论坛参与讨论交流,谢谢
猛击此处下载!
ExeInfo PE ver. 0.0.2.4 by A.S.L ( c ) 2006.03 – 2009.xx
___________________________________________________________________________
ExeInfo PE ver. 0.0.2.4 by A.S.L ( c ) 2006.03 – 2009.xx
freeware version for Windows XP
Windows 32 PE executable file checker , compilators, exe packers ….
with solve hint for unpack / internal exe tools / rippers
___________________________________________________________________________
猛击此处下载!
yoda’s Protector 1.3 -> Ashkbiz Danehkar 手脱笔记
普通壳的脱壳方法和脱壳技巧【转载】
常见脱壳知识:
1.PUSHAD (压栈) 代表程序的入口点
2.POPAD (出栈) 代表程序的出口点,与PUSHAD相对应,一般找到这个,说明OEP可能就在附近
3.OEP:程序的入口点,软件加壳就是隐藏了OEP(或者用了假的OEP),
只要我们找到程序真正的OEP,就可以立刻脱壳。
脱壳的几种方法:
方法一:单步跟踪
方法二:ESP定律脱壳
方法三:内存跟踪
方法四:跟踪出口法
方法五:最后一次异常法
方法六:懒人脱壳法
PEncrypt 4.0 Gamma / 4.0 Phi -> junkcode脱壳手记 [转载]
今天要脱的是PEncrypt 4.0加的壳,是一个记事本程序,这个记事本程序比较奇怪,令我的修复出现了一点点小的波折。
加壳的记事本程序下载地址: [点击浏览该文件:PEncrypt V4.0.rar]
首先PEID查壳,显示:PEncrypt 4.0 Gamma / 4.0 Phi -> junkcode [Overlay],有附加数据。然后用ollydbg载入,设置“调试选项”,在“异常”中,把所所有的勾都去掉,不要忽略异常。然后按shift+F9忽略异常运行,应该是按3次,这个记事本就运行了。
常见语言编写的exe入口点代码
Ddelphi:
55 PUSH EBP
8BEC MOV EBP,ESP
83C4 F0 ADD ESP,-10
B8 A86F4B00 MOV EAX,PE.004B6FA8
VC++
55 PUSH EBP
8BEC MOV EBP,ESP
83EC 44 SUB ESP,44
56 PUSH ESI
VB:
00401166 - FF25 6C104000 JMP DWORD PTR DS:[<&MSVBVM60.#100>] ; MSVBVM60.ThunRTMain
0040116C > 68 147C4000 PUSH PACKME.00407C14
00401171 E8 F0FFFFFF CALL <JMP.&MSVBVM60.#100>
00401176 0000 ADD BYTE PTR DS:[EAX],AL
00401178 0000 ADD BYTE PTR DS:[EAX],AL
0040117A 0000 ADD BYTE PTR DS:[EAX],AL
0040117C 3000 XOR BYTE PTR DS:[EAX],AL
BC++
0040163C > $ /EB 10 JMP SHORT BCLOCK.0040164E
0040163E |66 DB 66 ; CHAR 'f'
0040163F |62 DB 62 ; CHAR 'b'
00401640 |3A DB 3A ; CHAR ':'
00401641 |43 DB 43 ; CHAR 'C'
00401642 |2B DB 2B ; CHAR '+'
00401643 |2B DB 2B ; CHAR '+'
00401644 |48 DB 48 ; CHAR 'H'
00401645 |4F DB 4F ; CHAR 'O'
00401646 |4F DB 4F ; CHAR 'O'
00401647 |4B DB 4B ; CHAR 'K'
00401648 |90 NOP
00401649 |E9 DB E9
0040164A . |98E04E00 DD OFFSET BCLOCK.___CPPdebugHook
0040164E > \A1 8BE04E00 MOV EAX,DWORD PTR DS:[4EE08B]
00401653 . C1E0 02 SHL EAX,2
00401656 . A3 8FE04E00 MOV DWORD PTR DS:[4EE08F],EAX
0040165B . 52 PUSH EDX
0040165C . 6A 00 PUSH 0 ; /pModule = NULL
0040165E . E8 DFBC0E00 CALL <JMP.&KERNEL32.GetModuleHandleA> ; \GetModuleHandleA
00401663 . 8BD0 MOV EDX,EAX
Dasm:
00401000 >/$ 6A 00 PUSH 0 ; /pModule = NULL
00401002 |. E8 C50A0000 CALL <JMP.&KERNEL32.GetModuleHandleA> ; \GetModuleHandleA
00401007 |. A3 0C354000 MOV DWORD PTR DS:[40350C],EAX
0040100C |. E8 B50A0000 CALL <JMP.&KERNEL32.GetCommandLineA> ; [GetCommandLineA
00401011 |. A3 10354000 MOV DWORD PTR DS:[403510],EAX
00401016 |. 6A 0A PUSH 0A ; /Arg4 = 0000000A
00401018 |. FF35 10354000 PUSH DWORD PTR DS:[403510] ; |Arg3 = 00000000
0040101E |. 6A 00 PUSH 0 ; |Arg2 = 00000000
00401020 |. FF35 0C354000 PUSH DWORD PTR DS:[40350C] ; |Arg1 = 00000000