易语言置入代码动态版
.版本 2
.支持库 spec
.程序集 程序集
.子程序 _启动子程序, 整数型
写到文件 (“代码数据.bin”, { 139, 69, 8, 137, 236, 93, 194, 4, 0 })
' mov eax,[ebp+8]
' mov esp,ebp
' pop ebp
' retn 4
输出调试文本 (指针到整数 (取变量地址_ (123123123)))
调试输出 (指针到字节集 (取字节集数据地址 ({ 1, 2, 3, 4, 5 }), 5))
调用子程序_ (到整数 (&子程序), 1, 2)
返回 (0)
.子程序 置入代码_动态, , 公开, By 轻飘飘的风
.参数 代码数据, 通用型, , 欲置入到代码段中的机器指令码数据,可以是字节集数据或二进制文件名文本。
.局部变量 代码文件, 逻辑型
.局部变量 临时代码, 字节集
.局部变量 数据地址, 整数型
代码文件 = 假
临时代码 = { }
数据地址 = 0
置入代码 ({ 139, 69, 8, 131, 56, 1, 117, 5, 131, 192, 8, 235, 7, 199, 69, 252, 1, 0, 0, 0, 137, 69, 244 })
' mov eax,[ebp+8]
' cmp dword [eax],1
' jne x1
' add eax,8
' jmp x2
' x1:
' mov dword [ebp-4],1
' x2:
' mov [ebp-12],eax
.如果真 (代码文件)
临时代码 = 读入文件 (指针到文本 (数据地址))
.如果真 (临时代码 = { })
返回 ()
.如果真结束
置入代码 ({ 139, 69, 248, 131, 192, 8, 137, 69, 244 })
' mov eax,[ebp-8]
' add eax,8
' mov [ebp-12],eax
.如果真结束
VirtualProtect (数据地址, 1, #PAGE_EXECUTE_READWRITE, 0)
置入代码 ({ 139, 69, 244, 137, 236, 93, 255, 224 })
' mov eax,[ebp-12]
' mov esp,ebp
' pop ebp
' jmp eax
返回 ()
.子程序 取变量地址_, 整数型
.参数 变量, 通用型, 参考
置入代码_动态 (“代码数据.bin”)
返回 (0)
.子程序 取字节集数据地址, 整数型
.参数 字节集, 字节集
置入代码_动态 ({ 139, 69, 8, 139, 0, 131, 192, 8, 137, 236, 93, 194, 4, 0 })
' mov eax,[ebp+8]
' mov eax,[eax]
' add eax,8
' mov esp,ebp
' pop ebp
' retn 4
返回 (0)
.子程序 调用子程序_, 整数型
.参数 子程序地址, 整数型
.参数 参数一, 整数型
.参数 参数二, 整数型
置入代码_动态 ({ 137, 236, 93, 88, 135, 4, 36, 255, 224 })
' mov esp,ebp
' pop ebp
' pop eax
' xchg [esp],eax
' jmp eax
返回 (0)
.子程序 子程序, 整数型
.参数 参数一, 整数型
.参数 参数二, 整数型
输出调试文本 (“参数一 -> ” + 到文本 (参数一), “参数二 -> ” + 到文本 (参数二))
返回 (参数一 + 参数二)
置入代码动态
易语言置入代码
易语言的置入代码
易语言置入代码是如何调用的
易语言置入代码制作辅助教程
易语言置入代码详解
易语言动态置入代码,完美版,修复内存属性问题