软件中反跟踪技术和软件调试

本文详细解析了反跟踪技术的核心方法,包括调试器分类、反调试技术、断点检测、花指令反静态分析及CRC校验,同时阐述了软件调试的基本流程与需求。通过实际案例和代码示例,揭示了如何有效对抗调试工具,以及在开发过程中确保代码安全性的关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

反跟踪技术

1、调试器分类:用户模式调试器(OD、VC++调试器、DRW2000)和内核模式调试器(SoftICE)

2、反调试技术:

a、窗口方法检测:利用WIN API函数查找调试器窗口类名或者标题窗口,找到则表示监视程序运行。几种调试器类名:flyOD或者OllyDBG(检测flyODBUG)、SICE(检测softICE)、DRW(检测DRW2000)

b、检查父进程:遍历操作系统所有进程,检查出当前进程是否为父进程。win32中一般的父进程:Explorer.exe、Cmd.exe、Service.exe

3、断点检测技术:

a、检测软件断点:调试器调试时常用int3断点,,检测时只需要检测函数首地址的机器码是否为0xCC(INT3)

b、屏蔽硬件断点:在调试器中能用的硬件断点只能存在Dr0-Dr3寄存器中,因此可以不间断地占用全部4个硬件断点组织软件的断点调试。

c、中间调用API:将API函数的一部分代码放到执行代码中,在执行这段代码后跳转到API函数剩余的代码,这样设置的断点就会失效。

4、花指令反静态分析:加入无用指令扰乱反汇编软件使其无法找到指令的其实位置(操作码)。去花方式:找到花指令后NOP掉。

5、CRC校验:散列函数的一种,检测文件完整性。将字串转换成CRC32值后存储,运行时重新转换后与之前的对比检测是否完整

6、程序自生成技术:利用前面的程序生成将要执行的代码,反汇编指令并不是要执行的代码,而且可以隐蔽关键指令。

软件调试

调试需求

1、调试功能函数:软件的加密、解密函数、网络软件的数据包发送函数、接收函数、窗口函数、算法函数、文件处理函数。

2、条件判断查找:修改跳转去向。

3、解密资源文件:存在用户信息、监测数据、资源等

4、截获网络数据包

5、还原数据结构:数组、链表、二叉树、结构体、类

6、调试寻址方式:函数入口地址、数据结构的访问地址、某个对象的this指针地址。

调试过程

1、查看软件是否加壳(保护壳、压缩壳、混合壳)、查看软件开发语言、查看软件本身提示信息。

2、反汇编可执行程序,找突破口。

3、反响追踪,找到代码位置。

4、记录调试过程,编写文档。

调试方法

1、设置断点:代码定位断点、数据断点、调试断点。

2、字符串追踪

3、API函数追踪。常见的有:GetWindowText、CreateFile、LoadLibrary、CreateProcess

4、代码屏蔽:屏蔽后推断这段代码实现了什么功能。测试某段代码和某个函数功能。

5、内存修改:测试内存中某段数据的实际意义。

转载于:https://www.cnblogs.com/miaohj/p/5380428.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值