zoukankan      html  css  js  c++  java
  • 软件中反跟踪技术和软件调试

    反跟踪技术

    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、内存修改:测试内存中某段数据的实际意义。

  • 相关阅读:
    Eclipse安装反编译插件
    关于eclipse发送到桌面快捷方式后打不开
    字符串 242.有效的字符异位词
    栈 503.下一个更大的元素
    eclipse导入jar包
    Java获取当前的时间
    链表 24.两两交换链表中的节点
    链表 19.删除链表倒数第N个节点
    共享空间的栈
    栈的顺序存储结构
  • 原文地址:https://www.cnblogs.com/miaohj/p/5380428.html
Copyright © 2011-2022 走看看