<第二课 SEH技术>SEH脚本规避技术
其实,SEH挺死的,它的结构和原理在看雪已经被各位大侠研究透了,核心关键是抓住
SEH的就是异常处理的句柄,它让异常的程序能回归进入正常的流程.我这里要强调一点,
请小心使用你的硬件断点.至于为什么你去看SEH原理.所以请大家都检查一下OD,看选项-调试一栏
中,不要钩上硬件断点,否则你每次F7和F8都是下的硬件断点.硬件断点最好在需要的时候再下.
<第六课 寻找OEP>
(1)根据跨段指令寻找OEP和根据堆栈平衡原理找OEP
ESP定律的发现和不断的完善是脱壳界一个重大进步,我们知道,壳无论怎么玩都是要交回原运行环境给程序,这样就暴露出它的软肋,我们定位好堆栈的数据,只要某段时刻一旦两个环境重合,就说明壳转了一圈回到了初始的环境,即便它不马上跳去OEP.但是,从堆栈平衡的原理来说它完成了它的一个轮回.原理上来说,只要我们能熟练的把握好<堆栈平衡原理>,那么你就能够在各种壳的风口浪尖上不走迷失了方向.我个人也认为<堆栈平衡原理>是对付壳的一个重大武器,我们可以不断的在这个基础上进行深化和突破.
我们常常遇见ESP定理"失效"的时候,其实,它并没有失效,而是你不要把ESP定理机械的理解为就是OEP处,,就像我们知道的两点决定一线一样简单的定律,你只是简单的想成一根线,那么,你还能对付考大学路上的题海么? :)
真正掌握ESP定律,真正吸取ESP的精髓,壳等待你的就是你无比尖锐的利剑...
我曾经用ESP原理破掉了90%的壳,一个很简单的方法,我写过一个程序,就死死盯住原始环境,你走多少次我记录多少次,然后把纪录一看再作些工作统计一下,OEP绝大部分原形毕露...方法笨是笨点,但找OEP准确率太高了.
这里是一个简单的ESP定律脚本,主要是对付一些简单的压缩壳和保护壳,毕竟是教学,就不把它写复杂了.
这里用了几个小技巧就是靠单步来寻找pushad,并且避开当前就是pushad.并且还原堆栈以前的状态.
由于是脚本直接用指令改了EIP,所以,屏幕并没有刷屏,大家要双击一下EIP就是可以看见堆栈还原后的状态了.
脚本三:ESP定律
//=========================================================================
Start:
msgyn "你是选择pushad/popad方式吗(是)?还是狭义ESP方式(否)"
cmp $RESULT,1
jne esp
mov tmp,[eip],1
cmp tmp,60 //比较当前指令是否是pushad(60)如果是转ESP处理方式
je esp
findpushad: //如果不是就一直找到pushad(60)的地址
find eip,#60#
cmp $RESULT,0
je findtmp
mov tmp,[eip],1
cmp tmp,60
jne findok
sti
jmp esp
findtmp:
sti
jmp findpushad
findok:
bp $RESULT
esto
bc $RESULT
esp:
mov tmp,esp
sub tmp,4
sti
bphws tmp,"w"
esto
bphwcall
preop eip //向上还原堆栈状态.
mov oep,$RESULT
add esp,4
mov eip,oep
msg "你已经到达ESP平衡处"
end:
ret // 结束脚本
//==============================================================
(3)根据编译语言特点找OEP
这个没有什么可教学的,就是需要你平时在计算机里面搜集一下各种没有加过壳的小程序,建立常规程序的搜集库,这些小文件可以很好的教你如何识别OEP的规律,各类语言编译的文件入口点都有一些规律的,在于你是否熟悉它,千变万化不离其宗.重要的是现在壳开始大规模偷OEP的头了,这样就很难用一般方法来简单定位OEP了,偷归偷,可环境它不能乱来,它只能来仿真以前的语句来实现被偷OEP的运行模式,壳现在的确还没有达到IA高度智能化的境界.比如我们可以知道VC5-6有一些版本的首个API就是调用GetVersion这个函数,可现在的壳大部分是把这个call给偷的没有影了,怎么办???
呵呵,小猫腻,我们用脚本来一句就可以定位它.
tocnd "eax == 0A280105"
只要是VC5-6某些带GetVision的版本的程序,它一定要返回固定的版本号(只要你机器装好了XP操作系统这个0A280105就一定是它,是2000的话你自己查一下),机器是傻的人是活的,包裹的再好你也要漏一丝缝,Themida就是被我用这个简单的方法在GetVersion这个call中锁的死死的,不管你走多少步,我对照寄存器环境的变换,就可以锁死你的VM在干什么!实在懒得在IDA中分析了,就这个方法破花指令和VM是特别有效的.
(小提示:这些VC5-VC6的程序,你只要OD能完整的跑一次,就可以用我这个方法跑到GetVersion这个CALL上不管它怎么偷,当然你的CPU要够强劲,剩下的事情你可以去看连续剧了,慢是慢点,剩心剩事,顺便还可以把oep被偷的头记录的完完整整)
| 另类破解鸽子连接密码 | 03-21 | |
| 教菜鸟写注册机 | 12-27 | |
| QQ聊天记录察看器 5.2算法分析 | 12-04 | |
| 如何汉化一个软件 | 12-02 | |
| 扭曲变换加密 【目前防止软件被破 | 11-02 | |
| 破解利器Olldbg脚本教学(二)- | 10-31 | |
| 破解利器Olldbg脚本教学(一)- | 10-30 | |
| 破解|利器|ollydbg|教学|Run tra | 10-28 | |
| 破解WebEasyMail v3.6.2.1 企业版 | 10-24 | |
| 破解利器OllyDBG入门系列(五)- | 10-18 | |
| 破解利器OllyDBG入门系列(四)- | 10-17 | |
| 揭开高级游戏黑客的面纱,轻松打 | 10-17 | |