提供GameGuardian的MOD教程和代码,如luajava库、修复os.execute函数、完善String库、添加Canvas等。 相较于提供java源码,提供封装好的dex或smali更能让大多数人直接投入使用,即使他什么语言也不会也能根据教程获得所需。如果是想学Java源码的,那么dex、smali也不会难倒你吧?? 2021.10.01开始不定时更新
MT文件管理器.apk
AIDE.apk
GameGuardian.apk
主要涉及以下语言
Lua
LuaJ
LuaJava
Java
由于luajava没法提供方便的String类的交互,所以我们需要对String类中的一些方法进行封装,并将它加入_G全局表中的string库里
StringLib.java类为luaj原String库编写方式的模板(不是我封装好的那个StringLib的源码),参考该编写方式可有效学习函数封装方法
https://github.com/JealousCat/GGMod/blob/main/Function/StringLib.java
注:指对非函数库类功能或UI界面等进行更改,使得修改器使用体验更好,界面更美观
七、去除脚本执行结束时的“脚本已结束:”字样,方便复制结束内容
弹窗美化教程中的Alert.smali下载const/4 v4, 0x1
invoke-virtual {p0, v4}, Landroid/ext/BaseActivity;->requestWindowFeature(I)Z
const v1, 0x0
invoke-virtual {p0, v1}, Landroid/fix/Button;->setBackgroundColor(I)V
注:指将编译好的函数文件添加到GG修改器的函数库中
(2022.1.17注:luajava的函数库有更新,参见Luajava的readme) LuaJava库将原官方的Loadlib更换为LoadDex,新增luajava.astable、luajava.toArray、luajava.methods。具体用法在后续教程中体现,或使用jadx查看java代码一、添加luajava库,用于lua与java交互,并可使用java方法
新增加了两个函数,其添加教程都可以使用如上教程 整理了GG原来的所有类中的方法,将可以直接访问的静态方法,且有一定脚本内使用价值的方法均封装在ToolsLibToolsLib.dex作为全新编译的拓展库,它可以像StringLib等库一样在Script类中实例化并加载进全局环境中,也可以使用luajava.loadDex进行非合并的本地加载
tools.removeNewLinesChars、tools.getCacheDir、tools.getHiddenDir、tools.getRamSizeKb、tools.isRootMode、tools.tryRoot、tools.toString64、tools.getLogcatFilename、tools.openAppInfo、tools.chmod、tools.executeScript、tools.isScreenOn、tools.getCacheDirHidden、tools.isPackageInsta、tools.alertBigText、tools.getNativePath、tools.exec、tools.prefixLongHex、tools.getFilesDir、tools.sendRestartIntent、tools.dump、tools.compare、tools.getStubLib、tools.hash、tools.crc32、tools.isLandscape、tools.ToHexString、tools.getScreenSize、tools.isX86、tools.trimDirPath、tools.doubleToTime、tools.allowExecute、tools.getSdcardPath、tools.prefix、tools.formatFileSize、tools.dp2px、tools.copyFile、tools.restartApp、tools.longToTime、tools.getDaemonDir、tools.getDaemonPath、tools.getFilesDirHidden、tools.parseTime、tools.getFreeMem、tools.getDataDirSafe
有机会再详细说明各个函数的用法你可以luajava库来访问它们
八、新增LogPrint,可实时查看打印内容,区别于print需要脚本结束才能看。使用方法见LogPrint.lua
九、RSA加密解密,类中三个方法:decrypt、encrypt、generateKeyPair
十、Root管理类,类中有execRootCmd、execRootCmdSilent、haveRoot
十一、屏幕参数类,通过initIfNeeded初始化Activity得到一些参数,具体内容点击链接查看源码
十二、zip管理类,有压缩方法zip、解压方法unzip、数据流拷贝copy方法、向压缩包内追加内容append方法
十三、新增table.equals用于比较两个表内容是否相等;table.allPerm数组全排列。需要与classes.dex合并,教程参考MathLib的补充教程
注:指函数源码编写过程,可学习LuaJ和luajava的API
三、String库的完善与相关函数编写 新增内容如下: string.compare、string.endsWith、string.equals、string.hashCode、string.intern、string.startsWith、string.split、string.toCharArray、string.trim、string.delet、string.insert、string.setCharAt、string.newString、string.isLetter、string.isDigit、string.isUpper、string.isLower、string.toUpper、string.toLower 用法可参考Java原方法,或者查看StringLib.dex的源码来学习函数用法 需要注意其中使用了gg.bytes代替string.byte来获取byte[] 可实现将压缩成一行的,可读性差的Lua源码格式化为正常的文件