xiaomeimei 发表于 2011-4-25 10:38:46

内联汇编方式本地调用某游戏CALL的列子

本帖最后由 xiaomeimei 于 2011-4-25 15:28 编辑

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

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

' 007A734B|> \8B8F F8000000 MOV ECX,DWORD PTR DS:            ;选择目标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:”)
置入代码 (“mov edi,dword ptr ss:”)' 这里EBP+8即为子程序参数目标地址
置入代码 (“MOV ECX,DWORD PTR DS:”)
置入代码 (“PUSH ECX”)
置入代码 (“MOV ECX,ESI”)
置入代码 (“CALL dword ptr ss:”)' 这里的EBP-4即为变量CALL入口

qq553445424 发表于 2011-4-25 12:40:31

我还是不太懂, 我知道你这个是 丝路的选怪CALL但是你的 EBP没有值啊~ 这样可以吗?


xiaomeimei 发表于 2011-4-25 15:12:18

qq553445424 发表于 2011-4-25 12:40 static/image/common/back.gif
我还是不太懂, 我知道你这个是 丝路的选怪CALL但是你的 EBP没有值啊~ 这样可以吗?

在反汇编当中得知易程序的特征为子程序的第一个传入参数地址.为第一个局部变量的存放地址EBP没值?你真逗.

zsbgx 发表于 2011-8-27 09:20:40

水平太差,真没能看懂

clong 发表于 2011-8-31 08:30:06

说实在的,这种方式我也不太懂~~

clong 发表于 2011-8-31 21:29:57

主要是注入还没有整懂,呵呵~ 命令基本上懂了

coody 发表于 2011-9-3 11:00:11

不是要要转换成{000,000,000}这样的形式吗
页: [1]
查看完整版本: 内联汇编方式本地调用某游戏CALL的列子