他乡_08

【01:55】"VMP1.7 IAT修复脚本.txt"、"VMP IAT高级处理脚本.osc"、"VMProtect 修复脚本.txt"、"vmp_iat.osc"

 

【05:15】先不看脚本,先自己写一下

【09:35】(ZC: 又不自己写了...) 直接拿 "VMP1.7 IAT修复脚本.txt" 的内容来讲解

  【16:00】讲解结束

【16:01】用 OSCEditor(OllyScript Editor v1.0 Beta 2)编辑脚本很简单

 

【17:35】用 "VMProtect Professional v 1.70.4" 专家模式

  【17:45】用 PEiD查壳,VB5.0/6.0  【17:49】查看 区段

  【18:08】对 exe进行加壳

【18:38】OD载入 待脱壳exe

  【18:53】很明显,被VM了 (ZC: 我眼中,没那么明显嘛... 怎么就"很明显"了?)

  【19:02】用 VirtualProtect下断,先设法来到OEP

    Ctrl+G 输入VirtualProtect --> 所在指令的地方,下F2断点 --> F9 N次,当 函数VirtualProtect的 参数Address的值为 00403000,参数NewProtect为PAGE_READONLY的时候(PAGE_EXECUTE_READ的后面),为最佳返回时间点,retn的地方 下F2断点 --> F9 --> 删掉所有断点 --> "内存映射"窗口,00401000处 下断点(设置内存访问断点(A)) --> F9(来到这里【19:33】),删除内存断点(前面的"内存访问断点"),这样子我们就能来查找 "#E9??????00#"(ZC: 来自于"VMP1.7 IAT修复脚本.txt")。我们可以这样来看一下,【19:58】打开"内存映射"窗口,00401000处 右击 在CPU数据窗口中查看(ZC: 来到的地方就是 断下的地方...),操作不对 重来。【20:12】"内存映射"窗口,00401000处 右击 在反汇编窗口中查看 --> Ctrl+B,输入"E9??????00"(这个意思就是找JMP),来到第1个JMP指令 --> Ctrl+L N次 --> 【20:50】(ZC: 貌似 他没找到中意的JMP) 又回到 断下来的地方。"内存映射"窗口,00401000处 右击 在反汇编窗口中查看,找 "#E8??????0090#"(这是找CALL或者JMP)--> Ctrl+B,输入"E8??????0090",没有找到(Ctrl_L 也没有找到)

    【21:38】来到断点处,寄存器窗口 ESP,右键 数据窗口中跟随 (直接这样子来 找到OEP),数据窗口 拉到最底下,(根据原来的方法) kernel32.7C817077的上面下断点(硬件写入 字节) --> F9 (ZC: 【21:51】怎么会断在这里,卧槽,难道是 0x0012FFC0 和 0x0012F690 所指向的值相同的缘故?这不是扯淡嘛)-->"内存映射"窗口,00401000处 下断点(设置内存访问断点(A))--> F9 --> 【21:58】(ZC: 此时是断在了硬件断点上还是内存断点上?) 这样就到达了OEP(ZC: 卧槽 这就到了OEP了?)

    【22:18】OD插件脱壳,程序不能运行,∵ IAT被加密了,而且 我们是使用的专家的模式来加密的,加密强度非常高

    【23:00】我们运行 "VMP1.7 IAT修复脚本.txt",(将断点都删掉 ZC: 貌似 他漏删了内存断点?)

      【24:00】脚本跑完(修复完毕),再次 OD插件脱壳,程序还是出错 内存错误

    【24:36】ImportREC修复。显示无效函数-->无效函数上 右击-->高级命令-->选择代码块-->点击 按钮"完整转存"

      无效函数上 右击-->跟踪级别1(反汇编)-->【25:12】修复之后,代码段无效(ZC: 那看出来 代码段无效 了?扯淡啊?) -->【25:42】二话不说,RVA填入1000 (ZC: 无语了,真tm乱)

    【26:44】(ZC: 这里明显视频剪接过了) 我们继续,到了OEP之后 我们直接dump(OD插件脱壳) (刚才由于杀毒软件,把它挂掉了),把 OllyDump的"重建输入表"的"√"去掉,再次 脱壳,可以运行了 (ZC: ...)

  【27:57】用修复脚本修复一下(ZC: 上面 没有跑脚本?) 【28:05】"内存映射"界面 节".vmp0"处 右击 复制到剪切板 地址,然后将 复制到的值 粘贴到 脚本弹出的对话框中 (ZC: 当 节的名称被修改掉的情况下,我如何确定哪个节是第一个VMP节??)。将 节".vmp0"的地址也粘贴到 脚本弹出的第2个对话框中 --> 脚本跑起来了 --> 程序跑终止了(OD显示状态"已终止")

  【28:30】用修复脚本修复 有时会出现问题(ZC: 脚本没盖好 找借口?)

  【28:30】OD重新加载,脚本对话框弹出来了,关掉 脚本对话框

  【28:33】再次 OD重新加载。此处操作 和 前面 找OEP的方式相同

    【29:15】到达OEP (删掉2个硬件断点。ZC: 为啥有2个?前面的没删掉?)。OD插件脱壳,程序运行 内存错误。 【29:42】再次 OD插件脱壳,不要 (√选)"重建输入表",程序运行OK。重建表 本身就被VM了,再重建表,就要出问题 (ZC: 为啥 被VM了的 输入表 我们可以正常使用?) 【29:56】PEiD显示 是VB5/6

  【30:03】ImportRec 打开 OD调试中的 "VB 课.vmp.exe"。 右击-->高级命令-->选择代码块-->点击 按钮"完整转存",保存的名字为"VB 课.vmp_dump.exe"

    【30:18】OD插件 OllyDump 取得 OEP为 0x1086

    【30:23】将 0x1068写入 ImportRec中,点击"自动查找IAT" 提示"在此OEP入口点没有找到任何有用的信息"。手动将 RVA改为0x1000 大小改为0x100,点击"获取输入表",点击"显示无效函数",右击 "跟踪级别1(反汇编)" --> 还有许多无效的函数 (ZC: 他 直接放弃 ImportRec做的 IAT/输入表 相关操作)。【30:45】发现 直接dump(ZC: 就是指 ImportRec的"完整转存") 就可以了,它 不需要去修复 (ZC: why?不是说 IAT被VM了吗?)

    【30:51】PEiD检测"VB 课.vmp_dump.exe",什么也没有发现,选了 "核心扫描"之后 显示是 VB5/6

    【31:13】LoadPE 打开 "VB 课.vmp_dump.exe",用我们找到的OEP 修改 "入口点" 【31:31】同样的,程序运行OK

      【31:37】此时 PEiD直接显示VB5/6

  【31:47】(ZC: 此时的代码执行位置为0x00401068) 如果有需要,可以跑一下这个脚本 "VMP1.7 IAT修复脚本.txt",这个脚本就是固定IAT 它找的IAT是固定的。填入2个值,脚本就跑起来了。【32:14】(ZC: 脚本跑完了,停下来的地方还是 0x00401068,为啥?这个脚本是怎么跑的?怎么能又回到这里?重新加载程序 然后再跑的?) 也可以这样子 同样的可以跑掉 可以跑掉OEP。【32:22】(OD插件脱壳 不√选"重建输入表") 同样的 修复好之后,咋们 脱壳之,程序出错 内存错误。【32:45】跑了这个(脚本)之后,它就修复了原来的原始IAT,修复原始IAT之后【32:54】这些东西就被修复了(ZC: 此时 他把这些代码选中是什么意思?是这些被选中的代码被修复了?),所以它 可能会出错(ZC: 我们用LoadPE将IAT设为0 能不能解决该问题?)

    【33:00】修复了之后,我们用PEload来纠正一下(ZC: 靠 就是LoadPE...还以为是什么新软件了...) 【33:15】LoadPE选中 被OD调试的那个"VB 课.vmp.exe"进程 --> 修正镜像大小 --> 完整转存 dumped.exe 就生成了

    【33:25】ImportRec 选中 被OD调试的那个"VB 课.vmp.exe"进程,点击 按钮"选项" 需要配置成此时(【33:29】)的设置,填入 OEP,点击"自动查找IAT" 提示"在此OEP入口点没有找到任何有用的信息",手动将 RVA改为0x1000 大小改为0x100,点击"获取输入表",点击"显示无效函数",右击 "跟踪级别1(反汇编)" --> 还有许多无效的函数--> 关闭ImportRec。 【33:48】(ZC: 用脚本)修复了之后,(ZC: 相关的IAT函数)无效了,这个脚本不适合VB。VB就直接这样脱 就可以了,哪怕是专家模式,同样的没有问题。

 

【34:15】我们再来看一下1.704(ZC: 加壳。软件标题:"VMProtect Professional v 1.70.4")

  点击 按钮"查看",选择 "专家模式",文件 --> 打开 --> 清楚历时记录,文件 --> 打开 --> 桌面上的 NOTEPAD.exe

  【34:45】PEiD查桌面上的 NOTEPAD.exe,显示 VC7.0

  【34:51】VMP1704 --> 选项 --> 级别:最大保护

 

【35:00】我们先来用一下,VMP工具 (ZC: 我听到的是 "VMP help" 还是 "VMP hacker"?),也就是 所谓的 代码还原与垃圾指令清除 的 人肉流 (ZC: 什么东西?)。人肉 就是 用手工 把它还原的意思

  【35:20】VMPhelper(ZC: 一个应用程序),点击 "Browser" 选择 桌面上的 NOTEPAD.exe,点击 "Generate"。它就回得了一个 VMP parser的VMS文件(NOTEPAD.exe.vms),获得 一个 VMS文件 就是为了加密

  【35:47】VMP1704  -->文件 --> 打开-->选择 桌面上的 NOTEPAD.exe --> 脚本-->NOTEPAD.exe.vms,有这么多垃圾代码 (ZC: 右侧显示的就是 VMP要插入的垃圾代码?)-->【36:00】对它进行加密 (点击 按钮"编译(F9)")-->生成了文件 NOTEPAD.vmp.EXE

  【36:18】PEiD查壳 --> "什么也没有" --> 选择 "核心扫描" --> 还是"什么也没有" --> 区段中显示 有vmp0、cmp1

 

【36:30】OD 载入 NOTEPAD.vmp.EXE

  同样的方式,来到OEP。【37:21】到达OEP。删除 一个硬件断点 和 内存断点

  【37:31】OD插件脱壳,不 √选"重建输入表"。【37:41】程序运行OK。证明我们 脱壳没问题。【37:45】PEiD显示 VC7.0[Overlay] (ZC: 这里有[Overlay],怎么不需要像 教程 一套详细 里面那样来处理?这难道是 壳的[Overlay] 和 原程序无关?还是说 ∵ 脱壳了,于是 壳的代码就没用了 在PE头里面也没有了它们的相关信息,于是显示成了[Overlay]?)

  【37:55】但是 为了 跨平台修复,我们可以运行 脚本"VMP1.7 IAT修复脚本.txt"(ZC: 现在的代码执行到的位置为 0x0100739D),【38:00】输入2个值(脚本运行窗口,继续) 脚本一下子就跑完了 (ZC: 代码执行位置 还是在0x0100739D)

  【38:20】打开 ImportREC,选择 被OD调试的 NOTEPAD.vmp.EXE,输入OEP,点击 "自动查找 "IAT" 发现了一些信息,点击 "获取输入表" 显示 0个有效模块 0个输入函数,找不到函数。【38:43】右击 高级命令 选择代码块,直接dump(点击 "完整转存")(ZC: 生成文件 NOTEPAD.vmp_dump.EXE)。程序运行OK

    【39:10】用 LoadPE 将NOTEPAD.vmp_dump.EXE 的入口点,改成我们找到的 OEP,这里 它 的值就是 739D(无需修改了)

 

【39:20】跑了这和脚本之后 脱掉VMP1704壳的程序 就可以 跨平台了,它修复了 VMPhacker的IAT

 

【39:52】OSCEditor 打开 "VMProtect 修复脚本.txt",太长 无法打开

【40:02】OSCEditor 打开 "VMP IAT高级处理脚本.osc"

【40:21】脚本的使用也很简单,方法差不多 跑一下,获得一个 IAT log,生成一个dll 就可以跨平台了(ZC: 如何生成?),这个主要是应用于1.8

 

【41:05】打开 "VMProtect 修复脚本.txt"

【41:06】就是刚才那些步骤,然后到达OEP,然后对于它的hack的VMP dll 进行修复一下,这么一个过程

 

 

C

ZC:

  下载 XueTr,VMP的各个版本,网购 积木(大)

  VB6.0、VS08、BC++6

 

"VMP1.7 IAT修复脚本.txt"

http://wenku.baidu.com/link?url=57aywD0Q6WTnl7XKbIHuEwWENnSuPS32QO8X0a0gHpOOzdnNt_K0mK2cucVaEHVScq8qDaE_lpNHgFdd29UwSKsEB3JDogemrCbTlGk9M_S

X

 

posted @ 2016-06-28 14:36  DebugSkill  阅读(309)  评论(0编辑  收藏  举报