使用易语言实现远程CALL调用
思路:
1、使用CE先将代码写好,并复制出其字节码
2、再目标进程中申请内存,并写入其字节码
3、在目标进程中创建远线程,实现远程CALL的调用
代码如下
1、使用的模块是精易模块
2、程序功能:对CS1.6的刷枪CALL的外部调用
====》_启动窗口集
.程序集 窗口程序集_启动窗口
.程序集变量 目标文件, 整数型
.程序集变量 文本数据, 文本型
.程序集变量 文本数组, 武器
.程序集变量 武器数据, 武器, , "0"
.程序集变量 远进程地址, 整数型
.程序集变量 刷枪CALL地址, 整数型
.子程序 __启动窗口_创建完毕
.如果真 (进程验活 () = 假)
返回 ()
.如果真结束
加载文本数据 ()
刷枪CALL地址 = 刷枪CALL ()
远进程地址 = 写远程数据 (刷枪CALL地址)
加载文本数据 ()
.子程序 加载文本数据
目标文件 = 打开文件 (“C:\Users\Administrator\Desktop\sj.txt”, #读入, )
.判断循环首 (真)
' 判断是否到文件尾部
文本数据 = 读入一行 (目标文件)
.如果真 (文本数据 = “”)
跳出循环 ()
.如果真结束
文本数组.武器偏移 = 取文本左边 (文本数据, 6)
文本数组.武器名称 = 取文本右边 (文本数据, 取文本长度 (文本数据) - 7)
加入成员 (武器数据, 文本数组)
列表框1.加入项目 (文本数组.武器名称, )
.判断循环尾 ()
.子程序 _列表框1_列表项被选择
.局部变量 id, 整数型
.局部变量 武器数据ID, 整数型
.局部变量 自己武器基地址, 整数型
id = 列表框1.现行选中项 + 1
.如果真 (id < 0)
返回 ()
.如果真结束
武器数据ID = 读库武器地址 (武器数据 [id].武器偏移)
自己武器基地址 = 读取自己武器基地址 ()
更换武器 (远进程地址, 武器数据ID, 自己武器基地址)
=======》程序集1
.版本 2
.支持库 spec
.程序集 程序集1
.程序集变量 进程名, 文本型
.程序集变量 进程ID, 整数型
.程序集变量 进程句柄, 整数型
.程序集变量 模块句柄, 整数型
.程序集变量 ModuleInfo, 精易_模块信息, , "0"
.子程序 取模块地址, 整数型, , 读取模块基地址
.参数 PID, 整数型
.参数 模块名称, 文本型
.局部变量 i, 整数型
.局部变量 mAddr, 整数型
进程_ID取模块 (PID, ModuleInfo)
.计次循环首 (取数组成员数 (ModuleInfo), i)
.如果真 (模块名称 = 到文本 (ModuleInfo [i].模块文件名))
mAddr = ModuleInfo [i].base
跳出循环 ()
.如果真结束
.计次循环尾 ()
返回 (mAddr)
.子程序 读库武器地址, 整数型, , 取武器偏移地址
.参数 偏移, 文本型
.局部变量 枪地址, 整数型
.局部变量 mpdll, 整数型
mpdll = 取模块地址 (进程ID, “mp.dll”)
枪地址 = mpdll + 进制_十六到十 (偏移)
返回 (枪地址)
.子程序 读取自己武器基地址, 整数型, , 取自己武器基地址
.局部变量 自己武器基地址, 整数型
' cstrike.exe+11069BC
' 自己武器基地址 - 第2个参数
自己武器基地址 = 取模块地址 (进程ID, 进程名) + 十六进制 (“11069BC”)
ReadProcessMemory_整数型 (进程句柄, 自己武器基地址, 自己武器基地址, 4, 0)
ReadProcessMemory_整数型 (进程句柄, 自己武器基地址 + 十六进制 (“7c”), 自己武器基地址, 4, 0)
返回 (自己武器基地址)
.子程序 调用远程call, , , 调用远程进程
.参数 程序地址, 整数型
CreateRemoteThread (进程句柄, 0, 0, 程序地址, 0, 0, 0)
.子程序 写远程数据, 整数型, , 申请内存
.参数 刷枪CALL, 整数型
.局部变量 远程数据, 字节集
.局部变量 子程序地址, 整数型
' 60 68 F8 19 EA 1F B9 E0 B0 1E 01 E8 30 8B A2 1F 61
' 内存_远程调用子程序 (进程句柄, 十六进制 (“10340000”), , , )
远程数据 = { 96, 104, 0, 0, 0, 0, 185, 0, 0, 0, 0, 232, 0, 0, 0, 0, 97, 195 }
子程序地址 = 内存_远程创建内存_字节集 (进程句柄, 远程数据)
.如果真 (子程序地址 = 0)
信息框 (“内存分配失败”, 0, , )
返回 (0)
.如果真结束
刷枪CALL = 刷枪CALL - (子程序地址 + 11) - 5
WriteProcessMemory_整数3 (进程句柄, 子程序地址 + 12, 刷枪CALL, 4, 0)
返回 (子程序地址)
.子程序 更换武器, , , 换武器
.参数 子程序地址, 整数型
.参数 武器地址, 整数型
.参数 自己武器基地址, 整数型
' 写内存数据
WriteProcessMemory_整数3 (进程句柄, 子程序地址 + 2, 武器地址, 4, 0)
WriteProcessMemory_整数3 (进程句柄, 子程序地址 + 7, 自己武器基地址, 4, 0)
调试输出 (子程序地址)
调用远程call (子程序地址)
.子程序 进程验活, 逻辑型, , 进程是否存在
进程名 = “cstrike.exe”
.如果真 (进程_是否存在 (进程名) = 假)
信息框 (“请启动进程”, 0, , )
返回 (假)
.如果真结束
进程ID = 进程_名取ID (进程名)
进程句柄 = 进程_打开1 (进程ID)
返回 (真)
.子程序 刷枪CALL, 整数型
.局部变量 刷枪CALL地址, 整数型
刷枪CALL地址 = 取模块地址 (进程ID, “mp.dll”) + 十六进制 (“98B40”)
返回 (刷枪CALL地址)
====》自定义数据类型
.数据类型 武器, 公开
.成员 武器偏移, 文本型
.成员 武器名称, 文本型
====》启动窗口
效果展示:
备注
1、CE中调用CALL的框架如下
2、在目标进程中写入CALL地址时的计算公式如下: 字节码 = 目标地址 - 源地址 - jcc指令长度,在该实例中为:字节码 = 子程序地址 - 申请内存地址 - 5
使用易语言实现远程CALL调用相关推荐
- 易语言局域网 php 控制,易语言控制端源码,易语言被控制源码,易语言局域网远程控制源码...
下面我们对易语言控制端源码,易语言被控制源码,易语言局域网远程控制源码文件阐述相关使用资料和易语言控制端源码,易语言被控制源码,易语言局域网远程控制源码文件的更新信息. 易语言控制端源码,易语言被控制 ...
- C语言 游戏远程call调用,创建远程线程 调用游戏所有call
[hide] 函数原型 HANDLE CreateRemoteThread( HANDLE hProcess, // handle to proces ...
- C语言 游戏远程call调用,C++远程调用类操作支持CallbackInterface(1)
今天展示一下如何使用这里描写的库实现一个简单的聊天工具.Callback Interface是昨晚才加的,但是还有一些features没实现,等做完了再做一个Demo,然后提供源代码. 使用这个库开发 ...
- 易语言编程-远程封包拦截与发送技术
我们前面学习了封包拦截的技术和发送技术,但都是用DLL的注入方式来进行拦截封包的 那么有没有一种可以不需要注入,就可以拦截到指定进程里的封包数据呢? 答案是肯定的:有的 Game-EC模块的最新版本就 ...
- C语言 游戏远程call调用,关于远程注入游戏并调用 call 的问题
[C#] 纯文本查看 复制代码UInt32 Codecave = _Magic.AllocateMemory(); uint ptr = 0; try { int param1 = _Magic.Re ...
- 易语言c调用,易语言调用C++编写的DLL
511遇见网站最近在录制一套易语言编写DLL及调用和Hook,今天记录一下使用VS2015编写一个C++的Dll,易语言来调用. 步骤: 1.启动VS2015 2.创建工程 3.Visual C++ ...
- 易语言调用大漠字库显示游戏坐标和角色等级
大漠插件可以调用多个字库 ,通过SetDict(index,file)设置字库,UseDict(index)切换字库,,通过不同的字库来读取游戏的等级,坐标,城市位置,通过时钟来时时显示游戏角色的坐标 ...
- 易语言python_Python如何调用易语言DLL
对Python能够调用天下语言一直有所耳闻,今天试试能不能调用易语言,虽说不能调用.e文件,但至少易语言生成的dll文件应该问题不大.接下来就开始调用. 被调用的易语言dll: .版本 2 .子程序 ...
- 逆向易语言程序执行流程
首先在生成可执行文件后,易语言编译器会提示你"是否将此程序的相关依赖写出到同一目录中" 程序流程如下(先假设此程序相关依赖文件写出到同一目录中): 1:使用GetModuleFil ...
最新文章
- RHEL6.3 DNS高级技术二 通过DNS主从区域复制实现DNS View负载均衡和冗余备份
- android 常用小功能(第二版)
- 期初付年金(annuity-due)
- 【数据结构与算法】之深入解析“石子游戏III”的求解思路与算法示例
- IDEA项目找不到浏览器报错的情况
- 实现Windows直接远程访问Ubuntu桌面和解决VNC连接Ubuntu桌面灰色的问题解决
- ArrayList list = new ArrayList(20);中的list扩充几次
- php中append,插入节点append()、insertAfter()的特殊用法:对原有DOM元素进行移动
- Oracle全文索引之六 附:CONTAINS函数
- 计算机中丢失ENWeb,webapi session 丢失
- VS2010应用程序工程中文件的组成结构
- AutoCAD自定义填充图样详细教程
- iOS 更改webView文字颜色丶文字大小丶背景色的方法
- 基于主轴变换的医学图像倾斜校正
- 唱情歌的人和听的人为何那么认真?
- 没有配置resolv.conf
- Cadence Allegro自动放置所有元件图文教程及视频演示
- kubernetes中metrics-server与HPA
- 死囚试毒酒问题(改编)
- 使用VMware虚拟机安装Red Hat Enterprise Linux8/9教程