【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】

和代码逆向不同的是,反调试的最终目的还是增加逆向工作者的时间和成本,让调试者失去耐心、放弃调试。同时,对调试过程中的常用套路进行重点监控、设防,不让逆向者轻而易举攻破软件。

1、字符串加密

大部分逆向软件的同学都是使用OllyDbg来调试软件的。通常情况下,他们第一步会找到字符串,借着这个字符串来找到对应的代码开始调试。所以,软件开发者要做的就是对相应的字符串进行加密处理,或者设置多个相同的字符串迷惑调试者。加密可以自己加密,或者用特定的api函数来完成。

2、判断当前进程是否处于调试状态

在windows下面有很多的api、寄存器可以判断当前进程是否处于调试状态。比如函数IsDebuggerPresent就可以做到这一点。

3、关键代码压缩

关键代码压缩是防止代码被逆向的有效手段,比如用libz压缩。

4、代码加密

很多文件其实都可以被加密,比如dll文件、exe文件等等。初期,将dll文件加密变成执行文件的data段,等到执行后重新解密、加载dll,也是不错的调试方法,比如openssl库。基本上,有了压缩和加密之后,静态汇编分析就会变得很困难。但是还是会存在一个问题,如果在代码中保存或者生成key,这是需要自己好好思考的问题。

5、监控主线程运行时间

可以设置单个或者多个thread,来监控系统的运行时间。如果系统执行时间明显过长,也可以判断出当前发生了异常、或者代码正在被反编译、调试中,所以此时可以直接退出程序。

6、安全编译器

现在有些厂家提供安全编译器,它可以将原来很简单的代码逻辑变得非常复杂,大大增加逆向者的反编译难度,降低反调试的效率。

7、周期性代码校验

如果关键代码发生了修改,那么代码周期性校验也是不错的一个方法。当然这个方法仅仅比较适合于关键代码段。用多了,软件的使用体验会比较差,因为会占用很多的cpu资源。

8、不定时替换、升级加密算法

一个软件不被破解的可能性很低,软件公司要做的就是尽量让破解的成本高一点。及时升级和替换不同的加密算法、加密手段、加密密钥,也是一种有效的办法。

9、大绝招,驱动检测

对于那些流量特别大、收入特别高的游戏软件来说,软件安全是十分重要的一部分内容。常用的方法对于普通的逆向程序员或许有用,但是对于资深的程序员来说作用有限。这个时候,很多软件公司会自己写一个windows内核驱动(比如虚拟设备驱动),在内核层hook住关键API(比如WriteProcessMemory),直接在源头拦截调试线程,这个方法虽然暴力,但是常常有意想不到的效果。

其他:

很多时候,逆向和用户体验是一个相互博弈的过程。很多时候,加密防住了,但是开发人员自己调试也变得很困难,这个时候就得不偿失了。所以,两者总是处于魔高一尺、道高一丈的相持阶段。有利益的地方,就有江湖!!!。

逆向,反逆向,反反逆向,这是一个循环往复的过程。

如果是利用视频学习,有一个小甲鱼的视频挺不错的。

随想录(反调试技术)相关推荐

  1. 静态反调试技术(2)

    文章目录 NtQueryInformationProcess() `ProcessDebugPort`(0x7) CheckRemoteDebuggerPresent() ProcessDebugOb ...

  2. 静态反调试技术(1)

    文章目录 声明 静态反调试目的 注意 PEB https://blog.csdn.net/CSNN2019/article/details/113113347 BeingDebugged(+0x2) ...

  3. 静态反调试技术(3)

    文章目录 ZwSetInformationThread 破解方法 **调试程序代码**: 利用TLS回调函数(详情通过以下链接查看) ETC 破解之法 **调试程序代码**: 篇章大总结: 反调试技术 ...

  4. 反调试技术揭秘(转)

    在调试一些病毒程序的时候,可能会碰到一些反调试技术,也就是说,被调试的程序可以检测到自己是否被调试器附加了,如果探知自己正在被调试,肯定是有人试图反汇编之类的方法破解自己.为了了解如何破解反调试技术, ...

  5. windows平台下的反调试技术

    在调试一些病毒程序的时候,可能会碰到一些反调试技术,也就是说,被调试的程序可以检测到自己是否被调试器附加了,如果探知自己正在被调试,肯定是有人试图反汇编啦之类的方法破解自己.为了了解如何破解反调试技术 ...

  6. Windows反调试技术全攻略

    在调试一些病毒程序的时候,可能会碰到一些反调试技术,也就是说,被调试的程序可以检测到自己是否被调试器附加了,如果探知自己正在被调试,肯定是有人试图反汇编啦之类的方法破解自己.为了了解如何破解反调试技术 ...

  7. 如何绕过反调试技术——PhantOM插件总结

    PhantOM是OllyDbg的一款插件,可以用来绕过大多数的反调试技术,功能十分强大,所以单独对这个插件进行使用总结.(Ps:现在似乎不怎么常用,在64位下的兼容性比较差,现在比较常用的是sharp ...

  8. 详解反调试技术(转)

    反调试技术,恶意代码用它识别是否被调试,或者让调试器失效.恶意代码编写者意识到分析人员经常使用调试器来观察恶意代码的操作,因此他们使用反调试技术尽可能地延长恶意代码的分析时间.为了阻止调试器的分析,当 ...

  9. 恶意软件反检测技术简介:反调试技术解析

    本文中,我们将向读者介绍恶意软件用以阻碍对其进行逆向工程的各种反调试技术,以帮助读者很好的理解这些技术,从而能够更有效地对恶意软件进行动态检测和分析. 一.反调试技术 反调试技术是一种常见的反检测技术 ...

  10. 180306 逆向-反调试技术(1)BeingDebugged

    1625-5 王子昂 总结<2018年3月6日> [连续第521天总结] A. 反调试技术(1) B. BeingDebugged Win32API为程序提供了IsDebuggerPres ...

最新文章

  1. Codeforces Round #440 (Div. 2, based on Technocup 2018 Elimination Round 2)
  2. python金融代码_Python2爬虫代码之获取金融品种行情数据
  3. sql join on 多表连接_SQL 多表查询-交叉连接(笛卡尔积)
  4. properties 配置回车_在Ubuntu上部署基于Docker的RSSHub,并配置SSL证书
  5. You have mail in /var/spool/mail/root
  6. mysql-5.5.50-winx64
  7. 5个编码技巧以减少GC开销
  8. 10-礼帽与黑帽操作
  9. C++学习之路 | PTA乙级—— 1025 反转链表 (20分)(精简)
  10. python 通过ip获取城市_python shell根据ip获取主机名代码示例
  11. SSH框架+mysql+tomcat 服务器 中文乱码解决方案
  12. asp:Button 事件,点击事件 html Button runat=sever
  13. mysql隐藏文件一定要删除彻底
  14. 【Luogu】【关卡2-3】排序(2017年10月) 【AK】
  15. IEC61850建模说明
  16. LED灯恒流驱动电路设计
  17. 代码急转弯——Tupper(塔珀自指公式)
  18. 我的世界java版的名字是独一无二吗_2018独一无二霸气网名,二字网名超拽霸气冷酷...
  19. 大数据的分析技术,主要有哪些?
  20. 苹果手机怎么备份通讯录?

热门文章

  1. Promise 源码:静态方法
  2. F5 APM针对Vmware view7.3 VDI业务发布测试问题分析
  3. 什么是Web Server
  4. char*,const char*和string的相互转换
  5. Linux常用命令笔记2---文件管理2
  6. c# list排序的三种实现方式
  7. 关于Remoting(续)
  8. shell下如何删除文件的某一列
  9. The operation could not be performed because OLE DB provider SQLNCLI11 for linked server SDSSDFCC...
  10. Spring+Spring Boot+Mybatis框架注解解析