欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

Vmp 静态分析: 第一步加载需要分析的代码(自己定制 PE Loader)

Vmp 静态分析: 第一步加载需要分析的代码(自己定制 PE Loader)

当你需要分析一个文件中的代码的时候,第一步就是需要打开这个文件,加载其代码到内存里面吧。当然我们这里只讨论一下 Windows 下的PE文件,其他操作系统下的执行文件请参考各自的文件说明。
如果要加载一个PE文件,首先会想到的是是什么? LoadLibrary? 奥,不,在我们这里不能使用 LoadLibrary, 因为LoadLibrary函数会执行很多代码,如果是dll 文件,就会执行dll 文件 EntryPoint 很多dll 在EntryPoint 中做了些额外的事情,可能修改执行环境。所以我们不能选择 LoadLibrary。那么带参数的 LoadLibraryEx 怎么样?  LoadLibraryEx 也会试图解析 dll/exe 的 IAT,加载一些连接的 dll,有时候会给我们的分析造成麻烦。
所以,我们自己手工来加载 exe/dll 文件吧, 自己来实现 LoadLibraryEx 吧,记得,请不要加载 IAT中的任何 dll, 反正我们就只需要把 pe 文件摊开在内存中,其他的甚么都不要做,哦,重定位需要做一下的。
如何手工加载 pe文件? 这是搞安全工作的任务。请参考以下文章
1) 微软的msdn Microsoft Portable Executable and Common Object File Format Specification
2) Iczelion's PE Tutorial
 3) ReactOS 对 PE文件的加载代码在 $ReactOs/trunk/reactos/dll/win32/kernel32/client/loader.c 里面实现
4) 看不懂英文? 百度呀,输入PE文件格式,手动加载 PE 文件等等,会列出千百万个相同的或者类似的搜索结果,当然注意开启防火墙,**的网络环境很厉害!!!!!!
当你加载完代码后,请分析一下,哪段代码是可以执行的,哪段地址所指的数据是不可执行的。这为以后我们的分析提供了必要的环境。Dll EntryPoint 在哪儿? 如果我要从dll 映像中读取一个dword 需要做些什么工作? 导入表,导出表的详细信息,什么地方导出什么函数,自己加载的好处就是,自己对代码数据的所知非常清楚。等等……
到此为止,我们就把PE文件,干干净净的加载到内存里面了

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功