VMP学习笔记之反汇编引擎学习(三)
参考资料:
本文大量内容抄袭看雪作者:waiWH的VMP系列
1、名称:谈谈vmp的还原(1)
网址:https://bbs.pediy.com/thread-225278.htm
2、名称:汇编指令之OpCode快速入门
网址:https://bbs.pediy.com/thread-113402.htm
3、名称:X86指令编码内幕 --- 指令 Opcode 码
网址:https://blog.csdn.net/xfcyhuang/article/details/6230542
说明:
1、将struct_VmFunctionAddr结构体称为需要二次解析的称为:特殊Opcode(SetDisassemblyFunction_Address函数填充)
2、将struct_DisassemblyFunction结构体称为:基础Opcode(Vmp_Disassembly填充)
3、壳模板代码和用户加密代码都是调用Vmp_AllDisassembly函数解析,只是保存的位置不一样而已
4、注意struct_DisassemblyFunction是按顺序存放的
例如:
push 1
push 2
push 3
那么push 1 肯定存放在Address[0]
那么push 2 肯定存放在Address[1]
那么push 3 肯定存放在Address[2]
正文:
1、Vmp_AllDisassembly框架详解
总结:
1、核心部分在于Vmp_Disassembly函数,里面就是解析Opcode指令
2、部分Opcode需要二次处理
3、解析壳自身代码跟用户Opcode都是调用这个函数
2、Vmp_Disassembly解析Opcode函数分析
0、随便拿条Opcode实例说明:
举例Opcode:0047497B 8B7424 28 mov esi,dword ptr ss:[esp+0x28]
评论0
最新资源