首页 > 程序 > smali注入开机启动任意apk
作者:ghostry 发布时间:2017-07-10 浏览: 4405
转载注明出处: https://blog.1ge.fun/program/787.html参考资料
http://www.voidcn.com/blog/wangyaninglm/article/p-6571293.html
http://blog.csdn.net/aaa111/article/details/41833189
https://www.oschina.net/question/229726_36557
https://developer.android.com/studio/install.html
初衷是想开机启动kodi。刚开始想修改kodi,让他能成为桌面。但是很遗憾没有成功。
然后想自己做一个桌面,启动后调取kodi启动。做的过程中发现好麻烦。
然后决定找一个现成的桌面程序修改,加入启动后调取kodi。
1,
首先要安装AndroidStudio
。
2,
然后反编译选择的桌面程序。
3,
创建一个和现有程序包名一致的新程序。在新程序里写上启动功能。
大概是这样,关于启动activity叫什么,可以反编译查看。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_launcher);
openApp("org.xbmc.kodi","org.xbmc.kodi.Splash");
}
private void openApp(String packageName,String className) {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
ComponentName cn = new ComponentName(packageName, className);
intent.setComponent(cn);
startActivity(intent);
}
把他编译出来。然后反编译,得到smali文件。找到对应程序实现部分的代码(方法和4一样)
4,
查看桌面程序的AndroidManifext.xml,看他的入口Activity叫什么。然后找到对应的smali文件。
在文件中找到onCreate方法。
他看起来是
.method public onCreate(...)V
这样的
在该方法end之前插入自写程序的oncreate内代码,然后在end之后插入自写的openApp对应代码。
这样桌面程序就多了openApp函数并且在打开的时候调用了。
5,
回编
6,
安装并且设为默认桌面。就可以实现开机启动了。
下一篇: Ubuntu开启BBR