NEWS
前言
计蒙以前上班那会,喜欢在谷歌平台上下载APP,并对其进行一系列的操作。
就计蒙个人而言反编译一个APK可能会有的操作:
1.修改APP名称,包名,图片
2.想模仿实现某个功能
3.得到数据库
网上有很多代码混淆,加固,第三方打包的操作教程
所以计蒙就写一篇针对自己操作的进行对抗的文章
用到的反编译工具:Apktool
二次签名工具:signapk
需掌握smali的文件格式
下图为使用Apktool反编译出的一些文件
![4094018c1b18db11b8373d108904b035.png](https://img-blog.csdnimg.cn/img_convert/4094018c1b18db11b8373d108904b035.png)
进入正题
1.
在APP中对名称,包名,图片进行检查
名称–思路:获取App的名称,检查APP名称是否与自己的名称一样,如果不一样,设置点用户不友好操作(崩溃啥的)。
/* * 获取当前应用的名称 */ public static String getAppName(Context context) {
//获取 PackageManager PackageManager pm = context.getPackageManager(); try {
//通过PackageManager这个Api可以拿到应用的一些信息 //packgeName:包名 flag:获取额外信息的标识 PackageInfo packageInfo = pm.getPackageInfo(context.getPackageName(), 0); int labelRes = packageInfo.applicationInfo.labelRes; return context.getResources().getString(labelRes); } catch (PackageManager.NameNotFoundException e) {
e.printStackTrace(); } return null; }
包名–思路:获取App的包名,检查APP包名是否与自己的包名一样,如果不一样,设置点用户不友好操作(崩溃啥的)。
/* * 获取当前应用的包名 */ public static String getPackageName(Context context) {
PackageManager pm = context.getPackageManager(); try {
PackageInfo packageInfo = pm.getPackageInfo(context.getPackageName(), 0); //拿到版本名称 return packageInfo.packageName; } catch (PackageManager.NameNotFoundExcep