|
|

5精币
纯讨论,发悬赏让搜索引擎更好的收录,帮助有需要的人吧。 本人纯业余小白 说的不对的大佬补充
最近失业,在家实在是无聊,搞了一个某台服DXF单机版,功能没什么意思,主要研究一下思路。然后来到了 注入环节。其实注解注入DLL最方便。但是我没选择注入dll
搞过这类的兄弟们 都熟悉一套 标准的小公式。这是超级模块里的命令。很奇怪在某些游戏里面调用不崩溃,在这里就崩溃了。 然后换了 “CallWindowProcA” 方式注入可以了。后来又发现精易的一个命令 “内存_远程调用子程序” 都可以。 此时我陷入沉思,N年前还是伸手党的时候,大家都这么写也没见崩溃,然后开始找源码研究。
这是超级模块调用函数的构成。太白了 真没看出哪里有问题 打开进程>取代码长度>分配内存>写入代码>创建线程调用>关闭线程。个别游戏不崩,个别游戏崩。
|
| 调用函数 | 逻辑型 | | |
| 进程ID | 整数型 | | | | 代码 | 字节集 | | | | 内存地址 | 整数型 | | | |
| 变量名 | 类 型 | 静态 | 数组 | 备 注 | | 进程句柄 | 整数型 | | | | 线程句柄 | 整数型 | | | | 长度 | 整数型 | | |
如果 (是否为空 (进程ID ) 或 进程ID = _取自进程ID ())  进程句柄 = _打开当前进程 () 进程句柄 = _打开进程 ( #PROCESS_ALL_ACCESS, 0, 进程ID ) 如果真 (进程句柄 ≠ 0 ) 长度 = 取字节集长度 (代码 ) + 1  内存地址 = _分配内存 (进程句柄, 0, 长度, 4096, 4 ) _内存写字节集 (进程句柄, 内存地址, 代码, 长度, 0 ) 如果 (进程句柄 = -1 ) _CALL (内存地址 )  线程句柄 = _创建远程线程 (进程句柄, 0, 0, 内存地址, 0, 4, 0 ) _恢复线程 (线程句柄 ) _等待对象信号 (线程句柄, -1 ) _关闭对象 (线程句柄 ) 如果真 (是否为空 (内存地址 ))  _释放内存 (进程句柄, 内存地址, 长度, 32768 ) _关闭对象 (进程句柄) 返回 (真)返回 (假)
比较懒,自己组装了一个 测试 没问题。
| 变量名 | 类 型 | 静态 | 数组 | 备 注 | | 局_线程句柄 | 整数型 | | | | 局_进程句柄 | 整数型 | | | | 局_长度 | 整数型 | | |
局_长度 = 取字节集长度 (代码 )局_进程句柄 = 进程_打开 (进程ID )写内存字节集 (进程ID, 空白地址, 代码, 局_长度 ) 局_线程句柄 = _创建远程线程 (进程句柄, 0, 0, 空白地址, 0, 4, 0 )线程_恢复 (局_线程句柄 )线程_等待 (局_线程句柄, )_关闭对象 (局_线程句柄 )
大佬看看问题出在哪里?
补充内容 (2025-11-22 20:59):
没测试,我感觉是申请内存的问题,他写的是#PAGE_READWRITE,我写的是#PAGE_EXECUTE_READWRITE
他是读写,我是读写执行 |
最佳答案
查看完整内容
内存地址 = _分配内存 (进程句柄, 0, 长度, 4096, 4)
属性是4 你都看出问题了还是什么好讨论的,换64不就正常了
还有 _释放内存 (进程句柄, 内存地址, 长度, 32768)
不如用CE或者别的软件看一下释放内存这样写有没有问题,怪不得经常看到有人说CALL完了内存一直增加
回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。 友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。 快捷通道:申请荣誉值 →
|