高级反调试

垃圾代码

无意义的代码,也就是用来磨炼逆向人员的。。

扰乱代码对齐

这个的话,利用了代码对齐的状况,就中间插入了一个或者两个字节的指令,使得指令解析的时候,发送事故。但是在执行的时候并不会出现报错,利用跳转来控制运行流程。举个例子:

例1:

0041510F	FFE3			JMP EBX     //EBX=415117
00415111	C9				LEAVE
00415112	C2 0800			RETN 8
00415115	A3 687801FF		MOV DWORD PTR DS:[FF017268],EAX		
0041511A	5D				POP	EBP

例2:

00415117	72 01			JB SHORT 0041511A
00415119	FF5D 33			CALL  FAR FWORD PTR SS:[EBP+33]
0041511C	C9				LEAVE
0041511E	41				INC ECX

通常把纠缠混合在一起的代码称为“混合代码”

Stolen Bytes

将OEP的部分代码转移到另一个地方,使得很难Dump;另一方面对OEP的查找也会变得困难,OEP有时还会被处理。。。

API重定向

简单操作:把API 的实现代码重新拷贝一份,放在内存中,然后修改IAT,执行API代码时,去执行拷贝的那份。这样可以防止那些直接通过API下断点的反调试。

复杂操作:利用ASProtect进行混淆代码生成,然后一行代码的功能被替换成了3万多行。不得不说。。很强。。

Debug Blocker

自我创建技术(以子进程形式运行自身进程)的演进形式。自我创建技术中,子进程负责执行实际源代码,父进程负责负责创建子进程,修改内存(代码/数据),更改EP位置等。

仅仅调试父进程将无法转到OEP代码处,但调试时若用附加命令将子进程附加到调试器,这种反调试手法将会失效。

优点:

  1. 防止代码调试,因子进程运行实际的原代码已经处于调试中,原则上就无法再使用其它调试器进行附加操作了(后面会讲,但我还没学)
  2. 能够控制子进程(Debuggee,被调试者)。调试器-被调试者关系中,调试器具有很大权限,可以处理被调试进程的异常,控制代码执行流程等。

常规的SEH技术中,异常处理器代码位于相同的进程内存空间;但Debug Blocker技术中,(处理被调试进程所发生异常的)异常处理器代码位于调试进程(请注意,对于被调试进程所发的异常,调试器拥有优先处理权),为了调试子程序,必须先断开与已有的调试器的连接,但这样子程序又无法正常运行。。

补充:
Nanomite技术由Debug Blocker 技术发展而来,该技术会查找被调试进程内部的代码,将所有跳转指令(Jcc指令)修改为INT3(0xCC)指令,或其它触发异常的代码。并且,调试器内部由表格,含有被修改的Jcc指令的实际地址位置以及要跳转的地址。执行被调试者内部修改后的指令就会触发异常,控制权即被转交给调试器。调试器通过发送异常的地址从(自身持有的)表格中获取要跳转的地址,然后通知被调试者。

破解方法就是:通过写脚本(目前不会)。如果手动改的话,我感觉心态会崩。

反调试技术系列:

静态反调试技术(1)https://blog.csdn.net/CSNN2019/article/details/113105292
静态反调试技术(2)https://blog.csdn.net/CSNN2019/article/details/113147820
静态反调试技术(3)https://blog.csdn.net/CSNN2019/article/details/113178232
动态反调试技术 https://blog.csdn.net/CSNN2019/article/details/113181558
高级反调试技术 https://blog.csdn.net/CSNN2019/article/details/113263215

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

寻梦&之璐

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值