逆向工程-REVERSE知识手册

REVERSE基础知识

  • 逆向基础
    • 1.1 汇编基础
      • x86寄存器
      • ARM寄存器
      • X86和ARM的汇编指令
  • 总论
    • 1.2 常用逆向思路
    • 1.3 工具
      • 1.3.1 二进制编辑器
      • 1.3.2 可执行文件查看工具
      • 1.3.3 格式转换工具
  • x64dbg 2020.06.04 反汇编修改神器
    • x64dbg调试器主要分为三部分载体:
    • x64dbg初步认知
      • 快捷键
  • IDA pro 内置调试器
    • 打开安装程序
  • APK反编译工具
    • 工具:
  • C#逆向 反编译工具
    • dotPeek
  • 实战小记
  • Android 反编译逆向调试与安全加固
  • 安卓逆向 初识
    • #了解下 安卓端的 逆向学习框架#
  • 001课 教学内容规划
    • 学习流程
    • 综合基础
  • C++游戏逆向 apk
        • #语言分析#

逆向基础

windows 逆向 软件保护
IDA扩展

正向开发

.net C# 逆向

1.1 汇编基础

1.1.1目前计算机的常见指令集
● x86/x64
● ARM/ARM64(AArch64)
● 其他相对小众的架构(如MIPS)

汇编指令<-----C语言代码(简洁的运算符) 拆开写

CPU的运行方式:
取出下一条要执行的指令+执行当前的指令+输出结果
Intel AMD

常用汇编指令

运算指令:
加减乘除 与或非 异或

数据转移指令:
读取/写入不同长度的内存
写入寄存器

跳转指令:
无条件跳转/条件跳转

JMP 无条件跳转 
jmp 入口点

栈操作指令:
入栈、出栈

push 0
把立即数 0 和 -1 压入堆栈。
汇编指令: JO、JNO、JB、JNB、JE、JNE、JBE、JA、JS、JNS、JP、JNP、JL、JNL、JNG、JG、JCXZ、JECXZ、JMP、JMPE 
名称 功能 操作数 操作码 模数 寄存器1 寄存器2 或内存 位移量 立即数 符号方向 芯片型号 16位 32位

JO 溢出跳转 短 $70 无 无 无 无 10 无 无 8086 无 无 
JNO 不溢出跳转 短 $71 无 无 无 无 10 无 无 8086 无 无 
JB 低于跳转 短 $72 无 无 无 无 10 无 无 8086 无 无 
JNB 不低于跳转 短 $73 无 无 无 无 10 无 无 8086 无 无 
JE 相等跳转 短 $74 无 无 无 无 10 无 无 8086 无 无 
JNE 不等跳转 短 $75 无 无 无 无 10 无 无 8086 无 无 
JBE 不高于跳转 短 $76 无 无 无 无 10 无 无 8086 无 无 
JA 高于跳转 短 $77 无 无 无 无 10 无 无 8086 无 无 
JS 负号跳转 短 $78 无 无 无 无 10 无 无 8086 无 无 
JNS 非负跳转 短 $79 无 无 无 无 10 无 无 8086 无 无 
JP 奇偶跳转 短 $7A 无 无 无 无 10 无 无 8086 无 无 
JNP 非奇偶跳转 短 $7B 无 无 无 无 10 无 无 8086 无 无 
JL 小于跳转 短 $7C 无 无 无 无 10 无 无 8086 无 无 
JNL 不小于跳转 短 $7D 无 无 无 无 10 无 无 8086 无 无 
JNG 不大于跳转 短 $7E 无 无 无 无 10 无 无 8086 无 无 
JG 大于跳转 短 $7F 无 无 无 无 10 无 无 8086 无 无 
JO 溢出跳转 近 $0F80 无 无 无 无 10 无 无 386 无 $66 
JNO 不溢出跳转 近 $0F81 无 无 无 无 10 无 无 386 无 $66 
JB 低于跳转 近 $0F82 无 无 无 无 10 无 无 386 无 $66 
JNB 不低于跳转 近 $0F83 无 无 无 无 10 无 无 386 无 $66 
JE 相等跳转 近 $0F84 无 无 无 无 10 无 无 386 无 $66 
JNE 不等跳转 近 $0F85 无 无 无 无 10 无 无 386 无 $66 
JBE 不高于跳转 近 $0F86 无 无 无 无 10 无 无 386 无 $66 
JA 高于跳转 近 $0F87 无 无 无 无 10 无 无 386 无 $66 
JS 负号跳转 近 $0F88 无 无 无 无 10 无 无 386 无 $66 
JNS 非负跳转 近 $0F89 无 无 无 无 10 无 无 386 无 $66 
JP 奇偶跳转 近 $0F8A 无 无 无 无 10 无 无 386 无 $66 
JNP 非奇偶跳转 近 $0F8B 无 无 无 无 10 无 无 386 无 $66 
JL 小于跳转 近 $0F8C 无 无 无 无 10 无 无 386 无 $66 
JNL 不小于跳转 近 $0F8D 无 无 无 无 10 无 无 386 无 $66 
JNG 不大于跳转 近 $0F8E 无 无 无 无 10 无 无 386 无 $66 
JG 大于跳转 近 $0F8F 无 无 无 无 10 无 无 386 无 $66 
JO 溢出跳转 近 $0F80 无 无 无 无 10 无 无 386 $66 无 
JNO 不溢出跳转 近 $0F81 无 无 无 无 10 无 无 386 $66 无 
JB 低于跳转 近 $0F82 无 无 无 无 10 无 无 386 $66 无 
JNB 不低于跳转 近 $0F83 无 无 无 无 10 无 无 386 $66 无 
JE 相等跳转 近 $0F84 无 无 无 无 10 无 无 386 $66 无 
JNE 不等跳转 近 $0F85 无 无 无 无 10 无 无 386 $66 无 
JBE 不高于跳转 近 $0F86 无 无 无 无 10 无 无 386 $66 无 
JA 高于跳转 近 $0F87 无 无 无 无 10 无 无 386 $66 无 
JS 负号跳转 近 $0F88 无 无 无 无 10 无 无 386 $66 无 
JNS 非负跳转 近 $0F89 无 无 无 无 10 无 无 386 $66 无 
JP 奇偶跳转 近 $0F8A 无 无 无 无 10 无 无 386 $66 无 
JNP 非奇偶跳转 近 $0F8B 无 无 无 无 10 无 无 386 $66 无 
JL 小于跳转 近 $0F8C 无 无 无 无 10 无 无 386 $66 无 
JNL 不小于跳转 近 $0F8D 无 无 无 无 10 无 无 386 $66 无 
JNG 不大于跳转 近 $0F8E 无 无 无 无 10 无 无 386 $66 无 
JG 大于跳转 近 $0F8F 无 无 无 无 10 无 无 386 $66 无 
JCXZ 计数一六零跳转 位移8 $E3 无 无 无 无 10 无 无 8086 无 $67 
JECXZ 计数三二零跳转 位移8 $E3 无 无 无 无 10 无 无 386 $67 无 
JMP 跳转 寄16 $FF 11 100 3 无 无 无 无 8086 无 $66 
JMP 跳转 寄32 $FF 11 100 3 无 无 无 无 386 $66 无 
JMP 跳转 16[寄16] $FF 00 100 5 无 无 无 无 8086 无 $6766 
JMP 跳转 32[寄16] $FF 00 100 5 无 无 无 无 386 $66 $67 
JMP 跳转 16[寄32] $FF 00 100 5 无 无 无 无 386 $67 $66 
JMP 跳转 32[寄32] $FF 00 100 5 无 无 无 无 386 $6766 无 
JMP 跳转 16[寄16+位移8] $FF 01 100 5 9 无 无 无 8086 无 $6766 
JMP 跳转 32[寄16+位移8] $FF 01 100 5 9 无 无 无 386 $66 $67 
JMP 跳转 16[寄32+位移8] $FF 01 100 5 9 无 无 无 386 $67 $66 
JMP 跳转 32[寄32+位移8] $FF 01 100 5 9 无 无 无 386 $6766 无 
JMP 跳转 16[寄16+位移16] $FF 10 100 5 9 无 无 无 8086 无 $6766 
JMP 跳转 32[寄16+位移16] $FF 10 100 5 9 无 无 无 386 $66 $67 
JMP 跳转 16[寄32+位移32] $FF 10 100 5 9 无 无 无 386 $67 $66 
JMP 跳转 32[寄32+位移32] $FF 10 100 5 9 无 无 无 386 $6766 无 
JMP 跳转 近16[寄16] $FF 00 100 5 无 无 无 无 8086 无 $6766 
JMP 跳转 近32[寄16] $FF 00 100 5 无 无 无 无 386 $66 $67 
JMP 跳转 近16[寄32] $FF 00 100 5 无 无 无 无 386 $67 $66 
JMP 跳转 近32[寄32] $FF 00 100 5 无 无 无 无 386 $6766 无 
JMP 跳转 近16[寄16+位移8] $FF 01 100 5 9 无 无 无 8086 无 $6766 
JMP 跳转 近32[寄16+位移8] $FF 01 100 5 9 无 无 无 386 $66 $67 
JMP 跳转 近16[寄32+位移8] $FF 01 100 5 9 无 无 无 386 $67 $66 
JMP 跳转 近32[寄32+位移8] $FF 01 100 5 9 无 无 无 386 $6766 无 
JMP 跳转 近16[寄16+位移16] $FF 10 100 5 9 无 无 无 8086 无 $6766 
JMP 跳转 近32[寄16+位移16] $FF 10 100 5 9 无 无 无 386 $66 $67 
JMP 跳转 近16[寄32+位移32] $FF 10 100 5 9 无 无 无 386 $67 $66 
JMP 跳转 近32[寄32+位移32] $FF 10 100 5 9 无 无 无 386 $6766 无 
JMP 跳转 远16[寄16] $FF 00 101 5 无 无 无 无 8086 无 $6766 
JMP 跳转 远32[寄16] $FF 00 101 5 无 无 无 无 386 $66 $67 
JMP 跳转 远16[寄32] $FF 00 101 5 无 无 无 无 386 $67 $66 
JMP 跳转 远32[寄32] $FF 00 101 5 无 无 无 无 386 $6766 无 
JMP 跳转 远16[寄16+位移8] $FF 01 101 5 9 无 无 无 8086 无 $6766 
JMP 跳转 远32[寄16+位移8] $FF 01 101 5 9 无 无 无 386 $66 $67 
JMP 跳转 远16[寄32+位移8] $FF 01 101 5 9 无 无 无 386 $67 $66 
JMP 跳转 远32[寄32+位移8] $FF 01 101 5 9 无 无 无 386 $6766 无 
JMP 跳转 远16[寄16+位移16] $FF 10 101 5 9 无 无 无 8086 无 $6766 
JMP 跳转 远32[寄16+位移16] $FF 10 101 5 9 无 无 无 386 $66 $67 
JMP 跳转 远16[寄32+位移32] $FF 10 101 5 9 无 无 无 386 $67 $66 
JMP 跳转 远32[寄32+位移32] $FF 10 101 5 9 无 无 无 386 $6766 无 
JMP 跳转 短 $EB 无 无 无 无 10 无 无 8086 无 无 
JMP 跳转 位移16 $E9 无 无 无 无 10 无 无 8086 无 $66 
JMP 跳转 位移32 $E9 无 无 无 无 10 无 无 386 $66 无 
JMP 跳转 近 $E9 无 无 无 无 10 无 无 8086 无 $66 
JMP 跳转 近 $E9 无 无 无 无 10 无 无 386 $66 无 
JMP 跳转 远(数段址:)偏移16 $EA 无 无 无 无 10 无 无 8086 无 $66 
JMP 跳转 远(数段址:)偏移32 $EA 无 无 无 无 10 无 无 386 $66 无 
JMP 跳转 数段址:偏移16 $EA 无 无 无 无 12 无 无 8086 无 $66 
JMP 跳转 数段址:偏移32 $EA 无 无 无 无 12 无 无 386 $66 无 
JMPE 跳转扩展 寄16 $0F00 11 110 3 无 无 无 无 IA64 无 $66 
JMPE 跳转扩展 寄32 $0F00 11 110 3 无 无 无 无 IA64 $66 无 
JMPE 跳转扩展 16[寄16] $0F00 00 110 5 无 无 无 无 IA64 无 $66 
JMPE 跳转扩展 32[寄16] $0F00 00 110 5 无 无 无 无 IA64 $66 无 
JMPE 跳转扩展 16[寄32] $0F00 00 110 5 无 无 无 无 IA64 无 $66 
JMPE 跳转扩展 32[寄32] $0F00 00 110 5 无 无 无 无 IA64 $66 无 
JMPE 跳转扩展 16[寄16+位移8] $0F00 01 110 5 9 无 无 无 IA64 无 $66 
JMPE 跳转扩展 32[寄16+位移8] $0F00 01 110 5 9 无 无 无 IA64 $66 无 
JMPE 跳转扩展 16[寄32+位移8] $0F00 01 110 5 9 无 无 无 IA64 无 $66 
JMPE 跳转扩展 32[寄32+位移8] $0F00 01 110 5 9 无 无 无 IA64 $66 无 
JMPE 跳转扩展 16[寄16+位移16] $0F00 10 110 5 9 无 无 无 IA64 无 $66 
JMPE 跳转扩展 32[寄16+位移16] $0F00 10 110 5 9 无 无 无 IA64 $66 无 
JMPE 跳转扩展 16[寄32+位移32] $0F00 10 110 5 9 无 无 无 IA64 无 $66 
JMPE 跳转扩展 32[寄32+位移32] $0F00 10 110 5 9 无 无 无 IA64 $66 无 
JMPE 跳转扩展 位移16 $0FB8 无 无 无 无 10 无 无 IA64 无 $66 
JMPE 跳转扩展 位移32 $0FB8 无 无 无 无 10 无 无 IA64 $66 无 

x86寄存器

支持使用一个寄存器的不同长度的值

只包含通用寄存器
逆向工程-REVERSE知识手册_第1张图片

RIP-指向下一条执行的命令
RSP-指向栈顶
RBP-指向栈帧中心(稍后解释栈和栈帧)

ARM寄存器

逆向工程-REVERSE知识手册_第2张图片

SP与x86中esp相当
R11与x86中ebp相当
LR是link register的简称,用于保存调用者的地址方便返回
PC在ARM中指向两条指令之后(由于三级流水线的历史遗留问题)

X86和ARM的汇编指令

逆向工程-REVERSE知识手册_第3张图片

总论

逆向工程-REVERSE知识手册_第4张图片

一般指令执行时都会将返回的结果存储于寄存器中。
但寄存器数量很有限,于是我们需要经常的将它存入内存。

然后聪明的先人就创造了栈。

1.2 常用逆向思路

1.3 工具

1.3.1 二进制编辑器

● 010 Editor
逆向工程-REVERSE知识手册_第5张图片

模板功能, Templates→Template Repository即可看到各种已有模板
逆向工程-REVERSE知识手册_第6张图片
逆向工程-REVERSE知识手册_第7张图片
逆向工程-REVERSE知识手册_第8张图片

Template的语法类似于C结构体,可自己直接编写并加载,且支持基本的C语法如循环、判断等
逆向工程-REVERSE知识手册_第9张图片
逆向工程-REVERSE知识手册_第10张图片

解析的结果会以列表的形式显示在Variables界面中

快速解析已知格式文件
二进制复制与粘贴支持
不同格式输入
编码支持较差

● EditPlus
逆向工程-REVERSE知识手册_第11张图片

编码支持相当好
二进制编辑能力较弱
UltraEdit、WinHex

1.3.2 可执行文件查看工具

● PE:CFF Explorer
在这里插入图片描述

● MachO:MachO View
● ELF:直接IDA

1.3.3 格式转换工具

● Shellcode Helper

1.3.4 反汇编器 非侵入式
● IDA:Interactive Disassembler
反汇编界面使用
不同界面说明
设置Data、Code(d、c)
查看Cross Reference(x)
查看String List(Shift-F12)

F5反编译器使用
设置Type (变量、函数)(Y)
设置Calling Convention (Y)

1.3.5 调试器
命令行调试器
● gdb
支持平台全面,有强大社区支持
支持配合gdbserver进行远程调试
社区维护大量插件
● WinDBG
仅支持Win平台
强于解析结构体,尤善于Windows内部结构的解析与显示
同样支持插件,但数量相对较少
支持Win内核调试
支持Win远程调试

图形界面调试器
● OllyDBG
Win下老牌调试器
有强大的社区,
支持脚本和插件扩展
仅支持32位
快捷键:F8步过 F7步进 F4运行至 F9运行 F2下断点

x64dbg 2020.06.04 反汇编修改神器

https://x64dbg.com/

在这里插入图片描述
pluginsdk 插件开发包
release x64dbg的主程序目录
逆向工程-REVERSE知识手册_第12张图片

支持32和64位
仍在活跃开发中
插件相对较少
快捷键与OD相同

逆向工程-REVERSE知识手册_第13张图片

逆向反汇编修改神器,免费开源x64/x32位动态调试器,适用Windows的专业程序调试器,软件原生支持中文界面和插件,其界面及操作方法与OllyDbg调试工具类似,
支持类似C的表达式解析器、
全功能的DLL和EXE文件调试、IDA般的侧边栏与跳跃箭头、动态识别模块和串、快反汇编、可调试的脚本语言自动化等多项实用分析功能。

x64dbg调试器主要分为三部分载体:

DBG 是调试器的调试部分,它处理调试技术(使用的 TitanEngine),并为GUI提供数据。
GUI 是调试器的图形部分,它建立在Qt上,并提供用户交互界面。
Bridge 是DBG和GUI部分的通信库,它可以用于在新建功能上工作,而无需更新代码的其它部分。

逆向工程-REVERSE知识手册_第14张图片逆向工程-REVERSE知识手册_第15张图片修订了啥
简体中文修订说明:王苏 2020.06.10

  1. 为帮助用户更好地了解 x64dbg 反汇编后的 CPU 汇编指令信息,对汇编指令的“助记符摘要”全部进行了汉化。
  2. 由于本次更新幅度较大,更改的内容较多,所以对“助记符帮助”进行了部分汉化。
  3. 汇编指令的汉化参考了“清华大学出版社”出版的《汇编语言程序设计教程》(第4版) 中术语,因此可能与其他软件的汉化术语略有不同。
  4. 对 Scylla 插件等进行了全面汉化。
  5. 对 x64dbg 帮助文档的主要内容进行了汉化,并按照最新版进行了修订、翻译。
  6. 对界面字体以及布局重新进行了设置。
  7. 将默认调用在线英文帮助更改为调用本地的中文帮助文件。
  8. 对 x64dbg 官方中文版的汉化错误及不一致处进行了修订,并与帮助文档的关键词进行了统一。
  9. 对中文版界面字体进行了重新设置,使其更为美观。

x64dbg初步认知

快捷键

附加进程 ALT + A
逆向工程-REVERSE知识手册_第16张图片逆向工程-REVERSE知识手册_第17张图片逆向工程-REVERSE知识手册_第18张图片
cpu 反汇编窗口
F2 断断点 同OD
F8 步过
空格键 编辑 汇编
逆向工程-REVERSE知识手册_第19张图片

IDA pro 内置调试器

快捷键与OD相同
支持多种后端:
IDA内置调试器
gdb、windbg

支持远程调试
兼容gdbserver
官方支持ARM/ARM64、x86/x64指令集远程调试
支持Android iOS Win Linux
支持配合Hex-Rays调试

单步、查看运行过程中变量的值
步进
单步执行,遇到call调用时会跟进而不是跳过去
步过
单步执行,遇到call调用时会和别的指令一样跳过去
运行至指定位置
相当于临时下断点,碰到循环时可以方便的跳过去
运行
直接跑起来,而不是一条一条指令执行

在这里插入图片描述

打开安装程序

逆向工程-REVERSE知识手册_第20张图片在这里插入图片描述逆向工程-REVERSE知识手册_第21张图片逆向工程-REVERSE知识手册_第22张图片逆向工程-REVERSE知识手册_第23张图片逆向工程-REVERSE知识手册_第24张图片逆向工程-REVERSE知识手册_第25张图片逆向工程-REVERSE知识手册_第26张图片逆向工程-REVERSE知识手册_第27张图片逆向工程-REVERSE知识手册_第28张图片逆向工程-REVERSE知识手册_第29张图片逆向工程-REVERSE知识手册_第30张图片逆向工程-REVERSE知识手册_第31张图片逆向工程-REVERSE知识手册_第32张图片逆向工程-REVERSE知识手册_第33张图片逆向工程-REVERSE知识手册_第34张图片逆向工程-REVERSE知识手册_第35张图片

  • 安装错误 看看这里有没有 卸载
    逆向工程-REVERSE知识手册_第36张图片
  • 卸载 重新安装
    在这里插入图片描述逆向工程-REVERSE知识手册_第37张图片逆向工程-REVERSE知识手册_第38张图片

APK反编译工具

工具:

1、apktool.bat;apktool.jar
官网下载地址 https://ibotpeaches.github.io/Apktool/install/

作用:最大程度的还原apk中的manifest文件和资源文件 。
使用apktool工具反编译apk文件比直接解压同一个apk文件大;
还可以将反编译之后的apk重新打包成apk文件,
但需要重新签名,才能安装使用。

2、dex2jar
官方下载地址https://sourceforge.net/projects/dex2jar/

作用:
将APK直接解压后,目录下包含的一个classes.dex
文件反编译为classes-dex2jar.jar文件。

3、jd-gui.jar

作用:直接查看classes-dex2jar.jar文件。

网盘资源 完整工具压缩包下载
https://pan.baidu.com/s/1u9ZAIlnMMHJx9LWRO7OWcA


  1. apktool
    在这里插入图片描述
    在这里插入图片描述
    重新打包:

输入命令apktool b xxx

在这里插入图片描述在这里插入图片描述


  1. dex2jar
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

3、jd-gui
在这里插入图片描述在这里插入图片描述

C#逆向 反编译工具

dotPeek

官网地址:https://www.jetbrains.com/decompiler/

是 JetBrains 开发的一款.Net反编译工具,是.Net工具套件中的一个

  • 将 .NET 程序集反编译为 C#

dotPeek 是一款基于 ReSharper 捆绑反编译器的免费独立工具。

它可以可靠地将任意 .NET 程序集反编译为对等的 C# 或 IL 代码。

支持包括库 (.dll)、可执行文件 (.exe) 和 Windows 元数据文件 (.winmd) 在内的多种格式。

  • 将反编译代码导出至 Visual Studio 项目
    在反编译完程序集后,您可以将其另存为 Visual Studio 项目 (.csproj)。
    如果您需要从旧程序集恢复丢失的源代码,此举可以为您节省大量的时间。

逆向工程-REVERSE知识手册_第39张图片

  • 下载源代码并调试第三方代码
    dotPeek 可以根据 PDB 文件识别本地源代码,或者从 Microsoft Reference Source Center 或 SymbolSource 等源服务器中获取源代码。

dotPeek 还可以作为符号服务器运行,
为 Visual Studio 调试器提供调试程序集代码所需的信息。

逆向工程-REVERSE知识手册_第40张图片
逆向工程-REVERSE知识手册_第41张图片
逆向工程-REVERSE知识手册_第42张图片

实战小记

Android 反编译逆向调试与安全加固

安卓逆向 初识

#了解下 安卓端的 逆向学习框架#

在这里插入图片描述
逆向工程-REVERSE知识手册_第43张图片逆向工程-REVERSE知识手册_第44张图片逆向工程-REVERSE知识手册_第45张图片逆向工程-REVERSE知识手册_第46张图片

  • ELF 程序逆向分析 ——可执行程序(功能)

001课 教学内容规划

逆向工程-REVERSE知识手册_第47张图片
逆向工程-REVERSE知识手册_第48张图片
逆向工程-REVERSE知识手册_第49张图片

学习流程

  • 汇编

逆向工程-REVERSE知识手册_第50张图片

  • 安卓逆向 软件分析(商业、工具、游戏)
  • 手游辅助 光是 游戏APP

综合基础

  • smail汇编 - java代码 逆向

  • ARM汇编 指令 (二进制文件 - 普通代码语言) IDA
    汇编 寄存器
    逆向工程-REVERSE知识手册_第51张图片

  • hook插件 开发

  • NDK工具
    逆向工程-REVERSE知识手册_第52张图片
    逆向工程-REVERSE知识手册_第53张图片
    逆向工程-REVERSE知识手册_第54张图片
    逆向工程-REVERSE知识手册_第55张图片
    逆向工程-REVERSE知识手册_第56张图片
    逆向工程-REVERSE知识手册_第57张图片

  • 修改so dll 等 关键文件
    逆向工程-REVERSE知识手册_第58张图片

  • APK 防护 HOOK过掉
    改函数 返回值 该参数 打印参数

逆向工程-REVERSE知识手册_第59张图片

  • Dalvik虚拟机和ART虚拟机

逆向工程-REVERSE知识手册_第60张图片

C++游戏逆向 apk

逆向工程-REVERSE知识手册_第61张图片

#语言分析#

  • C# —— unity3d
  • Lua ——cocos2dx
  • c++ ——cocos2dx libgame.so

— /data/app-lib/包名/lib
找so 几百kb 就不是 c++(几个MB)(有cocos2d引擎在里面)

逆向工程-REVERSE知识手册_第62张图片逆向工程-REVERSE知识手册_第63张图片逆向工程-REVERSE知识手册_第64张图片逆向工程-REVERSE知识手册_第65张图片逆向工程-REVERSE知识手册_第66张图片逆向工程-REVERSE知识手册_第67张图片逆向工程-REVERSE知识手册_第68张图片

  • cocos2d
  • cpp ----->c++
    逆向工程-REVERSE知识手册_第69张图片逆向工程-REVERSE知识手册_第70张图片
  • arsc 资源文件
  • dex java代码
  • xml 配置文件
  • sdk manifest google

res 资源 配置 图片 动画 xml 音频
org linux
META-INF 签名文件夹
逆向工程-REVERSE知识手册_第71张图片
assets 资源
逆向工程-REVERSE知识手册_第72张图片逆向工程-REVERSE知识手册_第73张图片


逆向工程-REVERSE知识手册_第74张图片

  • this 上下文

在这里插入图片描述

  • 拿之前那个 恶搞程序 练手
  • 查看是否 代码混淆逆向工程-REVERSE知识手册_第75张图片
    逆向工程-REVERSE知识手册_第76张图片逆向工程-REVERSE知识手册_第77张图片
  • 查看 类似有没有CN中文
    逆向工程-REVERSE知识手册_第78张图片逆向工程-REVERSE知识手册_第79张图片

你可能感兴趣的:(#,逆向分析,逆向)