day19.反调试之FAKE F8

第19节:反调试之FAKE F8


前面学的汇编如何使用,其实我们学的汇编是学习编程的基础,它能解决的问题很多,我们现在来介绍一下反调试,大家都知道做底层安全的人,如果看汇编代码的话,跟看C语言没有什么区别,如果一款软件不能让它很容易的调试,就要用到反调试功能。


1、单步步入(F7),单步步过(F8)
1)单步步入与单步步过的区别
F7在程序调试中是一行行执行的,F8也是一样的,但是在某些情况下不一样,如:使用到的CALL指令,比如:
CALL 0014843D 按下F8的话是把这整行看成一行来进行执行,如果是按F7的话就不一样了,它会进入0014843D地址位置进行执行。


2)调试器的原理
断点 0xCC


如果想在0014843D下断点,请使用F2键,等程序执行的时候就会断在0014843D的位置,这就是断点。那么断点的本质是什么呢?其实有汇编代码中会出现int 3,当CPU执行的时候,停在调试器里,为什么会停在调试器里后面章节会介绍到。当这个地址在0014843D断下来按F7,会一行行执行看EFL,如果EFL为1后,当前程序就会一行行执行(就会单步执行)。F7就是设置EFL位中的TF位设置成1的时候,CPU就记录单步执行模式。如果遇到CALL指令就不一样了。


2、如何实现简单的反调试功能:


1)例子:
call 0041840D
在0041840D 改成 mov dword ptr ds:[esp],004184FC
ret


这样按F8进行往下执行的话,跟踪就跟踪丢了,那如果是按F7的话任然可以进行跟踪。


2)反调试思路
call—>call
           call—>call
                      call—>call
                      call      call
                                 call—>在这里修改返回值
                                 call
                      
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随行之旅

python国产化自动化

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值