发新帖

AndroidKiller v1.3 lua 脚本接口

[复制链接]
30886 17
本帖最后由 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

效果如下:

接口文档附件:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
已有1人评分 NB 理由
wo519815271 + 1 赞一个!

查看全部评分 总评分: NB +1 

举报 使用道具

回复

精彩评论17

sos521qqq    发表于 2015-9-16 18:30:37 | 显示全部楼层
这个好用,不会的时候直接搜索相关函数

举报 使用道具

回复 支持 0 反对 1
听鬼哥说故事    发表于 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 | 显示全部楼层
给力,顶起来。

举报 使用道具

回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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