关于只凭感觉脱壳的一些经验
呵呵,晚辈无知,令各位大侠见笑了。如果你是位脱壳高手,那就先别看了。呵呵,很弱的
首先OD载入,要先F9看看,如果蓝屏,那算了,太猛了。如果有异常,试试SHIFT+F9
如果检测出来的话,先去搞个插件回来
如果OD直接退出,在命令行下 bp OutputStringA+1,呵呵,停住以后手动POP一下,改EIP为RETN,然后继续
如果有个CALL,首先判断CALL的远近,如果CALL的特别远,F8走过。如果CALL的值=后面一条指令的地址,呵呵F8就得丢了,F7进。如果CALL的比较一般,下面是比较“花”的东西,SHIFT+上下看看,能不能“翻译”出来,“翻译”出来,就F4到花指令的头字节,不出来,就是未压缩数据,还是跟进比较好
其他的……一般的壳用这几个试试
bp VirtualAlloc+1
bp VirtualProtect+1
bp GetTickCount+1 ;ANTI-反调试
bp OutputStringA+1 ;ANTI-反调试
bp GetModuleHandle+1(忘了有没有A了,试试) ;这个特别好用,首先是壳里面有可能会有,其次主程序里肯定会调这个,一个RETN就知道OEP了
bp LoadLibrary+1 ;同上,处理输入表常用
bp GetProcAddress+1 ;同上,处理输入表常用
呵呵。还有,有的壳先下命令 D EIP,在第一个字节下硬件访问断点,F9,有的时候有意想不到的结果
呵呵,这是我总结的经验,也希望各位大牛一同分享,谢谢
补上回复的
======================
如果有哪个CALL下面跟着是未压缩的代码,F7跟
碰上循环(双跳),除了JMP以外,很多循环都试试F4到下一句.尤其是向上跳的
...
汗
主要都是简单壳
关于SEH:
异常发生后,看堆栈附近的"SE异常处理程序",CTRL+G到以后去找RETN,通常跟进领空,这时候
下命令 d 一般就是SEH之后的EIP
因为SEH有4个参数,第2个是CONTEXT,里面保存跳后的寄存器值,而EIP又是0E8H,所以...
呵呵,当然也可以直接找 ... ...[...+0e8](如inc byte ptr,add byte ptr等等,不是固定的)
[ 本帖最后由 NONAME剑人 于 2008-9-19 19:13 编辑 ]
沙发
终于坐一回沙发,顶一下先 我很菜的还看不太懂啊 有的地方不太明白,先收起来。 学习了,多谢楼主共享 偶不懂啊,过来学习下了啊 不错,西西/:001 楼主很强啊感谢楼主分享这么好的经验/:good 很弱的,高手看了一定会笑话....
还有最近的
如果有哪个CALL下面跟着是未压缩的代码,F7跟
碰上循环(双跳),除了JMP以外,很多循环都试试F4到下一句.尤其是向上跳的
...
汗
主要都是简单壳
关于SEH:
异常发生后,看堆栈附近的"SE异常处理程序",CTRL+G到以后去找RETN,通常跟进领空,这时候
下命令 d 一般就是SEH之后的EIP
因为SEH有4个参数,第2个是CONTEXT,里面保存跳后的寄存器值,而EIP又是0E8H,所以...
呵呵,当然也可以直接找 ... ...[...+0e8](如inc byte ptr,add byte ptr等等,不是固定的) 很详细,留个记号学习!