更新信息 时间
《记一次还未成功的反编译锤子桌面APP》 20171129
暴力替换数据库更新item信息 20171201

暴力替换数据库更新item信息

在之前的分析过程中得知,只要更新数据库的数据,其中设置messageNumber就是角标数,那现在直接取出laucher.db然后手动更新它再替换回去。看是不是会有效果

工具 版本
谷歌N6 7.0.1
smartisan_launcher_v1.5.1.apk 1.5.1
Navicat Premium 11.1.13

一、导出launcher.db数据库
1.文件存在/data/data/com.smartisans.home/databases/launcher.db,将其导出至电脑(需要root)。

2.修改表(table_iteminfos)中的数据,将其改为你想要的数字,然后重新将launcher.db保存,导入手机重新替换原来的db文件。

3.打开锤子桌面即可看到效果了~


《记一次还未成功的反编译锤子桌面APP》

锤子科技很早就已经发布了“锤子桌面”这款APP,我反编译这个APP源于“角标”适配。锤子除了系统APP有角标之外,单独为微信、应用宝适配了角标。太讨厌了。本次反编译没有取得实质的成果,如果想要成果的可以不用往下看了。

一、工具列表

名称 版本 下载链接
smartisan_launcher_v1.5.1.apk 1.5.1 官方
apktool_2.3.0.jar 2.3.0 官方
dex2jar 2.0 官方

二、开始反编译

1.使用apktool反编译,直接报错,但是会反编译好AndroidManifest.xml文件,这样可以看到一些静态注册的广播。优先找静态注册的广播是因为多数机型角标的原理是发送广播,由launcher程序接收并更新icon。

2.直接搜索“receiver”关键词查找静态注册的广播,找到两个广播:

<receiver android:name="com.smartisanos.launcher.receiver.LauncherReceiver"><intent-filter><action android:name="android.intent.action.EXTERNAL_APPLICATIONS_AVAILABLE"/><action android:name="android.intent.action.EXTERNAL_APPLICATIONS_UNAVAILABLE"/></intent-filter><intent-filter><action android:name="com.android.launcher.action.INSTALL_SHORTCUT"/><action android:name="com.smartisanos.launcher.shortcut_removed"/></intent-filter><intent-filter><action android:name="smartisan.intent.action.LAUNCHER_SETTINGS_CHANGED"/></intent-filter><intent-filter><action android:name="com.smartisanos.launcher.update_icon"/></intent-filter><intent-filter><action android:name="com.smartisanos.launcher.SORT_ICON"/></intent-filter><intent-filter><action android:name="com.smartisanos.COLOR_THEME_CHANGED"/></intent-filter><intent-filter><action android:name="com.smartisan.push.MESSAGE_RECEIVE"/><data android:mimeType="vnd.com.smartisanos.launcher/*"/></intent-filter><intent-filter><action android:name="com.android.providers.downloads.ACTION_SYNC_DATA_FINISH"/></intent-filter><intent-filter><action android:name="android.intent.action.DOWNLOAD_COMPLETE"/></intent-filter><intent-filter><action android:name="smartisan.alarm.upload.tracker"/></intent-filter>
</receiver>
<receiver android:name="com.smartisanos.launcher.receiver.DataDumpReceiver"><intent-filter><action android:name="com.smartisanos.launcher.datadump"/><action android:name="launcher.dumpsurfaceview"/></intent-filter>
</receiver>

3.解压apk文件,获取class.dex文件,利用dex2jar反编译为jar包,再利用jd-gui查看源码。首先一点就是直接找上述两个广播。只有LauncherReceiver.java有内容,那就只能看它了。

三、尝试调试源码

1.首先找到了比较显眼的ShortCut相关action,这些快捷方式的action也许比较容易有突破口。

2.com.android.launcher.action.INSTALL_SHORTCUT 广播,发现传入的参数会进行一些判断,重要的是判断包名,如果包名是支持的,才会继续往下执行。

接着可以看到,如果是系统APP或者是微信都支持。

发送广播后,Logcat看到输出一些日志:

11-28 23:04:19.729 8884-8884/? E/NewLauncher: ShortcutAction : handleInstallShortcut [微信]
11-28 23:04:19.729 8884-8884/? E/NewLauncher: ShortcutAction : lunch intent [#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10000000;package=com.tencent.mm;component=com.tencent.mm/.MainActivity;end]
11-28 23:04:19.729 8884-8884/? E/NewLauncher: Utils : DEBUG : drawableToBitmapWithoutShadow return null by drawable is null
11-28 23:04:19.729 8884-8884/? E/NewLauncher: Utils : isDoubleOpenApp() pkg = com.tencent.mm this is not a doubleApp
11-28 23:04:19.750 8884-9144/? E/NewLauncher: DatabaseHandler : origImg is null, [com.tencent.mm]
11-28 23:04:19.750 8884-9144/? E/NewLauncher: Utils : generateShortcutIcon return null, by src is null
11-28 23:04:19.750 8884-9144/? E/NewLauncher: DatabaseHandler : generateShortcutIcon return null

最后系统会Toast提示“已添加”,然后没有然后了~~

3.com.android.launcher.action.UNINSTALL_SHORTCUT 广播,发送后是不是删除掉快捷方式呢?

发送广播后,Logcat看到输出一些日志

11-28 23:19:24.273 8884-9144/? W/System.err: java.lang.ClassCastException: java.lang.String cannot be cast to com.smartisanos.launcher.data.ShortcutInfo
11-28 23:19:24.273 8884-9144/? W/System.err:     at com.smartisanos.launcher.data.DatabaseHandler.handleEventUninstallShortcut(DatabaseHandler.java:3522)
11-28 23:19:24.273 8884-9144/? W/System.err:     at com.smartisanos.launcher.data.DatabaseHandler.run(DatabaseHandler.java:533)
11-28 23:19:24.273 8884-9144/? W/System.err:     at com.smartisanos.launcher.data.DatabaseHandler.-wrap2(DatabaseHandler.java)
11-28 23:19:24.273 8884-9144/? W/System.err:     at com.smartisanos.launcher.data.DatabaseHandler$1.handleMessage(DatabaseHandler.java:124)
11-28 23:19:24.273 8884-9144/? W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:102)
11-28 23:19:24.273 8884-9144/? W/System.err:     at android.os.Looper.loop(Looper.java:154)
11-28 23:19:24.273 8884-9144/? W/System.err:     at android.os.HandlerThread.run(HandlerThread.java:61)
11-28 23:19:24.274 8884-9144/? E/NewLauncher: DatabaseHandler : handleEventUninstallShortcut return by shortcut is null

因为DatabaseHandler.java没有内容,又一次然后没有然后~~

4.com.smartisanos.launcher.update_icon广播,发送广播后,没有日志输出,也是没有然后,应该是组装的数据JSON格式有问题。

5.com.smartisan.push.MESSAGE_RECEIVE 广播,在AndroidManifest.xml中显示需要设置Type,但是发送广播未有日志,没有然后~~

四、最后

如果能找到方法更新这条数据也许会有进展:

11-29 00:16:46.488 8884-9142/? E/NewLauncher: Cell : ### set item info. setItemInfo(). pid = [3] cid = [4] fid = [-1] id = [68] itemType = [0] userId = [-1] messagesNumber = [0] title = [内涵段子] packageName = [com.ss.android.essay.joke] componentName = [com.ss.android.essay.joke.activity.SplashActivity] isSystemApp = [false] isNewlyInstalled = [false] isNeedDowload = [false] downloadId = [-1]

其中messageNumber就是角标的消息数。

记一次还未成功的反编译锤子桌面APP相关推荐

  1. 反编译简书app和小红书app滑动效果sticky粘性头布局的实现CoordinatorLayout+behavior

    反编译简书app和小红书app滑动效果sticky粘性头布局的实现CoordinatorLayout+behavior 小红书效果: 简书效果: demo效果图: github地址:https://g ...

  2. android 模拟滑动app,反编译简书app和小红书app滑动效果sticky粘性头布局的实现CoordinatorLayout+behavior...

    反编译简书app和小红书app滑动效果sticky粘性头布局的实现CoordinatorLayout+behavior 小红书效果: xiaohongshuu.gif 简书效果: jianshug.g ...

  3. ipa文件反编译_手把手教你反编译别人的app

    虽然iOS系统相比于其他手机操作系统相对安全,但是这个安全并不是绝对的,我一直相信,道高一尺魔高一丈.此文想以实际例子出发,告诉大家,如何去反编译一个app,并且从某个角度来说,iOS没有传说中的&q ...

  4. 亲测成功 -> 反编译微信小程序

    http://www.xs-box.com/ 小盒软件 内网 · 穿透 · 让你在家也能管理公司服务器 · 实现远程办公梦想 是一个将局域网个人电脑.服务器代理到公网的内网穿透工具 可以让外网直接访问 ...

  5. 反编译一款APP然后重新打包(Windows环境)

    最近有小伙伴私信我,怎么把一款APP改成自己的信息呀,咳咳,这又来送题材了,今天水一把APP反编译+回编译,文中会针对一款APP进行简单的修改信息,问问题的小伙伴还不火速右上角支持一下. MacOS跟 ...

  6. jadx重新打包_反编译一款APP然后重新打包(Windows环境)

    最近有小伙伴私信我,怎么把一款APP改成自己的信息呀,咳咳,这又来送题材了,今天水一把APP反编译+回编译,文中会针对一款APP进行简单的修改信息,问问题的小伙伴还不火速右上角支持一下. MacOS跟 ...

  7. java反编译工具_Android APP 取证之逆向工具篇

    一.前言 此系列文章将针对 Android APP 取证领域展开讨论.在国内,由于最近几年国产手机厂商之间的竞争和努力,如今 Android 平台的使用数量和广度,已经远超苹果的 iOS 了.如今 A ...

  8. Android反编译之36kr.app

    背景    昨天做项目的时候因为没有数据源,就想着用jsoup去爬点数据用用(别问我为什么不用python,因为不会).首选爬的对象就是36kr.但是这个网站做了脚本处理,用script去动态加载页面 ...

  9. 反编译百度钱包app心得

    获取百度钱包app dex 1.apk中无原始dex,只有加载器,真正的dex在资源中加密 2.在启动过程中存在反java层和c层调试,检测调试器(包括android_server),运行后则无 3. ...

最新文章

  1. Java Json API:Gson使用简单入门
  2. 基于R的混合线性模型的实现
  3. 360浏览器的收藏栏不见了怎么办?
  4. 项目管理中的需求变更和解决之道
  5. 终极利器|一篇文章讲清楚Python虚拟环境
  6. 巧用Newtonsoft.Json处理重复请求/并发请求?
  7. p2psearcher2013其中
  8. java猜拳游戏代码_猜拳游戏 - java代码库 - 云代码
  9. 汇编学习--7.17--键盘输入和磁盘读写
  10. 51nod 1526 分配笔名(字典树+贪心)
  11. 将java类的泛型集合转换成json对象
  12. 简单网页-------课程表
  13. 网络营销之百度营销技巧(一) 百度知道推广日常手册
  14. queryDsl初学
  15. 数值分析第二次作业-求解系数矩阵为Hilbert 矩阵的线性方程组
  16. 走楼梯2<每日一题>
  17. 如何提高逻辑思维能力
  18. 6.1 matlab数值微分与数值积分
  19. python3--opencc安装方式
  20. [C75][こすぷれ喫茶娘々]アマツカミの巫女-妖狐戦奇譚 汉化补丁

热门文章

  1. 跟着项目学sql——查询语句优化(一)
  2. 智能手机鼻祖黑莓帝国陨落:黑莓品牌或将消失
  3. 易路代理IP软件是什么?指纹防关联浏览器和Yilu代理是怎么配合工作的?
  4. 为什么电信通信电压通常为负电压-48V?
  5. c语言 霍夫变换检测直线,C++ 霍夫直线检测
  6. 常用性能指标、性能指标评估及性能测试通过标准
  7. 【爬虫】Airtest + 逍遥模拟器 开发 APP爬虫
  8. chrome等浏览器打开开发者工具(F12)之后在NetWork看不到请求头等信息
  9. Java解方程zu q,sympy求解方程组:导致错误:仅支持零维系统
  10. Keil出现无法生成.hex文件,经检查,发现是MULTIPLE PUBLIC DEFINITIONS。