彩票走势图

代码保护软件VMProtect学习笔记——反汇编引擎学习(上)

转帖|使用教程|编辑:李显亮|2020-03-09 10:56:28.107|阅读 512 次

概述:小编大家整理了大佬们的使用技巧和经验与大家分享,希望能够帮助你解决实际运用中遇到的问题。本文讲解反汇编引擎学习。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

VMProtect是一种很可靠的工具,可以保护应用程序代码免受分析和破解,但只有在应用程序内保护机制正确构建且没有可能破坏整个保护的严重错误的情况下,才能实现最好的效果。

【下载VMProtect最新试用版】

小编大家整理了大佬们的使用技巧和经验与大家分享,希望能够帮助你解决实际运用中遇到的问题。

第三章:关于反汇编引擎

①Vmp_AllDisassembly框架详解

代码保护软件VMProtect学习笔记——反汇编引擎学习

总结:

  • 核心部分在于Vmp_Disassembly函数,里面就是解析Opcode指令
  • 部分Opcode需要二次处理
  • 解析壳自身代码跟用户Opcode都是调用这个函数

②Vmp_Disassembly解析Opcode函数分析

举例Opcode:0047497B 8B7424 28 mov esi,dword ptr ss:[esp+0x28]

代码保护软件VMProtect学习笔记——反汇编引擎学习
代码保护软件VMProtect学习笔记——反汇编引擎学习

读取主操作码或则前缀,因为Prefix 与 Opcode 共同占用这个空间。由于 x86/x64 是 CISC 架构,指令不定长。解码器解码的唯一途径就是按指令编码的序列进行解码,关键是第 1 字节是什么? 如:遇到 66h,它就是 prefix,遇到 89h,它就是 Opcode。

代码保护软件VMProtect学习笔记——反汇编引擎学习

GetSize_0函数

函数作用:用来区别读取字节长度

代码保护软件VMProtect学习笔记——反汇编引擎学习

三个比较重要的变量(legacy prefix 的作用)

UPX0:00481DDE ; 546: v529 = 0;

UPX0:00481DDE 094 C6 45 F5 00 mov [ebp+var_B], 0

UPX0:00481DE2 ; 547: v531 = 0;

UPX0:00481DE2 094 C6 45 F7 00 mov [ebp+var_9], 0

UPX0:00481DE6 ; 548: v530 = 0;

UPX0:00481DE6 094 C6 45 F6 00 mov [ebp+var_A], 0

它们在哪里赋值?

v529 赋值的地方:
case 0x66u: // 指令前缀:66H—操作数大小重载前缀,也可被用作某些指令的强制性前缀.
v529 = 1;

v531 赋值的地方:
case 0x67u: // 指令前缀:67H—地址尺寸重载前缀
v531 = 1;

v530 赋值的地方:
REX前缀是16个编码操作码的集合,包含40H到4FH。这些操作码在IA-32模式和兼容模式中代表有意义的指令。在64位模式中,相同的操作码则代表REX前缀,不再当做单独的指令看待。

代码保护软件VMProtect学习笔记——反汇编引擎学习

根据switch执行不同的流程解析Opcode

代码保护软件VMProtect学习笔记——反汇编引擎学习

通过手册我们得知8B对应的是MOV r32,r/m32(Gv, Ev)

代码保护软件VMProtect学习笔记——反汇编引擎学习

Register_Or_Memory = (v13 & 2) == 2这句代码是什么意思?

代码保护软件VMProtect学习笔记——反汇编引擎学习

Gv, Ev 表示:

  • 两个 Operands 分别是:目标操作数 Gv,源操作数 Ev 或说:frist operand 是 Gv, second operand 是 Ev
  • Gv 表示:G 是寄存器操作数,v 是表示操作数大小依赖于指令的 Effective Operand-Size,可以是 16 位,32 位以及 64 位。
  • Ev 表示:E 是寄存器或者内存操作数,具体要依赖于 ModRM.r/m,操作数大小和 G 一致。

通过上文描述就可以解释作者为何设计成要区分Register_Or_Memory来区分先执行SetReg跟ModRm。

因为假设是Mov Gv,Ev这种类型的:目标操作数是确定Gv,但是源操作数是Ev是包含不确定性具体要依赖于 ModRM.r/m 我们举例的很明显就是MOV r32,r/m32(Gv, Ev),目标已知,源带有未知性

代码保护软件VMProtect学习笔记——反汇编引擎学习
--  未完待续  --

VMProtect正版授权专享在线订购特享超低价格!还不赶紧加入你的订购清单?
标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP