内存加载PE文件(nim学习系列)

内存加载PE文件(nim学习系列)

项目地址:

https://github.com/S3cur3Th1sSh1t/Nim-RunPE

该项目源于https://github.com/aaaddress1/RunPE-In-Memory,S3cur3Th1sSh1t将其转成nim lang版本。

要求安装nim-1.6.4或者更高版本,然后安装依赖库:

nimble install ptr_math winim

测试

默认加载的是计算器 C:\windows\system32\calc.exe

calc.exe

加下来我们尝试加载 mimikatz,根据作者的介绍,mimikatz需要下载源码自行编译,因为使用gentilkiwi的发行版exe加载后,无法传递参数。

关于mimikatz的编译可以参考以下两篇文章:

https://blog.csdn.net/qq_38963246/article/details/113096417

https://opensource-sec.com/2021/01/23/曲折的mimikatz编译之路/

我是使用Visual Studio 2019编译的

mimikatz的编译

mimikatz

收获

内存加载PE文件的实现原理:

  1. 读取PE文件,按照PE格式进行解析
  2. 申请内存,ImageBase作为内存基地址,SizeOfImage作为长度
  3. 将PE文件头复制到内存中
  4. 解析Section的地址并将Section复制到内存中
  5. 基于重定位表修改内存
  6. 解析导入表,加载所需的Dll
  7. 跳转到入口地址AddressOfEntryPoint,执行PE文件

在作者的私有项目Packer中,使用Syscalls替换掉了Win32 functions。通过这个项目加深了C/C++项目转nim的理解,这就是收获。
From: https://www.cnblogs.com/StudyCat/p/16001615.html

posted @ 2022-03-13 20:20  StudyCat  阅读(771)  评论(0编辑  收藏  举报