內存加載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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM