朱朱你堕落了 发表于 2024-11-20 12:37

x64如何加载DLL?

程序:https://www.123865.com/s/YL29-zDvRh

这里只是加了个强壳测试一下,要实现的目的是:
支持动态基址,支持多平台,如到win7/win10/win11系统上管用。
x64汇编实现LoadLibrary加载DLL.

原理应该是这样的吧:
好像就是从PEB查找kernel32,之后再遍历导出表,找到LoadLibrary地址,之后call这个地址,实现
DLL加载。

如本例:
OEP:
00000001408B9058 <mf | E8 82010000                     | call mfc_protec.1408B91DF

搜索00区域,如:
0000000140C8058F   | 0000                            | add byte ptr ,al

修改如下,即OEP处CALL 00区域的地址

00000001408B9058 <mf | E8 32753C00                     | call mfc_protec.140C8058F

0000000140C8058F处修改类似如下:
push rax
......
call xxxx
......
pop rax
jmp 1408B91DF

软件加的TMD壳,没有选择自校验,可以直接修改,实现后加载TestDll.dll,如下图:

https://im.gurl.eu.org/file/0f3e97dcd5c87c1831a90-8daa10bb9fdb97f67f.png

朱朱你堕落了 发表于 2024-11-20 17:20

@董督秀

发我测试下,可以发私信。

爱飞的猫 发表于 2024-11-21 21:58

C 里面写,抠汇编出来用。

另外 ntdll 也有 LdrLoadDll 方法可以用(字符串需要先使用 RtlInitUnicodeString 处理)。
页: [1]
查看完整版本: x64如何加载DLL?