|
本帖最后由 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入口
|
|