找回密码
 注册帐号
查看: 5764|回复: 6

[源码分享] 内联汇编方式本地调用某游戏CALL的列子

[复制链接]
发表于 2011-4-25 10:38:46 | 显示全部楼层 |阅读模式
本帖最后由 xiaomeimei 于 2011-4-25 15:28 编辑

发个内联汇编方式调用某宿主程序CALL的列子,其实这样的列子还可以演变成不用系统ReadProcessMemory与WriteProcessMemory读取和写入内存数据.前提是注入到宿主程序里面直接本地调用.其中需要的汇编支持库可在易官方论坛上找到.当然在没有汇编支持库的环境下还是可以用易自身的置入代码()命令把汇编指令转变成字节集的形式的.只是那样麻烦些.
.版本 2

.子程序 Id_选目标
.参数 目标地址, 整数型, , 汇编中第一个参数为[ebp+8]
.局部变量 CALL入口, 文本型, , , 汇编中第一个变量地址为[ebp-4]

' 007A734B  |> \8B8F F8000000 MOV ECX,DWORD PTR DS:[EDI+F8]            ;  选择目标CALL
' 007A7351  |.  51            PUSH ECX                                 ; /Arg1
' 007A7352  |.  8BCE          MOV ECX,ESI                              ; |
' 007A7354  |.  E8 079EFFFF   CALL sro_clie.007A1160                   ; \sro_clie.007A1160
' 上面的为选择目标CALL原形实际上可以简化成如下模式传入参数ECX即可ECX为目标ID
' PUSH ECX
' MOV ECX,ESI
' CALL sro_clie.007A1160

CALL入口 = “007A1160”
置入代码 (“mov esi dword ptr ss:[011184F4]”)
置入代码 (“mov edi,dword ptr ss:[ebp+8]”)  ' 这里EBP+8即为子程序参数目标地址
置入代码 (“MOV ECX,DWORD PTR DS:[EDI+F8]”)
置入代码 (“PUSH ECX”)
置入代码 (“MOV ECX,ESI”)
置入代码 (“CALL dword ptr ss:[ebp-4]”)  ' 这里的EBP-4即为变量CALL入口

发表于 2011-4-25 12:40:31 | 显示全部楼层
我还是不太懂, 我知道你这个是 丝路的选怪CALL  但是你的 EBP没有值啊~ 这样可以吗?


回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-4-25 15:12:18 | 显示全部楼层
qq553445424 发表于 2011-4-25 12:40
我还是不太懂, 我知道你这个是 丝路的选怪CALL  但是你的 EBP没有值啊~ 这样可以吗?

在反汇编当中得知易程序的特征[ebp+8]为子程序的第一个传入参数地址.[ebp-4]为第一个局部变量的存放地址EBP没值?你真逗.
回复 支持 反对

使用道具 举报

发表于 2011-8-27 09:20:40 | 显示全部楼层
水平太差,真没能看懂
回复 支持 反对

使用道具 举报

发表于 2011-8-31 08:30:06 | 显示全部楼层
说实在的,这种方式我也不太懂~~
回复 支持 反对

使用道具 举报

发表于 2011-8-31 21:29:57 | 显示全部楼层
主要是注入还没有整懂,呵呵~ 命令基本上懂了
回复 支持 反对

使用道具 举报

发表于 2011-9-3 11:00:11 | 显示全部楼层
不是要要转换成{000,000,000}这样的形式吗
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

QQ|Archiver|手机版|小黑屋|依人网络官方网站 ( 陕ICP备19025998号-1 )

GMT+8, 2024-4-18 20:38 , Processed in 0.079539 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表