VMP学习笔记之壳基础流程(一)(二)

发布网友 发布时间:2024-10-23 17:59

我来回答

1个回答

热心网友 时间:2024-10-27 03:31


【文章标题】: Vmp1.21学习笔记



【软件名称】: Vmp1.21



【编写语言】: Borland Delphi 4.0 - 5.0



【操作平台】: win7 32位



【详细过程】



【章节目录】



第一章: 壳的基础操作




第二章: Opcode快速入门




第三章: 反汇编引擎框架学习




第四章: 壳的初始化与Handle块优化




第五章: 壳的重定位修复(未完成)



第六章: 壳的伪代码生成与排序等等(未完成)



第七章: 万用门介绍(未完成)



第八章: Vmp壳的实现或则去混淆插件(不打算写了感觉太麻烦了)



2019年08月09日 23:31:16



【基础知识之加壳基本套路】




【读取PE基本信息】



定义的结构如下:



【获取到壳要的各种API】



【将用户要VM的Opcode进行解析】



【如何定位到加密按钮】




【sub_4A3414函数分析】




【指令前缀讲解】(可选)



【Opcode结构顺序是不能被打乱的】



【指令前缀分为四组】




【强制性前缀应当位于其他可选的前缀之后(例外的情形请查看第2.2.1节,”REX前缀”)】



【操作数大小重载前缀允许程序在16位和32位操作数大小间切换】



【地址尺寸重载前缀(67H)允许程序在16位和32位地址间切换】



【ModR/M 和 SIB 字节】(可选)



【ModR/M字节包含3个域信息】




【某些ModR/M字节编码需要第二寻址字节(SIB)。基址+索引或者比例+索引形式的32位寻址需要SIB字节】



【针对前面内容进行实践】



【举例说明】




【指令拆解】




【解析Opcode】




【分析ModRM】(查表)




【分析SIB】(查表)




【得到:MOV DWORD PTR ES:[EAX+ECX*8+0x11223344],0x12345678

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com