本帖最后由 akiller 于 2015-9-16 17:28 编辑
当前脚本因为在 1.3 版本初次加入,所以功能性略显不足,后期慢慢扩展。 脚本目前只支持被动调用,后期我会加插件可管理脚本主动调用。
默认脚本路径位于:AndroidKiller目录\cfgs\script
当前只支持反编译前和反编译后事件,脚本名称必须符合以下格式标准:
反编译之前会调用:
apk_decompile_before_你的脚本名.lua
反编译之后会调用: apk_decompile_after_你的脚本名.lua
一、App 接口 引用示例: app = require(“App”)
1、Ver 参数:无 返回类型:字符串 功能描述:返回当前 AK 版本号。 示例: buf = app.Ver()
2、Path 参数:无 返回类型:字符串 功能描述:返回当前 AK 所在文件路径。 示例: buf = app.Path()
3、MsgBox 参数:消息字符串 返回类型:无 功能描述:弹出消息提示框。 示例: app.MsgBox(“hello world”)
4、GetProjCount 参数:无 返回类型:整形值 功能描述:返回当前 AK 所打开的工程项数目。 示例: i = app.GetProjCount()
5、GetProjItem 参数:整形索引值 返回类型:工程对象 功能描述:返回通过参数索引值得到的工程对象。 示例: item = app.GetProjItem(0)
6、GetCurrItem 参数:无 返回类型:工程对象 功能描述:返回当前工程对象。 示例: item = app.GetCurrItem()
7、GetPathByItem 参数:工程对象 返回类型:字符串 功能描述:返回参数工程对象的所在文件路径。 示例: item = app.GetCurrItem() if item ~= nil then path = app.GetPathByItem(item) end
8、IsWorking 参数:工程对象 返回类型:布尔值 功能描述:返回参数工程对象是否正在工作中。(比如正在编译) 示例: item = app.GetCurrItem() if item ~= nil then if app.IsWorking(item) then app.MsgBox(“当前工程可能正在编译或其他操作中!”) end end
9、Run 参数:可执行程序路径字符串 返回类型:无 功能描述:执行外部可执行程序 示例: app.Run(“c:\\windows\\notepad.exe”)
10、Exec 参数:可执行程序路径或命令行字符串 返回类型:字符串 功能描述:执行外部可执行程序并返回值 示例: sbuf = app.Exec(“cmd /c dir”) app.MsgBox(sbuf)
二、Apk 接口(当前接口只能应用于 APK 工程) 引用示例: apk = require(“Apk”)
1、IsApk 参数:工程对象 返回类型:布尔值 功能描述:返回参数工程对象是否为 Android APK 工程项目。 示例: item = app.GetCurrItem() if apk.IsApk(item) then app.MsgBox(“当前工程是 APK 项目”) else app.MsgBox(“当前工程是其他项目”) end
2、Log 参数:1、工程对象 2、字符串 返回类型:无 功能描述:在参数1工程对象中,输出日志消息。 示例: item = app.GetCurrItem() if apk.IsApk(item) then apk.Log(item, “这是一个消息”) end
3、GetMainXmlPath 参数:工程对象 返回类型:字符串 功能描述:返回参数工程对象的 AndroidManifest.xml 路径。 示例: item = app.GetCurrItem() if apk.IsApk(item) then path = apk.GetMainXmlPath(item) end
4、GetPath 参数:工程对象 返回类型:字符串 功能描述:返回参数工程对象的所有文件路径。 示例: item = app.GetCurrItem() if apk.IsApk(item) then path = apk.GetPath(item) end
5、GetPackageInfo 参数:工程对象 返回类型:包信息表 功能描述:返回参数工程对象的APK包信息表 示例: item = app.GetCurrItem() if apk.IsApk(item) then info = apk.GetPackageInfo(item) --包名 name = info[“name”] --标题 title = info[“title”] --主入口 entry = info[“entry”] --窗口 activity = info[“activity”] --广播 receiver = info[“receiver”] --服务 service = info[“service”] --权限 permission = info[“permission”] end
6、UpdateUI 参数:工程对象 返回类型:无 功能描述:如果通过脚本对APK工程的 AndroidManifest.xml有过修改,AK的APK工程信息UI则不会同步更新,需要手动调用该方法接口通知 AK 更新UI。 示例: item = app.GetCurrItem() if apk.IsApk(item) then apk.UpdateUI(item) end
7、UpdateSmali 参数:1、工程对象 2、Smali 文件路径 返回类型:无 功能描述:如果通过脚本对 APK 工程中的 smali 文件有过修改,AK 源码编辑中则不会同步更新,比如方法调用列表或当前smali方法列表,需要手动调用该方法接口通知 AK更新 UI。 示例: item = app.GetCurrItem() if apk.IsApk(item) then path = “com\\test\\MainActivity.smali” apk.UpdateSmali(item, path) end
8、ToFilePath 参数:1、工程对象 2、Smali 文件路径 返回类型:字符串 功能描述:通过参数1工程对象,来解析参数2的绝对文件路径并返回。 示例: item = app.GetCurrItem() if apk.IsApk(item) then path = “com.test.MainActivity” buf = apk.ToFilePath(item, path) end
效果如下: |