吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 14382|回复: 12
收起左侧

[其他转载] 【笔记】总结vmp壳基础原理,大牛勿喷!

[复制链接]
[VIP]_年华╮似 发表于 2016-6-12 17:07
总结vmp壳基础原理,大牛不要喷啊!

1.与传统的加壳工具不同,不是简单的把目标进行压缩、内存解压运行,而是修改目标源码,让目标的部分指令在vmp创建的虚拟环境下运行,虚拟环境中无操作数比较指令、条件跳转和无条件跳转指令;
2.被修改替换的目标指令最终形成的字节码有前后相关性,即你改变其他任意一个字节会影响到所有被vm虚拟化的指令
3.vmp的虚拟机其实是一个字节码解释器,循环的读取指令并执行,并且只有一个入口和一个出口
4.虚假跳转和垃圾指令, vmp会使用大量的虚拟跳转和垃圾指令将原有简单的代码变得复杂
5.vmp是基于堆栈的虚拟机,虚拟机指令不是显示的读取参数,而是把要使用的参数压入堆栈,而后直接从堆栈中读取
6.vmp指令
  1)算数运算和移位运算
  2)堆栈操作
  3)系统相关
  4)逻辑运算,这个最复杂,vmp中只有一个逻辑运算指令nor, 它可以模拟not and or xor 四个逻辑运算指令
6.vmp寄存器轮转
  mvp将所有的寄存器都放在一个堆栈的结构vm_context中, 结构中的每一项代码一个寄存器或临时变量
  在程序运行过程中, vm_context结构中保存的寄存器不是固定的,每当执行完一个操作或一个指令结构中的项与真实寄存器之间的映射关系会发生变化,就像一个齿轮随机的转动了一下, 转动过后原有的映射关系全部改变了
7.字节码加密和随机效验
  随机效验比较牛B, vmp会在编译好的字节码中加入自己的一些指令(专属于vmp自动的指令), 每一次执行都会对一段代码随机生成hash值, 然后与另一个随机数相加, vmp要求相加的结果必须为0, 否则会出错.

免费评分

参与人数 3热心值 +3 收起 理由
菜鸟也想飞 + 1 谢谢@Thanks!
丶小明 + 1 用心讨论,共获提升!
wnagzihxain + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

ZeNiX 发表于 2016-6-14 11:03
总结的不错。
然而悲哀的是:看的懂的人,他原本就懂;看不懂的人,怎么看也不懂。
周星星2016 发表于 2018-2-13 13:58
悲哀的是:看的懂的人,他原本就懂;看不懂的人,怎么看也不懂
掂软心内 发表于 2016-6-12 17:13
520_ai_in@sina. 发表于 2016-6-12 17:21
不明觉厉 不懂
kooo1988 发表于 2016-6-15 12:07
不明觉厉 不懂
sdwlzjj 发表于 2017-2-25 15:36

感谢分享!
糖糖教程网 发表于 2018-2-17 23:28
我一直以为VMP无解
洞见未来 发表于 2018-4-13 15:39
下午没睡觉,看这个看了还是晕啊
得加把劲了
聪明王子 发表于 2018-4-19 19:02 来自手机
感谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 16:00

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表