首页
社区
课程
招聘
未解决 [求助]易语言能否将64位DLL注入到64位程序,或者能否用易语言写64位的CALL然后应用到64位程序上 50.00雪花
发表于: 2019-5-26 17:23 8422

未解决 [求助]易语言能否将64位DLL注入到64位程序,或者能否用易语言写64位的CALL然后应用到64位程序上 50.00雪花

2019-5-26 17:23
8422
赏金有点少,不满意的可以站内私聊我,我可以增加最多500,将一个64位的CALL用易语言写出来,直接用C++写出来也行,不过得附上源码,数据是逆向得来的

下面附加一个是成品DLL,一个是CALL的汇编代码

能写的可以站内私聊,我可以单独加钱

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

最后于 2019-7-6 20:21 被只需一眼将你铭记心头编辑 ,原因:
上传的附件:
收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 6124
活跃值: (4466)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
2
参考wow64ext,进行代码封装和调用。
2019-5-26 23:44
0
雪    币: 6542
活跃值: (3812)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
50?
2019-5-27 02:21
0
雪    币: 17
能力值: (RANK:0 )
在线值:
发帖
回帖
粉丝
4
黑洛 参考wow64ext,进行代码封装和调用。
我在网上看到了这个WOW的源码,但是由于水平不够不知道怎么用易语言写出来,能不能麻烦大佬给个例子呢
2019-5-27 16:59
0
雪    币: 17
能力值: (RANK:0 )
在线值:
发帖
回帖
粉丝
5
zhatian 50?
我本来还有一个要帮忙的,但是论坛自动删除了。本来是要找一个精通64位反汇编的人帮我做个东西,但是论坛发出来就自动删除了,如果你有意向价钱可以另谈
2019-5-27 17:21
0
雪    币: 17
能力值: (RANK:0 )
在线值:
发帖
回帖
粉丝
6
zhatian 50?
如果有意向请点我头像看个人档案,论坛不允许发联系方式
2019-5-27 17:24
0
雪    币: 1570
活跃值: (383)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
7
应该符合你的要求吧

.版本 2
.支持库 spec

.子程序 子程序1
.局部变量 nt64, 长整数型
.局部变量 p, 长整数型
.局部变量 lRet
.局部变量 dqRet, 长整数型
.局部变量 retaddr, 长整数型
.局部变量 dqLen, 长整数型
.局部变量 old, 长整数型
.局部变量 bRet, 逻辑型
.局部变量 szText, 文本型
.局部变量 lpBin, 字节集
.局部变量 len
.局部变量 pid
.局部变量 hp
.局部变量 m
.局部变量 info, MEMORY_BASIC_INFORMATION64
.局部变量 info2, MEMORY_BASIC_INFORMATION32


.如果 (fn_WOW64Enabled ())
    调试输出 (“64位函数可用”)
    nt64 = GetNtdll64 ()
    调试输出 (nt64)
    p = GetModuleHandleEx64 (1023043677)
    调试输出 (p, len)
    p = GetModuleHandle64 (“ntdll.dll”)
    调试输出 (p, len)

    p = GetProcAddressEx64 (nt64, -718276507)
    调试输出 (p, len)
    p = GetProcAddress64 (nt64, “NtQueryVirtualMemory”)
    调试输出 (p, len)

    p = NtQuerySystemInformation64 (5, 0, 0, len)
    调试输出 (p, len)

    GetWindowThreadProcessId (330344, pid)  ' 这里是随意找的一个 64 程序窗口句柄作为第一参数
    调试输出 (“pid”, pid)
    hp = OpenProcess (位或 (8, 16, 32, 1024), 假, pid)
    调试输出 (“hp”, hp, “ProcessIsX64”, fn_ProcessIsX64 (hp))
    p = VirtualAllocEx64 (hp, 0, 1024, 位或 (#MEM_COMMIT, #MEM_RESERVE), #PAGE_READWRITE)

    lRet = VirtualQueryEx64 (hp, p, 指针到整数 (取变量数据地址 (info)), 48)
    调试输出 (lRet, info.BaseAddress, info.AllocationBase, info.AllocationProtect, info.RegionSize, info.State, info.Protect, info.Type, info.__alignment2)

    bRet = VirtualProtectEx64 (hp, p, 1024, #PAGE_EXECUTE_READWRITE, lRet)
    调试输出 (“VirtualProtectEx64”, bRet, lRet)

    szText = “本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。”
    调试输出 (取文本长度 (szText))
    bRet = WriteProcessMemory64 (hp, p, 取变量数据地址 (szText), 取文本长度 (szText), dqRet)
    调试输出 (“WriteProcessMemory64”, bRet, dqRet)
    lpBin = 取空白字节集 (dqRet)
    bRet = ReadProcessMemory64 (hp, p, 取变量数据地址 (lpBin), dqRet, dqRet)
    调试输出 (“ReadProcessMemory64”, bRet, dqRet)
    调试输出 (取字节集数据 (lpBin, #文本型, ))

    dqRet = NtQueryProcessPEB64 (hp)
    调试输出 (“NtQueryProcessPEB64”, dqRet)

    bRet = VirtualFreeEx64 (hp, p, 0, #MEM_RELEASE)
    调试输出 (p, bRet)


    CloseHandle (hp)


    ' X64Call 测试,每个函数如何使用及参数如何自行查阅
    ' 1944646861 1497890193 1772103807 -718276507 307609691 -919857027 1261240470 865864187 (2001885035 -145598612) 1797126944
    szText = “NtQuerySystemInformation”
    len = 取文本长度 (szText)
    lpBin = 到字节集 (len)
    len = len + 1
    lpBin = lpBin + 到字节集 (len)
    lpBin = lpBin + 到字节集 (到长整数 (取变量数据地址 (szText)))
    p = GetProcAddressEx64 (nt64, 1944646861)
    dqRet = X64Call (p, nt64, 取变量数据地址 (lpBin), 0, 取变量数据地址 (retaddr))
    调试输出 (dqRet, retaddr)

    GetWindowThreadProcessId (330344, pid)  ' 这里是随意找的一个 64 程序窗口句柄作为第一参数
    调试输出 (“pid”, pid)
    hp = OpenProcess (位或 (8, 16, 32, 1024), 假, pid)
    调试输出 (“hp”, hp, “ProcessIsX64”, fn_ProcessIsX64 (hp))

    p = GetProcAddressEx64 (nt64, 1497890193)
    retaddr = 0
    dqLen = 1024
    dqRet = X64Call (p, hp, 取变量数据地址 (retaddr), 0, 取变量数据地址 (dqLen), 位或 (#MEM_COMMIT, #MEM_RESERVE), #PAGE_READWRITE)
    调试输出 (dqRet, retaddr, dqLen)

    p = GetProcAddressEx64 (nt64, -718276507)
    dqRet = X64Call (p, hp, retaddr, 0, 指针到整数 (取变量数据地址 (info)), 48)
    调试输出 (“VirtualQueryEx64”, dqRet, info.BaseAddress, info.AllocationBase, info.AllocationProtect, info.RegionSize, info.State, info.Protect, info.Type, info.__alignment2)

    p = GetProcAddressEx64 (nt64, 307609691)
    dqLen = 1024
    dqRet = X64Call (p, hp, 取变量数据地址 (retaddr), 取变量数据地址 (dqLen), #PAGE_EXECUTE_READWRITE, 取变量数据地址 (old))
    调试输出 (“VirtualProtectEx64”, dqRet, retaddr, dqLen, old)


    p = GetProcAddressEx64 (nt64, 1772103807)
    dqLen = 0
    dqRet = X64Call (p, hp, 取变量数据地址 (retaddr), 取变量数据地址 (dqLen), #MEM_RELEASE)
    调试输出 (dqRet, retaddr, dqLen)
    CloseHandle (hp)



.否则
    调试输出 (“64位函数不可用”)
.如果结束


lRet = GetModuleHandleEx86 (1023043677)
调试输出 (lRet, GetNtdll86 (), GetKernel32 ())

hp = GetNtdll86 ()


lRet = GetProcAddressEx86 (hp, -718276507)
调试输出 (lRet, hp)
lRet = GetProcAddress86 (hp, “NtQueryVirtualMemory”)
调试输出 (lRet, hp)


GetWindowThreadProcessId (858388, pid)  ' 这里是随意找的一个 32 程序窗口句柄作为第一参数
调试输出 (“pid”, pid)
hp = OpenProcess (位或 (8, 16, 32, 1024), 假, pid)
调试输出 (“hp”, hp, “ProcessIsX64”, fn_ProcessIsX64 (hp))
m = VirtualAllocEx86 (hp, 0, 1024, 位或 (#MEM_COMMIT, #MEM_RESERVE), #PAGE_READWRITE)

lRet = VirtualQueryEx86 (hp, m, 指针到整数 (取变量数据地址 (info2)), 24)
调试输出 (lRet, info2.BaseAddress, info2.AllocationBase, info2.AllocationProtect, info2.RegionSize, info2.State, info2.Protect, info2.Type)

bRet = VirtualProtectEx86 (hp, m, 1024, #PAGE_EXECUTE_READWRITE, lRet)
调试输出 (“VirtualProtectEx86”, bRet, lRet)

szText = “本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。”
调试输出 (取文本长度 (szText))
bRet = WriteProcessMemory86 (hp, m, 取变量数据地址 (szText), 取文本长度 (szText), lRet)
调试输出 (“WriteProcessMemory86”, bRet, lRet)
lpBin = 取空白字节集 (dqRet)
bRet = ReadProcessMemory86 (hp, m, 取变量数据地址 (lpBin), lRet, lRet)
调试输出 (“ReadProcessMemory86”, bRet, lRet)
调试输出 (取字节集数据 (lpBin, #文本型, ))

dqRet = NtQueryProcessPEB86 (hp)
调试输出 (“NtQueryProcessPEB86”, dqRet)

bRet = VirtualFreeEx86 (hp, m, 0, #MEM_RELEASE)
调试输出 (m, bRet)


CloseHandle (hp)

lRet = NtQuerySystemInformation86 (5, 0, 0, len)
调试输出 (lRet, len)


' 调试输出 (g_Mods)
' 调试输出 (指针到整数 (指针到整数 (g_Mods)))

调试输出 (111)


上传的附件:
2019-5-29 16:50
2
雪    币: 17
能力值: (RANK:0 )
在线值:
发帖
回帖
粉丝
8
ezrealik 应该符合你的要求吧.版本 2 .支持库 spec .子程序 子程序1 .局部变量 nt64, 长整数 ...
这个符合了,谢谢大佬,不过大佬我还有一个东西想让你帮忙看下,方便点头像看我主页上的联系方式加我一下么,我可以给红包的
2019-5-30 01:24
0
雪    币: 248
活跃值: (3789)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
易语言编译器可以编译64位程序吗?
2019-5-30 02:40
0
雪    币: 17
能力值: (RANK:0 )
在线值:
发帖
回帖
粉丝
10
yy虫子yy 易语言编译器可以编译64位程序吗?
不可以,但是可以通过WOW写64位注入器
2019-5-31 02:40
0
雪    币: 96
活跃值: (225)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
只需一眼将你铭记心头 这个符合了,谢谢大佬,不过大佬我还有一个东西想让你帮忙看下,方便点头像看我主页上的联系方式加我一下么,我可以给红包的
兄弟,不地道啊,不结?
2019-6-20 18:32
0
雪    币: 17
能力值: (RANK:0 )
在线值:
发帖
回帖
粉丝
12
逃避不能对付一切 兄弟,不地道啊,不结?
不是不结啊,我他么不知道怎么分配余额
2019-7-6 20:07
0
雪    币: 173
活跃值: (807)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
14
感谢论坛的大牛,无私的分享经验!
2019-8-1 18:23
0
游客
登录 | 注册 方可回帖
返回
//