xiaomeimei 发表于 2011-4-23 10:07:29

易语言之动态调用DLL

发个易语言动态调用(通过置入代码)DLL的东西.稍为修改下就能像C一样简单方便的使用内联汇编.晕我发不了源码粘贴其中一个子程序吧.对比下易方式调用ReadProcessMemory函数和现在有什么不一样就能看明白了这里主要是学会理解易程序的参数和变量在寄存器里的地址变化.弄清楚了就能像C一样方便使用内联汇编.
.版本 2
.子程序 _按钮2_被单击, , , 动态调用读内存
.局部变量 hProcess, 整数型
.局部变量 内存地址, 整数型
.局部变量 内存数据, 整数型
读内存数据 (Process, 4202496, 内存数据, 4, 0)
编辑框1.内容 = 取十六进制文本 (内存数据)

.版本 2
.子程序 读内存数据, 整数型, , C方式动态调用DLL成功返回1失败返回0
.参数 hProcess, 整数型, ,
.参数 lpBaseAddress, 整数型, , 内存地址
.参数 lpBuffer, 整数型, 参考, 数据指针
.参数 nSize, 整数型, , 长度
.参数 lpNumberOfBytesWritten, 整数型, , 实际写出长度
.局部变量 装载句柄, 整数型, , , ebp-4
.局部变量 函数入口, 整数型, , , ebp-8
装载句柄 = LoadLibraryExA (“kernel32.dll”, 0, 0)
函数入口 = GetProcAddress (装载句柄, “ReadProcessMemory”)
.如果真 (装载句柄 > 0)
    ' “push dword ptr ss:” 255, 117, 24
    ' “push dword ptr ss:” 255, 117, 20
    ' “push dword ptr ss:” 255, 117, 16
    ' “push dword ptr ss:” 255, 117, 12
    ' “push dword ptr ss:” 255, 117, 8
    ' “call dword ptr ss:” 255, 85, 248 //这里可以改成CALL EAX 255, 208
    ' MOV EAX,DWORD PTR SS: 139,69,16
    ' “mov esp,ebp” 139, 229,
    ' “pop ebp”93
    ' “retn 14”194, 20, 0
    置入代码 ({ 255, 117, 24, 255, 117, 20, 255, 117, 16, 255, 117, 12, 255, 117, 8, 255, 85, 248, 139, 229, 93, 194, 20, 0 })
    ' 置入代码 ({ 255, 117, 24, 255, 117, 20, 255, 117, 16, 255, 117, 12, 255, 117, 8, 255, 85, 248, 139, 69, 16 })
    FreeLibrary (装载句柄)
    返回 (1)
.如果真结束
返回 (0)

qq553445424 发表于 2011-4-24 02:12:56

这是什么游戏CALL啊?是不是丝路的啊?

xiaomeimei 发表于 2011-4-24 07:42:55

qq553445424 发表于 2011-4-24 02:12 static/image/common/back.gif
这是什么游戏CALL啊?是不是丝路的啊?

我是菜鸟不懂什么游戏CALL,上面的只是动态调用系统的ReadProcessMemory函数{:1_81:}

qq553445424 发表于 2011-4-24 23:24:25

意思很简单的但是要查找丝路的CALL困难啊!我发觉丝路丝路的代码 比其他网络游戏 难找得多 老是出现循环CALL 就是 这些游戏把 某个动作 功能封装成函数,方便调用,要实现哪个功能 只掉调用这个函数就可以了!所以才有做挂的啊

xiaomeimei 发表于 2011-4-25 00:55:32

qq553445424 发表于 2011-4-24 23:24 static/image/common/back.gif
意思很简单的但是要查找丝路的CALL困难啊!我发觉丝路丝路的代码 比其他网络游戏 难找得多 老是出现循环 ...

学习计算机语言不一定要做某些辅助程序的.首先出发点就不对基础不好的话怎么搞都是瞎子摸象!!!
页: [1]
查看完整版本: 易语言之动态调用DLL