OllyDbg 使用笔记 (十九)

OllyDbg 使用笔记 (十九)


参考

书:《加密与解密》

视频:小甲鱼 解密系列 视频


反调试


先看看这四个程序。(下载地址:http://pan.baidu.com/s/1pJCzABp)

它们自己运行时都没有问题,都显示被注册信息 “You really did it! Congratz it",但是一到OD中运行就会出现未注册或者报错。

这四个程序都对OD进行了反调试。


它们都用了IsDebuggerPresent这个API函数来判断是否程序被调试器调用。


可以先看看ReverseMe.A程序,正常运行时会出现“You really did it! Congratz it"窗口,但是OD运行会出现”Keyfile is not valid.Sorry.“窗口。OD加载程序,F8单步,可以发现call 004010FB产生未注册窗口。

图片1



在call 004010FB下断点,程序运行程序,按F7进入call 004010FB,查看004010FB的代码:

图片2




函数通过IsDebuggerPresent这个API判断是否使用OD调式程序,如果是eax = 1,je   short 004010E2  实现跳转,产生”Keyfile is not valid.Sorry.“窗口。可以直接把je   short 004010E2 改成nop 就可以去除反调试。其它三个ReverseMe都大同小异。



再来看看Debugger Detected这个程序(下载地址:http://pan.baidu.com/s/1WuD4),如果不用英文的OD打开它,按下Verify会出现”Debugger NOT detected!!“窗口;如果用英文的OD打开它会产生一个ERROR窗口写“着Your debugger is detected!!!”。

用英文OD打开它,可以看到程序开头就是一个DialogBoxParamA函数创建 模态对话框。

图片3



其中0040108C是这个模态对话框的过程函数。


在0040108C下断点,按F9运行到0040108C处,按F8单步调试。

可以发现,当第二次运行0040108C时,在 call    004011CB 会产生ERROR窗口。在call    004011CB下断点,重新运行,跟进。

可以发现call    004011CB其实是查看当前系统所有的进程,搜索所有进程中的是否存在叫“OLLYDBG.EXE”的进程,如果有就产生ERROR窗口。

图片4























  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值