akiller 发表于 2015-9-16 17:10:38

AndroidKiller v1.3 lua 脚本接口

本帖最后由 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 thenpath = app.GetPathByItem(item)end
8、IsWorking参数:工程对象返回类型:布尔值功能描述:返回参数工程对象是否正在工作中。(比如正在编译)示例:item = app.GetCurrItem()if item ~= nil thenif app.IsWorking(item) thenapp.MsgBox(“当前工程可能正在编译或其他操作中!”)endend
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) thenapp.MsgBox(“当前工程是 APK 项目”)elseapp.MsgBox(“当前工程是其他项目”)end
2、Log参数:1、工程对象 2、字符串返回类型:无功能描述:在参数1工程对象中,输出日志消息。示例:item = app.GetCurrItem()if apk.IsApk(item) thenapk.Log(item, “这是一个消息”)end
3、GetMainXmlPath参数:工程对象返回类型:字符串功能描述:返回参数工程对象的 AndroidManifest.xml 路径。示例:item = app.GetCurrItem()if apk.IsApk(item) thenpath = apk.GetMainXmlPath(item)end
4、GetPath参数:工程对象返回类型:字符串功能描述:返回参数工程对象的所有文件路径。示例:item = app.GetCurrItem()if apk.IsApk(item) thenpath = apk.GetPath(item)end
5、GetPackageInfo参数:工程对象返回类型:包信息表功能描述:返回参数工程对象的APK包信息表示例:item = app.GetCurrItem()if apk.IsApk(item) theninfo = 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) thenapk.UpdateUI(item)end
7、UpdateSmali参数:1、工程对象 2、Smali 文件路径返回类型:无功能描述:如果通过脚本对 APK 工程中的 smali 文件有过修改,AK 源码编辑中则不会同步更新,比如方法调用列表或当前smali方法列表,需要手动调用该方法接口通知 AK更新 UI。示例:item = app.GetCurrItem()if apk.IsApk(item) thenpath = “com\\test\\MainActivity.smali”apk.UpdateSmali(item, path)end
8、ToFilePath参数:1、工程对象 2、Smali 文件路径返回类型:字符串功能描述:通过参数1工程对象,来解析参数2的绝对文件路径并返回。示例:item = app.GetCurrItem()if apk.IsApk(item) thenpath = “com.test.MainActivity”buf = apk.ToFilePath(item, path)end
效果如下:
接口文档附件:

sos521qqq 发表于 2015-9-16 18:30:37

这个好用,不会的时候直接搜索相关函数

听鬼哥说故事 发表于 2015-9-16 17:18:14

给力的killer,前排支持顶起~

datecf123456 发表于 2015-9-16 17:43:40

给力的killer,前排支持顶起~

andrewhzf 发表于 2015-9-16 18:35:37

给力的killer,前排支持顶起~

A00 发表于 2015-9-16 19:02:16

感谢分享这么好的工具

Sink 发表于 2015-9-16 20:42:56

大力支持!!

FindAllBlue 发表于 2015-9-16 20:46:00

谢谢分享来试试

lies2014 发表于 2015-9-16 21:28:39

很给力,期待更强大!

大兵beyond 发表于 2015-9-17 09:34:45

给力,顶起来。{:5_144:}
页: [1] 2
查看完整版本: AndroidKiller v1.3 lua 脚本接口