|
10精币
.版本 2
asm_置代码 ()
asm_Mov_EAX (十六到十 (“006EE310”))
asm_Call_EAX ()
asm_Ret ()
调用函数 (进程ID, asm_取代码 ())
输出调试文本 (转换_字节集转汇编指令 (asm_取代码 ()))
同样的代码我自己拼揍的这个汇编模块调用后如下图:
调用后出错
另一个能正确调用的模块输出提示:
从上面的圈圈中可以看到我自己的模块中的“*”加一个空格在第一行代码的头部,而别人的模块能正确调用的却是“*”号在代码之上,请问有没有大牛有开发汇编模块的经验,望告之啊,
我自己研究了一下,灰常怀疑是“调用函数”这个子程序出错,贴上来让大家分析下
.版本 2
.子程序 asm_调用函数, , 公开
.参数 PID, 整数型
.参数 Code, 字节集
.局部变量 线程句柄, 整数型
.局部变量 线程ID, 整数型
.局部变量 线程地址1, 整数型
.局部变量 线程地址2, 整数型
.局部变量 进程句柄, 整数型
.局部变量 OPcode, 字节集
.局部变量 CodeLen, 整数型
进程句柄 = 打开进程 (#PROCESS_ALL_ACCESS, 假, PID)
CodeLen = 取字节集长度 (Code) + 1
线程地址1 = 分配内存虚拟页 (进程句柄, 0, CodeLen, #MEM_COMMIT, 64)
写入内存 (进程句柄, 线程地址1, Code, CodeLen, 0)
线程句柄 = 远程创建线程 (进程句柄, 0, 0, 线程地址1, 0, CodeLen, 线程ID)
WaitForSingleObject (线程句柄, 1000)
释放内存虚拟页 (进程句柄, 线程地址1, 0, #MEM_RELEASE)
关闭进程 (线程句柄)
关闭进程 (进程句柄)
如果谁有没问题的源码能上传一个不,
补充内容 (2013-11-21 17:40):
图乱了。第二张图到最底部了,凑合着瞧吧= =, |
|