内联汇编方式本地调用某游戏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入口
我还是不太懂, 我知道你这个是 丝路的选怪CALL但是你的 EBP没有值啊~ 这样可以吗?
qq553445424 发表于 2011-4-25 12:40 static/image/common/back.gif
我还是不太懂, 我知道你这个是 丝路的选怪CALL但是你的 EBP没有值啊~ 这样可以吗?
在反汇编当中得知易程序的特征为子程序的第一个传入参数地址.为第一个局部变量的存放地址EBP没值?你真逗. 水平太差,真没能看懂 说实在的,这种方式我也不太懂~~ 主要是注入还没有整懂,呵呵~ 命令基本上懂了 不是要要转换成{000,000,000}这样的形式吗
页:
[1]