1 逆向分析技术有什么用
软件安全是信息安全领域的重要内容,设计到软件相关的加密、解密、逆向分析、漏洞分析、安全编程以及病毒分析等。
1.1 加壳
- 加壳(可执行程序资源压缩):压缩后的程序可以直接运行。
- 加壳的另一种方式是在二进制程序中植入一段代码,在运行的时候优先取得程序的控制权,之后在把控制权交还给原始代码,这样做得目的是隐藏程序真正的OEP(入口点,防止被破解,查壳就是为了找它)。
- 加壳可以绕过一些杀毒软件的扫描(免杀)
加壳分类:
- 压缩壳:特点是减小软件体积大小,加密保护不是重点。
- 加密壳:此种类型比较多,不同壳侧重点不同,如单纯保护程序、提供注册机制、使用次数、使用限制等。
2 常用工具
2.1 查壳
查询可执行文件是否加壳或加密
2.1.1 PEID
可以将执行软件拖入如下界面(非快捷方式)。
也可以使用该工具脱壳
2.1.2 EXEINFO
ExeInfo PE 是一款免费可执行程序信息检查工具,它具有可以帮助开发人员对程序进行编译的功能。可以查看EXE/dll文件的编译器信息、是否加壳、入口点地址、输出表/输入表等等Pe信息,帮助开发人员对程序进行分析和逆向。
2.1.3 Detect It Easy
Detect It Easy简称Die,是一款专业查壳工具,比PEID强大得多,能查一次查到底。并支持超大文件读取,其他查壳工具无法打开的程序,这个都能读取。虽然没有PEID出名,但是相当的强大,完全可以替代PEID。
2.2 查询可执行文件信息
exe、com、bat、dll
查看动态链接库、进程、汇编代码等
2.2.1 loadpe
LordPE,是一款功能强大的PE文件分析、修改、脱壳软件。LordPE是查看PE格式文件信息的首选工具,并且可以修改相关信息。
2.2.2 PE Tools
PE 工具可让您积极研究PE 文件和流程。 Process Viewer和 PE 文件Editor, Dumper, Rebuilder, Comparator,Analyzer包括在内。 PE Tools是一个老派的逆向工程工具,从2002. PE Tools 最初是受到 LordPE (yoda) 的启发。
https://github.com/petoolse/petools/releases/tag/v1.9.762
2.2.3 StudyPE
2.3 调试工具
2.3.1 Ollydbg
1 、导航条介绍
步进:(F7)
步过:(F8)
l
:log data,扫描导入库e
:Executable modules,程序运行加载的动态库t
:Theeads,当前线程
- 当附加的进程点击运行后若无法运行,可能是被挂起,此时点击t,对挂起的地方,resume all threads
w
:Windows,窗口h
:Handles,句柄c
:主线程模块,当前可运行的汇编代码p
:Patches,显示已修改的代码k
:调用堆栈(哪里进去、哪里出来)b
:Breakpoints,显示断点。r
:References
2 、窗口介绍
数据窗口快捷方式:dd 地址
:仅找地址dc 地址
:找地址+内容
3 、快捷键
Ctrl+B
:查找二进制字符串
易语言按钮定位:FF 55 FC 5F 5E
Ctrl+G
:跟随地址表达式(找地址)
- 双击 加断点
4、指定程序运行位置起点
5、手动注入dllStrongOD->InjectDLL->Remote Thread
2.3.2 X64dbg
x64dbg,程序逆向反汇编修改神器,免费开源x64/x32位动态调试器,适用Windows的专业程序调试器,软件支持中文界面和插件,界面及操作方法与OllyDbg调试工具类似,支持类似C表达式解析器、DLL和EXE文件调试、IDA式的跳跃箭头与侧边栏、动态识别模块指令、反汇编、自动化可调试的脚本语言等诸多实用逆向分析功能。x64dbg调试器主要分为三部分载体:DBG是调试器的调试功能部分,它处理调试技术(使用的 TitanEngine),并为GUI提供数据。GUI是调试器的图形部分,它采用的Qt编程语言,提供用户交互界面。Bridge是DBG和GUI部分的通信库,它可以用在新建功能上工作,而无需更新汇编代码的其它部分。
官网:https://x64dbg.com/
2.4 修改文件内容
2.4.1 C32asm
C32asm是一款非常好用的反汇编软件,其功能已强于winhex 16、W32Dasm。该款的反汇编软件C32asm具有反汇编模式和十六进制编辑模式,能跟踪exe文件的断点,也可直接修改软件内部代码。
优点:
- 快速静态反编译PE格式文件(Exe、Dll等)
- c32asm反汇编软件提供hex文件编辑功能,功能强大
- 提供内存Dump、内存编辑、PE文件Dump、PE内存ImageSize修正等多种实用功能
- 提供内存反汇编功能,提供汇编语句直接修改功能,免去OPCode的直接操作的繁琐
- c32asm反汇编软件提供反编译语句彩色语法功能,方便阅读分析,能方便自定义语法色彩
- 提供输入表、输出表、参考字符、跳转、调用、PE文件分析结果等显示
- c32asm反汇编软件提供方便的跳转、调用目标地址的代码显示
- 提供汇编语句逐字节分析功能,有助于分析花指令等干扰代码。
2.5 资源文件
资源编辑、查看
2.5.1 Restorator
Restorator 是一个简单易用的的软件资源及用户界面编辑软件,它对 DELPHI 和 C 程序的支持尤佳,是对软件进行本地化处理的理想工具。Restorator 软件功能强大除了一般的编辑操作外,还可以对资源进行导入导出、批量修改语言设置等操作,甚至可以利用“资源补丁”创建不受版权限制的补丁程序!
2.6 Cheat Engine
可以使用此工具搜索软件进程中的用户名等信息,以及值变化等。
查看内存时,可用Ctril+G
进行搜索地址
2.6.1 查找dll文件基址
3 软件安全防护
3.1 试用版
即删减功能
3.2 暗装
使用多种算法不定时验证
3.3 VMProtect
vmp会在原有程序基础上加上很多混淆代码,导致破解者在很长时间内调试无果而放弃。
易语言
' 开始标志
置入代码 ({ 235, 16, 86, 77, 80, 114, 111, 116, 101, 99, 116, 32, 98, 101, 103, 105, 110, 0 })
要保护的代码
' 结束标志
置入代码 ({ 235, 14, 86, 77, 80, 114, 111, 116, 101, 99, 116, 32, 101, 110, 100, 0 })
3.4 检测MD5
检测主程序的MD5、大小、创建时间等,还有程序防止别人下断点调试(CRC检测),下断点就内存报错。
3.5 网络验证
- 通过请求返回字段的方式比较鸡肋
- 另一种方式通过“补码”,相对安全
3.6 保护字符串
字符串在注册模块中非常重要,当一个富有经验的Cracker破解软件时,首先做得就是窃取字符串,比如输入错误的字符串,然后可以通过提示的字符串用OllyDbg进行断点调试,或者用你WinDASM、IDA Pro等静态分析工具在被它脱壳后的程序中查找那个字符串,找到后在分析,因此,一定要加密字符串,使用时临时解密出来,并且尽量少使用消息提示框,避免出现被发现漏洞,加密字符串无需过复杂,随便一个快速的对称算法即可。