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
@董督秀
发我测试下,可以发私信。 C 里面写,抠汇编出来用。
另外 ntdll 也有 LdrLoadDll 方法可以用(字符串需要先使用 RtlInitUnicodeString 处理)。
页:
[1]