灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2045回复:0

[加密解密]VMP分析插件v1.3

楼主#
更多 发布于:2013-01-21 16:13

修复了插入指令时最后一条指令被部分覆盖会造成备份错位的问题。
修复了有时在汇编和插入指令对话框中输入文字会自动设置光标到第一行的问题。
修复了指令窗口撤销选择处修改时选择范围包含没有修改过的指令块可能会发生错误的问题。
修复了当前目录和OD目录不同时读取ollydbg.ini失败的问题。
修复了注释和标签中包含%时可能出错的问题。
修复了一个1.2版由于修改错误导致的对存在连续指令块的程序可能分析失败的问题。
修复了一个由于重定位导致的在DLL中插入指令或在第一条指令汇编可能出错的问题。
修复了启用进入虚拟机中断时在第一条指令设置断点,中断后再取消断点会导致被调试程序出错的问题。
修复了选中启用虚拟机调试但没有选中进入虚拟机时中断,手动执行到执行虚拟指令也不会中断的问题。
 
增加了对一些DEMO版和1.6X版的支持,只在1.64 DEMO和2.06 DEMO做过测试,不一定完全可用。
 
去掉了地址在所有模块之外不能分析的限制,现在会添加到未知模块,但是有些内容比如分支表分析可能没有原来准确,而且保存到UDD的断点和分析点等重新加载时可能因为重定位不同而出错。
 
现在表达式中可以使用ESP了,表示真实ESP。和真实ESP有关的功能必须在分析后才能使用,否则真实ESP为0。
 
现在所有窗口的显示设置,比如列宽、配色、字体、高亮和其他的选项等都可以自动保存到ollydbg.ini了,保存格式和原来不同,以前的设置都会失效。
 
现在复制窗口内容时不会复制列宽小于3的列(把列宽拉到最小,变成灰色),和OD相同。
 
修改了计算返回地址的方法,一些以前计算错误的情况现在也可以计算了。
现在选择了退出虚拟机时加密寄存器的返回地址显示为解密寄存器后返回到的地址,而不是以前显示的解密寄存器代码的地址。
如果选了检查虚拟机完整性可能不能正确计算返回地址或函数调用目标,因为检查结果参与计算,会被认为是变量。
 
现在地址如果有对应的符号名,会显示在地址栏的地址后面,和OD选项中地址显示格式 HEX,符号 相同。
如果开始分析的地址有标签,虚拟程序会自动添加标签VMP_标签,否则添加标签VMP_地址。
 
1字节和2字节虚拟寄存器现在可以分低位和高位(vRxBL、vRxBH、vRxWL、vRxWH)。
原来没有发现,其实1字节和2字节寄存器操作指令可以取寄存器中的任何位置,但几乎都是分成两半使用,所以只添加了高位和低位。
 
现在断点、补丁、分析点可以保存到UDD文件了,重新加载相关模块时可以恢复。
不属于任何模块的记录(模块名显示为"未知模块")保存到主程序的UDD文件中,但是这些记录无法重定位,重启后有可能因地址改变而不能使用。
如果分析内容所在的模块不是主模块,关闭前一定要在模块中保留一个断点(不是虚拟指令断点)。因为插件只能在ODBG_Pluginsaveudd回调函数中保存UDD文件,如果OD认为模块中没有需要保存的内容就不会调用这个函数,这样保存的数据就会丢失。
还有一个要注意的是保存功能可能和一些插件有冲突,OD规定在ODBG_Pluginuddrecord回调函数中不是自己的插件记录应该返回0,让其他插件处理,可是有些插件不遵守这个规定,其他插件就得不到自己的记录了。我就因此调试了很长时间找不到原因,最后发现有一个插件(CodeRipper)把所有记录都处理了。


点击下载

喜欢0 评分0
游客

返回顶部