首页 > 程序 > smali注入开机启动任意apk

作者:ghostry 发布时间:2017-07-10 浏览: 634

转载注明出处: https://blog.ghostry.cn/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,
安装并且设为默认桌面。就可以实现开机启动了。

标签: Android

上一篇: 配置danted服务做socks5代理服务器
下一篇: Ubuntu开启BBR

添加新评论 »

*
*

欢迎评论!歡迎評論!Comments welcome!komentoj bonvenaj!댓글 오신 것을 환영합니다!
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: :cold: :cryy: :cute: :shy: :sleep: :struggle: :tea: :yahou: