逆向分析反调试程序

1.先运行下正常
逆向分析反调试程序
2.打密码 密码错误
逆向分析反调试程序
3.用 OD 调试
发现报异常 说明做了反调试(OD不要用插件不然他会反反调试看不到)
逆向分析反调试程序
4.(这里要用到 win7了 因为 win10 报异常不知道在哪里)
win10效果

逆向分析反调试程序

逆向分析反调试程序
win7效果可以看出异常地址在哪里
逆向分析反调试程序
逆向分析反调试程序
逆向分析反调试程序
5.知道异常地址在哪了用ida静态分析(ida就好办多了这里直接用mac版7.0)
一看就知道是汇编写的
逆向分析反调试程序
6.开始分析
进回调函数
逆向分析反调试程序
一下就就看到异常地址
逆向分析反调试程序
往下面找一看就有个异常处理函数(怎么知道的写过调试器的一看就知道是个seh 不知道就查下SetUnhandledExceptionFilter)
逆向分析反调试程序
7.进入异常处理函数
进来有点懵 (还好ida强大)
逆向分析反调试程序
8.按快捷键c把当前数据转成汇编代码(光标放在函数名上)点yes
逆向分析反调试程序
逆向分析反调试程序
9.按p转成函数形势
逆向分析反调试程序
改下名字
逆向分析反调试程序
开始分析这个处理函数
其实是一个异常处理函数参数为(struct _EXCEPTION_POINTERS pExceptionInfo)
他取第一个字段 是一个结构体 PEXCEPTION_RECORD ExceptionRecord;
再在结构体取异常码ExceptionCode
然后取struct _EXCEPTION_POINTERS
pExceptionInfo的第二个字段 也就是线程上下文 修改寄存器值同时返回-1 说明重新从异常处理执行
在ida中要自己添加一个结构体(在结构体窗口 按ins键 有个addxxx按扭 是创建win就有的结构体 然后 ctrl +f 搜 PCONTEXT)
逆向分析反调试程序
逆向分析反调试程序
分析结果为
逆向分析反调试程序逆向分析反调试程序逆向分析反调试程序
根据处理函数所要修改的寄存器 然后在od里当执行到异常地址时把寄存器改掉
逆向分析反调试程序
如上图要改的寄存器有 edi 改为eax=0x40304e
esi修改成 400332a eip修改成40107f (修改eip直接在地址右键设置为新eip)
逆向分析反调试程序
逆向分析反调试程序逆向分析反调试程序
密码已经出来了 magic
逆向分析反调试程序
其实win10下也可以搞定
拖入od就断在oep处了 ctrl +g 转到 0x00401022 (回调函数地址)
逆向分析反调试程序
逆向分析反调试程序
逆向分析反调试程序

其它截图
逆向分析反调试程序
逆向分析反调试程序
思路2 是下SEH断点

转载于:https://blog.51cto.com/haidragon/2117866

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值