跳到主要内容

自激活函数

说明

  • 自激活模块目标是实现无电脑情况下对手机进行最大权限的操作,比如重启手机等
  • 这个模块所有功能的前提是完成自激活的配置,详情请看 高级功能-自激活配置
提示
  • 想要实现代理IPA永生,先完成自激活的配置,检测带代理没有反应后使用killApp函数杀死,再使用openApp重启代理IPA

activeSelf.openLocalDevVpn 打开LocalDevVpn

  • 打开LocalDevVpn 链接VPN
  • 需要主程序在前台才能打开
  • 适配EC 脱机版 6.1.0+
  • @returns {boolean} true 代表成功 false 代表失败
function main() {
// 打开外部的LocalDevVpn APP并且进行链接
var data = activeSelf.openLocalDevVpn();
logd(data);
sleep(3000)
activeSelf.disableLocalDevVpn();
}

main();

activeSelf.disableLocalDevVpn 断开LocalDevVpn

  • 断开 LocalDevVpn 链接VPN
  • 需要主程序在前台才能打开
  • 适配EC 脱机版 6.1.0+
  • @returns {boolean} true 代表成功 false 代表失败
function main() {
// 打开外部的LocalDevVpn APP并且进行链接
var data = activeSelf.disableLocalDevVpn();
logd(data);
sleep(3000)
activeSelf.disableLocalDevVpn();
}

main();

activeSelf.mountImageOk 开发者镜像是否刷入成功

  • 开发者镜像是否刷入成功
  • 适配EC 脱机版 6.1.0+
  • @returns {boolean} true 代表成功 false 代表失败
function main() {
var data = activeSelf.mountImageOk();
logd(data);
}

main();

activeSelf.startActiveMySelf 启动自激活

  • 启动自激活,请细看 自激活 章节的配置文档
  • 适配EC 脱机版 6.1.0+
  • @returns {JSON} code = 0 代表成功,msg 代表错误信息
function testactive1_ext_vpn() {
logd("testactive1_self_vpn")

activeSelf.openSelfVpn();
// 休眠一下 防止捕捉不到vpn的错误消息
sleep(3000)
let ar = activeSelf.getOpenSelfVpnError()
if (ar != "") {
loge("打开自带VPN失败")
loge("错误消息是: " + activeSelf.getOpenSelfVpnError())
return false;
}
sleep(2000)

let acData = activeSelf.startActiveMySelf();
if (!acData) {

loge("自激活失败,无任何返回");
return false;
}
if (acData["code"] != 0) {
loge("自激活失败, err : " + acData["msg"]);
return false;
}
logd("自激活成功!!")
logd("mount -> " + activeSelf.mountImageOk())
activeSelf.disableSelfVpn();
return true;
}

function main() {
testactive1_ext_vpn();
}

main();

activeSelf.openApp 打开APP

  • 通过 bundleId 打开一个app
  • 适配EC 脱机版 6.1.0+
  • @param bundleId 要启动的bundleid
  • @param start_suspended 好像没什么意义,写0就行
  • @param kill_existing 1 = 杀死存在的进程,好像不成功,写0就行
  • @returns {JSON} code = 0 代表成功,msg 代表错误信息,data 代表成功后的pid
function testOpenApp() {
logd("testOpenApp")
activeSelf.openSelfVpn();
// 休眠一下 防止捕捉不到vpn的错误消息
sleep(5000)
let ar = activeSelf.getOpenSelfVpnError()
if (ar != "") {
loge("打开自带VPN失败")
loge("错误消息是: " + activeSelf.getOpenSelfVpnError())
activeSelf.disableSelfVpn();
return false;
}
sleep(2000)
// 代理ipa的 bundleId
let runner = "com.cy.ceshi";

let rsd = activeSelf.openApp(runner, 0, 0)
if (!rsd) {
loge("打开失败")
activeSelf.disableSelfVpn();
return false;
}
if (rsd["code"] != 0) {
loge("打开失败, err : " + rsd["msg"]);
activeSelf.disableSelfVpn();
return false;
}
logd(JSON.stringify(rsd))

logd("打开app成功")
activeSelf.disableSelfVpn();
return true;
}

function main() {
testOpenApp();
}

main();

activeSelf.killApp 杀死app

  • 通过 bundleId 杀死一个app
  • 适配EC 脱机版 6.1.0+
  • @param bundleId 要启动的bundleid
  • @returns {JSON} code = 0 代表成功,msg 代表错误信息
function testKillApp() {
logd("testKillApp")
activeSelf.openSelfVpn();
// 休眠一下 防止捕捉不到vpn的错误消息
sleep(5000)
let ar = activeSelf.getOpenSelfVpnError()
if (ar != "") {
loge("打开自带VPN失败")
loge("错误消息是: " + activeSelf.getOpenSelfVpnError())
activeSelf.disableSelfVpn();
return false;
}
sleep(2000)
// 代理ipa的 bundleId
let runner = "com.cy.ceshi";
let rsd = activeSelf.killApp(runner)
if (!rsd) {
loge("杀死进程失败")
activeSelf.disableSelfVpn();
return false;
}
if (rsd["code"] != 0) {
loge("杀死进程失败, err : " + rsd["msg"]);
activeSelf.disableSelfVpn();
return false;
}
logd(JSON.stringify(rsd))
logd("杀死app进程成功")
activeSelf.disableSelfVpn();
return true;
}

function main() {
testKillApp();
}

main();

activeSelf.listApps 获取应用列表

  • 获取安装应用列表
  • 适配EC 脱机版 6.1.0+
  • 返回参数解释:
  • ApplicationType= 应用类型,
  • CFBundleIdentifier=bundleId也就是包名,
  • CFBundleDisplayName=应用名称,
  • CFBundleShortVersionString=版本,
  • CFBundleURLSchemes=URLSchemes
  • @param type System= 系统应用,User= 用户安装应用,Any=所有应用
  • @returns {JSON} code = 0 代表成功,msg 代表错误信息,data是应用列表数组数据
function testAppList() {
logd("testAppList")
activeSelf.openSelfVpn();
// 休眠一下 防止捕捉不到vpn的错误消息
sleep(5000)
let ar = activeSelf.getOpenSelfVpnError()
if (ar != "") {
loge("打开自带VPN失败")
loge("错误消息是: " + activeSelf.getOpenSelfVpnError())
activeSelf.disableSelfVpn();
return false;
}
sleep(2000)
let rsd = activeSelf.listApps("User")
if (!rsd) {
loge("获取应用列表失败")
activeSelf.disableSelfVpn();
return false;
}
if (rsd["code"] != 0) {
loge("获取应用列表失败, err : " + rsd["msg"]);
activeSelf.disableSelfVpn();
return false;
}
logd("获取应用列表: " + JSON.stringify(rsd.data))
activeSelf.disableSelfVpn();
return true;
}

function main() {
testAppList();
}

main();

activeSelf.listProcess 获取进程列表

  • 获取进程列表
  • 适配EC 脱机版 6.1.0+
  • name=进程名称
  • isApplication=是否是可见的应用程序
  • realAppName=真实运行路径
  • pid=进程id
  • @returns {JSON} code = 0 代表成功,msg 代表错误信息,data是应用列表数组数据
function testAppList() {
logd("testAppList")
activeSelf.openSelfVpn();
// 休眠一下 防止捕捉不到vpn的错误消息
sleep(5000)
let ar = activeSelf.getOpenSelfVpnError()
if (ar != "") {
loge("打开自带VPN失败")
loge("错误消息是: " + activeSelf.getOpenSelfVpnError())
activeSelf.disableSelfVpn();
return false;
}
sleep(2000)
let rsd = activeSelf.listProcess()
if (!rsd) {
loge("获取进程列表失败")
activeSelf.disableSelfVpn();
return false;
}
if (rsd["code"] != 0) {
loge("获取进程列表失败, err : " + rsd["msg"]);
activeSelf.disableSelfVpn();
return false;
}
logd("获取进程列表: " + JSON.stringify(rsd.data))
activeSelf.disableSelfVpn();
return true;
}

function main() {
testAppList();
}

main();

activeSelf.reboot 重启设备

  • 重启设备
  • 适配EC 脱机版 6.1.0+
  • @returns {JSON} code = 0 代表成功,msg 代表错误信息
function testReboot() {
activeSelf.openSelfVpn();
// 休眠一下 防止捕捉不到vpn的错误消息
sleep(5000)
let ar = activeSelf.getOpenSelfVpnError()
if (ar != "") {
loge("打开自带VPN失败")
loge("错误消息是: " + activeSelf.getOpenSelfVpnError())
activeSelf.disableSelfVpn();
return false;
}
sleep(2000)
let rsd = activeSelf.reboot()
if (!rsd) {
loge("重启失败")
activeSelf.disableSelfVpn();
return false;
}
if (rsd["code"] != 0) {
loge("重启失败, err : " + rsd["msg"]);
activeSelf.disableSelfVpn();
return false;
}
logd("重启: " + JSON.stringify(rsd.data))
return true;
}

function main() {
testReboot();
}

main();

activeSelf.killAppByPid 杀死进程

  • 通过 pid 杀死一个app
  • 适配EC 脱机版 6.1.0+
  • @param pid 进程pid,整数
  • @returns {JSON} code = 0 代表成功,msg 代表错误信息
function test_killAppByPid() {
activeSelf.openSelfVpn();
// 休眠一下 防止捕捉不到vpn的错误消息
sleep(5000)
let ar = activeSelf.getOpenSelfVpnError()
if (ar != "") {
loge("打开自带VPN失败")
loge("错误消息是: " + activeSelf.getOpenSelfVpnError())
activeSelf.disableSelfVpn();
return false;
}
sleep(2000)
// pid 通过获取进程列表 获得
let rsd = activeSelf.killAppByPid(123)
if (!rsd) {
loge("杀死进程失败")
activeSelf.disableSelfVpn();
return false;
}
if (rsd["code"] != 0) {
loge("杀死进程失败, err : " + rsd["msg"]);
activeSelf.disableSelfVpn();
return false;
}
logd("杀死进程: " + JSON.stringify(rsd.data))
return true;
}

function main() {
test_killAppByPid();
}

main();