开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 10290|回复: 32
打印 上一主题 下一主题
收起左侧

[易语言成品模块] 易语言置入CE自动脚本模块

[复制链接]
结帖率:25% (4/16)
跳转到指定楼层
发表于 2013-6-9 20:13:39 | 只看该作者 回帖奖励 |正序浏览 |阅读模式   安徽省宣城市
分享例程
界面截图:
备注说明: -
首先我要声明:这个模块并不是我自研发法的,昨天我偶然间看到,由于作者允许传播,所以我结合此功能顺便开发了一下模块。
————————————————————————————————————————————————————
模块作者:axdx
置入作弊脚本调用aa_engine.dll
aa_engine.rar (51.36 KB, 下载次数: 152)
dll文件我已将打包了,有兴趣的同学可以研究一下。
dll其他函数
  1. .版本 2

  2. .DLL命令 取版本, 文本型, "aa_engine.dll", "Ver", 公开, 取版本号

  3. .DLL命令 取地址, 整数型, "aa_engine.dll", "GetAddress"
  4.     .参数 进程ID, 整数型
  5.     .参数 地址表达式, 文本型
复制代码
aa_engine.dll由来:
AA引擎由CE 5.61的Delphi源码中, 摘除并移植AA脚本直译器
    外加OD的汇编编译器(disasm)源码作为心脏。
说明:
版本: v1.21
作者: axdx


一、目前已支持的CE AA功能如下

alloc
label
registersymbol
unregistersymbol
globalalloc
fullaccess      (有某种限制, 不是所有内存区都有效)
aobscan         (支持使用??或*表示未知字节)
createthread    (此命令不管写在哪里, 永远是脚本中最后运行)
define
dealloc
assert          (支持使用??或*表示未知字节)
readmem

地址:行可用地址表达式   (请参看 GetAddress 函数说明)

DB, DW, DD, DQ 命令, 分别为单, 双, 四, 八字节数组写入

#123            表示十进制
(int)123        同样表示十进制
(float)         单精度浮点数(4字节)
(double)        双精度浮点数(8字节)
例:
mov [eax],(float)3.5
dd (float)123.5 (float)100
dq (double)200.75


注释方式有三种:  //单行   /*多行*/   {多行}


支持调用游戏空间中存在的 Win API 符号
例:
在游戏中调用两个API
先调用MessageBoxA显示一个"BYE BYE"信息
接着调用ExitProcess结束游戏进程
[enable]
alloc(newmem,4096)
label(text)

newmem:
push 0
push 0
push text
push 0
call messageboxA
push 0
call exitprocess
ret

text:
db 42 59 45 20 42 59 45 0  // "BYE BYE"

createthread(newmem)

[disable]
dealloc(newmem)



二、自定义符号表与人造指针

在AA脚本中可用如下方式加入自定义符号
registersymbol(pointer)
alloc(pointer,4)  
或者也可只用一行
globalalloc(pointer,4)
以上两种方式将pointer这个符号加入自定义符号表
并且动态分配了4字节的内存空间给pointer
我们不必知道这个4字节空间的正确地址
我们只要用pointer这个名称就可以代表该地址了

接下来可以把pointer当做人造指针, 在其内放入游戏数据的有效地址
由于自定义符号表为所有使用AA引擎的脚本共享
包含所有其他AA脚本, 在本脚本启动以后, 都可以直接以[pointer]当做地址使用

由于pointer是代表着由alloc分配的动态地址
人造指针实际是存放在地址pointer处
因此一般都是以[pointer]的形式来使用

也可以使用GetAddress函数, 直接取得pointer自身的地址, 或其内人造指针[pointer]的地址

当不再使用pointer的时候, 可以如下方式取消pointer符号名及分配的内存空间
unregistersymbol(pointer)
dealloc(pointer)   



七、汇编代码编写注意:

由于使用了OD的汇编编译器, 其汇编代码格式较CE严格
不过我已经加入了汇编代码自动修正功能
例如原先必须写为 mov dword ptr [exa+ebx*4+0c],0c8 的代码
已经可以直接写为 mov [eax+ebx*4+c],c8

如果还是出现编译错误, 表示自动修正无法修正, 请依下列方式自行修正代码

1). 出现"Unknown identifier"编译错误时:
    可能为汇编编译器无法正确识别寄存器, 指令, 与数值
    解决方法为, 所有数值, 如果是A到F等英文字母开头的, 前面加一个0
    如c要写成0c, A8B300要写成0A8B300
   
2). 出现"Command does not support given operands"
    或"Unrecognized command"错误时:
    可能为数据长度错误
    一般情况, 如果没有指名长度, 则将一律视为4字节长度
    例如 mov [esi+30],3f800000
    将自动转换为 mov dword ptr [esi+30],3f800000 再送给编译器
    若出现这个编译错误, 则请自行指定正确的数据长度
    数据长度的表示法有以下几种:
        单字节 byte ptr
        双字节 word ptr
        四字节 dwrod ptr

        


八、目前不支持的CE AA功能:

loadlibrary
loadbinary
include




九、外部代码区:

CE的AA脚本分为三个区段: [ENABLE], [DISABLE], 外部代码(outer codes)区
外部代码区指的是在[ENABLE]之前的区域, 或可称为前置区
放在这里的代码, 为无论选择[ENABLE]或[DISABLE], 都会被运行
会放在这里的一般是aobscan




十、本AA引擎专有功能:

assert2(地址,字节数组,"选填错误信息")
  功能同 assert, 可选填错误信息
  例: assert2(00081048,12 ff 3c 78,"Wrong Game Version!")

aobscan2(名称,字节数组,起始地址,结束地址,第几个命中目标,"选填错误信息!")
  功能同 aobscan, 设定项目较多, 若不要显示错误信息, 则使用 "" 表示无信息
  例1: aobscan2(aobstart,12 34 56 78,00400000,7FFFFFFF,1,"Wrong Game Version!")
  例2: aobscan2(aobstart,12 ff 3c 78,0,7FFFFFFF,1,"")
  上例2等同于aobscan
  
  

十一、其他注意事项:

AA引擎以脚本内容分辨不同的脚本
一个脚本运行[ENABLE]之后, 在运行[DISABLE]之前
不能对该脚本进行任何改变, 包含任何空白回车或注释
否则会被视为不同脚本, 则dealloc等命令将无法正确运作



--------------------------------------------------------------------------------------------------


<< GetAddress 函数说明 >>

接受地址表达式, 返回最终地址

地址表达式目前支持:

1. 基地址+-*运算


2. 指针表达式 [[[xxxxx+xx]+xx]+xx]+xx
例:
[[0040de00]-4]+c


3. 模块基址+偏移, (本功能需要Vista或XP SP1以上支持)
不分英文大小写, 若要区分大小写可使用 " " 包住模块名
例:
game.exe
game.exe+27D0
game.dat+38c
"Game.exe"+27D0
kernel32.dll


4. 可使用由AA脚本生成的符号(人造指针)
在AA脚本中加入一个自定义符号后, 可直接使用
假若该符号为pointer
例:
pointer         // 取得pointer符号自身被alloc分配的地址
[pointer]       // 取得pointer内存放的人造指针地址


5. 支持游戏空间中存在的Win API符号名
例:
messageboxA     // 取得MessageBoxA函数的地址
exitprocess
GetAsyncKeyState
loadlibrary
GetProcAddress
freelibrary


6.以上混用
例:
[[game.exe+27D0]-4]+c


7.可注释, 方式有三种:  //单行   /*多行*/   {多行}
  但地址表达式只能有一行


注意事项:

1. 全十六进制, 十進制以#或(int)表示
例:
[[#196608]-#16]+#12

调用必备
1.VS2008SP1运行库(4M),必备
2.部分功能需要Vista或XP SP1以上运行环境

VC调用
VC2008动态调用DLL方法:
    HMODULE hDLL = LoadLibrary(TEXT("aa_engine.dll"));  // 载入DLL

    // 调用AutoAssemble
    typedef BOOL (FAR WINAPI *PROC1)(DWORD,char*,int);
    PROC1 pAutoAssemble=(PROC1)GetProcAddress(hDLL,"AutoAssemble");
    (pAutoAssemble)(processID,aa_script,1);

    // 调用GetAddress
    typedef DWORD (FAR WINAPI *PROC2)(DWORD,char*);
    PROC2 pGetAddress=(PROC2)GetProcAddress(hDLL,"GetAddress");
    DWORD addr = (pGetAddress)(processID,addr_line);

    // 调用Ver
    typedef char *(FAR WINAPI *PROC3)();
    PROC3 pVer=(PROC3)GetProcAddress(hDLL,"Ver");
    char *ver = (pVer)();

    FreeLibrary(hDLL);  // 释放DLL

——————————————————————————————————————————————————————————
dll VC源码
DLL v1.21 源码VC2008工.rar (122.07 KB, 下载次数: 51)
——————————————————————————————————————————————————————————
模块 修改.rar (56.75 KB, 下载次数: 153)
例程
代码形式:
  1. .版本 2

  2. .程序集 窗口程序集1
  3. .程序集变量 进程ID, 整数型

  4. .子程序 _选择框_运行1_被单击

  5. 进程ID = 进程取ID (“植物大战僵尸.exe”)  ' 进程名称
  6. .如果真 (进程ID = 0)
  7.     选择框_运行1.选中 = 假
  8.     信息框 (“请打开游戏!”, 0 + 16, “提示:”)
  9.     返回 ()
  10. .如果真结束
  11. .判断开始 (选择框_运行1.选中 = 真)
  12.     置入作弊脚本 (进程ID, #无冷却)
  13. .默认
  14.     取消置入作弊脚本 ()
  15. .判断结束


  16. .子程序 __启动窗口_创建完毕

  17. 提升进程权限 ()  ' 如果不提升,360之类的肯定警报


  18. .子程序 __启动窗口_将被销毁

  19. 结束调用 ()  ' 置入脚本结束之后或者窗口销毁调用
复制代码
植物大战僵尸无CD脚本
  1. [ENABLE]
  2. //code from here to '[DISABLE]' will be used to enable the cheat
  3. alloc(newmem,2048) //2kb should be enough
  4. label(returnhere)
  5. label(originalcode)
  6. label(exit)

  7. 004B2FEA:
  8. jmp newmem
  9. nop
  10. returnhere:

  11. newmem: //this is allocated memory, you have read,write,execute access
  12. //place your code here


  13. originalcode:
  14. add [edi+24],64
  15. mov eax,[edi+24]

  16. exit:
  17. jmp returnhere



  18. [DISABLE]
  19. //code from here till the end of the code will be used to disable the cheat
  20. dealloc(newmem)
  21. 004B2FEA:
  22. inc [edi+24]
  23. mov eax,[edi+24]
  24. //Alt: db FF 47 24 8B 47 24
复制代码
易语言例程
例程.rar (2.89 KB, 下载次数: 115)
————————————————————————————————————————————————————————————
脚本文本说明:
代码注入:
  1. [ENABLE]
  2. alloc(newmem,2048)
  3. label(returnhere)
  4. label(originalcode)
  5. label(exit)

  6. 00XXXXXX:   // 原地址
  7. jmp newmem
  8. returnhere:

  9. newmem:
  10. // 注入代码

  11. originalcode:
  12. // 原代码

  13. exit:
  14. jmp returnhere


  15. [DISABLE]
  16. dealloc(newmem)

  17. 00XXXXXX:   // 原地址
  18. // 原代码

复制代码
线程注入call
  1. [ENABLE]
  2. alloc(newmem,4096)
  3. createthread(newmem)

  4. newmem:
  5. push 3
  6. push 2
  7. push 1
  8. call XXXXX
  9. ret


  10. [DISABLE]
  11. dealloc(newmem)

复制代码
代码注入+人造指针
  1. [ENABLE]
  2. registersymbol(pointer)       // 初始化 人造指针
  3. alloc(pointer,4)         
  4. alloc(newmem,2048)
  5. label(returnhere)

  6. newmem:
  7. // --------- 將 ecx+14 的值放入人造指針 ----
  8. push eax
  9. lea eax,[ecx+14]
  10. mov [pointer],eax
  11. pop eax
  12. // -----------------------------------------
  13. fstp dword ptr [ecx+14]         // 原代碼1
  14. mov ecx,edi                     // 原代碼2
  15. jmp returnhere

  16. 004399F7:
  17. jmp newmem
  18. returnhere:

  19. [DISABLE]
  20. unregistersymbol(pointer)     // 撤销 人造指针
  21. dealloc(pointer)           
  22. dealloc(newmem)

  23. 004399F7:                     // 原代碼
  24. fstp dword ptr [ecx+14]
  25. mov ecx,edi
复制代码
————————————————————————————————————————————————————————————
以上便是内容
如果有什么问题,可以观看说明。


友情提醒:请选择可信度高的模块,勿用未知模块,防止小人在模块内加入木马程序。【发现问题模块请到站务投诉】。
32
发表于 2022-7-21 20:06:12 | 只看该作者   浙江省温州市
666666666666444554
回复 支持 反对

使用道具 举报

31
发表于 2022-7-21 20:05:58 | 只看该作者   浙江省温州市
666666664555
回复 支持 反对

使用道具 举报

30
发表于 2022-7-21 19:57:28 | 只看该作者   浙江省温州市
66666666666666666
回复 支持 反对

使用道具 举报

29
发表于 2022-7-21 19:57:11 | 只看该作者   浙江省温州市
爱杀谁杀谁
回复 支持 反对

使用道具 举报

28
发表于 2022-4-30 17:58:14 | 只看该作者   四川省巴中市
牛逼牛逼,感谢大佬分享,牛逼牛逼,感谢大佬分享
回复 支持 反对

使用道具 举报

结帖率:98% (45/46)
27
发表于 2021-6-13 12:13:20 | 只看该作者   广东省东莞市
牛,大佬!!!
回复 支持 反对

使用道具 举报

26
发表于 2021-5-25 08:52:26 | 只看该作者   陕西省西安市
学习一下!!
回复 支持 反对

使用道具 举报

结帖率:100% (4/4)
25
发表于 2020-12-9 18:09:44 | 只看该作者   山东省泰安市
下载学习下
回复 支持 反对

使用道具 举报

24
发表于 2020-11-23 18:40:26 | 只看该作者   江苏省常州市
支持支持欧克
回复 支持 反对

使用道具 举报

23
发表于 2020-10-24 12:41:13 | 只看该作者   广东省佛山市
6666666666666666666666
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:[email protected]
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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