标 题: 又灌水-反(调试/跟踪/脱壳) 技术集锦
标 题: 又灌水-反(调试/跟踪/脱壳) 技术集锦
发信人: kongfoo
时 间: 2004-05-27,14:50
详细信息:
反(调试/跟踪/脱壳) 技术集锦
kongfoo/2004.4.18-5.27
具体代码就不贴了,知道原理就可以写出代码。一些是实践所得,一些是别人的成果,也
都收集在一起了。解密、加密这个攻防战好像和传统作战的攻防战不同,防的一方能用的技术
远远多于攻的一方。
1)花指令
很无聊的技巧,但也有一定作用:隐藏指令,干扰分析。
2)花循环
无用循环,让跟踪者浪费时间,心烦。
3)时间比较
经典的反跟踪技巧,单步跟踪比连续执行的时间长很多。
4)父进程检查
被调试器加载后父进程就不是通常的Explorer.exe。
5)检查调试器
Windows本身就提供一些API可以用来检查调试器是否存在。如IsDebuggerPresent/NtQueryInformationProcess。
另外还有CreateFile/PEB(和IsDebuggerPresent一样)等方法检查调试器。
6)动态加/解密代码
干扰分析。把执行过的代码重新加密可以防止跟踪者翻看代码。
7)IAT加密
防止ImpREC等工具的自动脱壳修复,加大脱壳难度。
8)指令摘取
有很多方式,从OEP处摘取指令,随机摘取一段指令等,加大脱壳难度。摘取的指令还可变形处理。
9)CALL处理
根据CALL指令本身特点,让其先CALL进壳的空间,加大脱壳难度。
10)自调试
对于一个程序,Windows只允许这个程序被一个调试器调试,基于此,采用双进程或多进程方式,
自已调试自己,加大跟踪难度。另外,通过设置某中断地址,使程序发生某中断时执行程序中的中断
处理代码,进行解码、指令摘取等动作,加大跟踪难度。
11)异常处理机制
人为产生异常,改变程序流程或在异常处理时进行解码,加大跟踪难度。常见的异常有内存存取
错误异常,中断异常(INT3/单步/其它中断等),非法指令,非法EIP等。
12)多线程的运用
利用被调试程序所有线程会被挂起的特点,达到干扰跟踪的目的。一,用多线程改变程序流程:在
线程中修改主线程代码,如果被单步跟踪线程将不会运行,流程也就不对了。二,用多线程解码:同理,
线程不能运行解码也就不能进行。
13)反SMC
用Timer/线程不断地将敏感的内存空间的属性设置成只读,可以防止被打补丁。
14)CRC校验
代码被修改之后CRC检验值就不同了。
15)破坏调试环境
破坏调试寄存器内容,破坏中断处理地址或自己接管中断处理等,从根本上反调试。
16)反进程转存
将某个不会用到的代码空间设置成NO_ACCESS,LordPE等工具dump到这个空间时就
会异常而dump不了啦。
17)监视键盘
监视F7、F9就够了。
18)固定屏幕
在壳运行期间把屏幕固定,跟踪者看都不看到,当然跟不了。
19)破坏异常处理环境
用SetUnhandledExceptionFilter破坏异常处理环境,使调试器无法捕捉程序产生的异常。
20)调试父进程
利用调试函数的特点,即被调试进程会被挂起的特点,反单步跟踪。
21)Arm的CC保护,CopyMem-II保护
把所有跳转改成CC,父进程检测到INT3中断时查表改EIP去到正常的位置。
CopyMem-II就是把自己复制到另一块内存中去运行,哪么dump的时候就麻烦些啦。
22)反attach分析
执行过的代码就破坏掉,防止attach分析。另外,生成一个指明不能用调试器的进程之后本
身进程直接退出,可防attach。(NT系统有效)
23)指令预取
利用CPU会预读取指令的特点,干扰单步跟踪。如:
mov word ptr [@@],20cdh
@@:
nop
nop
正常情况下CPU预读了2个nop,而不会执行INT 20(cd20),但单步跟踪下来就不同了。
24)写代码时的反调试
对加壳选项的不同而生成不同的代码,这样可以有效地防止脱壳机的patch。只用标志位
来判断是否加密IAT是很危险的。
25)随机存放敏感数据
如果用jmp OEP的方式去OEP,并且代码位置是固定的,哪么写脱壳机时OEP就随手可得了,
所以使代码不定长,或把敏感数据隐藏起来是很好的对策。另外一些壳运行时要用的原程序的
参数放在程序里面比一堆地放在壳后面更安全得多。
26)反汇编
把自己作为一个指令解释器,反汇编自身代码并解释执行,这样就可以防止指令被改。
软件设计的复杂性比单纯的反调试技巧更有效。加密算法的运用更是有力的反脱壳措施。
anti技巧的安排也很重要,比如子程序里面放anti代码要更好些,因为跟踪者要先过双进程
这一关;解码前设置anti dump比解码后设置更好些,因为解码后立即用LordPE的话anti dump
就形同虚设了。
标 题: 又灌水-反(调试/跟踪/脱壳) 技术集锦相关推荐
- BFS模版题----水缸灌水(c++)
先挂题目: 水缸灌水 题目描述 有两个无刻度标志的水壶,分别可装x升和y升(x,y为整数,x.y<=100)的水.设另一方面有一水缸,可用来向水壶灌水或倒出水,两水壶间,水也可以相互倾灌.已知x ...
- 【原创】反调试技巧总结-原理和实现(1)(2)(3)(4)(5)(6)......
标 题: [原创]反调试技巧总结-原理和实现(1)(2)(3)(4)(5)(6)...... 作 者: shellwolf 时 间: 2008-08-10,22:40:53 链 接: http://b ...
- android的反调试方法,Android平台融合多特征的APP反调试方法与流程
本发明涉及Android平台融合多特征的APP反调试方法,属于计算机与信息科学技术领域. 背景技术: 应用程序本身并不具备反调试的功能,但是动态调试是动态分析应用逻辑.动态脱壳等攻击方式所采取的必要手 ...
- 【JS 逆向百例】网洛者反爬练习平台第五题:控制台反调试
关注微信公众号:K哥爬虫,持续分享爬虫进阶.JS/安卓逆向等技术干货! 文章目录 声明 逆向目标 逆向过程 声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业 ...
- 动态改变类名_反调试之检测类名与标题名
本文内容分为两部分: 1.介绍涉及到的API 2.实践 涉及到的API函数的学习: 1.GetProcAddress 定义:GetProcAddress是一个计算机函数,功能是检索指定的动态链接库(D ...
- 聊聊机器翻译界的“灌水与反灌水之战”!
文 | Willie_桶桶 编 | 智商掉了一地 针对机器翻译领域如何提高和判断实验可信度,这篇ACL2021的oustanding paper迈出了关键的一步!(来读!全文在末尾) 作为不停读论文和 ...
- [转转]反调试技巧总结-原理和实现-----转
原本也是转的,但我没找到原作者 标 题: 反调试技巧总结-原理和实现-----转 作 者: lcx4 时 间: 2016-4-7 链 接: http://www.lcx4.com/?post=51 2 ...
- 二本本科生连发10篇SCI被喷“灌水严重”?原来是因为......
近日,徐州工程学院的万仲禹同学因发10篇SCI并且获香港城市大学全额奖学金直博资格,引发了各界热议,目前万仲禹本人已做出回应,表示"希望成千上万的二本学生看到,我们没有985/211的条件, ...
- 反调试技巧总结-原理和实现
总结: 1. FindWindow.比如 FindWindowA("OLLYDBG", NULL); 2. EnumWindow函数调用后,系统枚举所有顶级窗口,为每个窗口调用 ...
最新文章
- HttpModule与HttpHandler详解
- github登陆方案
- 基于CentOS 搭建 Seafile 专属网盘
- 1. 写出一个能创建多级目录的 PHP 函数(新浪网技术部)
- 设备树与驱动的关系_Linux CommonClock Framework分析之四 gpio clk gate驱动实现
- 2017微服务 mysql集群_成功升P7多亏掌握了这几点:高并发+Nginx+微服务+Redis+MySQL...
- WPF中的动画——(一)基本概念
- python类属性的应用 子类继承可以节约空间
- android csv显示乱码问题,Android CSV解析器问题
- docker 容器命令
- vSAN其实很简单-vSAN盘他之重新部署vCenter
- T2 Funcin T1,out T2(T1 arg)
- 世界独创的螺旋数组低于n(o^2)的生成算法
- 程序猿生存指南-15 领导视察
- 业务流程图(TFD)实例
- Ubuntu 16.04+1080Ti机器学习基本环境配置【转】
- n79登陆微信显示服务器繁忙,不支持n79就算“阉割”?5G手机全网通争议又来了...
- 工资管理系统/c语言期末大作业学习经历
- Java中的基本数据类型讲解(数值型、字符型、布尔型)
- Go语言系列——01-HelloWorld、02-命名规范、03-变量、04-类型、05-常量、06-函数(Function)、07-包、08-if-else语句、09-循环、10-switch语句
热门文章
- 基于STM32F407四旋翼无人机 --- 姿态解算讲解(四元数)(叉积法融合陀螺仪数据和加速度数据)(五)
- 微信支付宝服务商哪家好 支付宝有什么优势
- Struts2的简单搭建(三)
- vue 路由进度条 nprogress
- js购物车功能php,实战项目:用原生JS实现一个购物车的功能
- 最新2021修复安装了谷歌框架GMS后华为/荣耀手机FCM推送服务仍不能用的问题(Microsoft Authenticator微软验证器在安装了Google服务后还是提示不可用)
- SourceInsight4.0暗色主题配置
- ubuntu13.10中使用qq音乐网页版
- 小熊派学习:手册查询和ADC深入使用
- ReentrantLock的实现原理