会员登录 立即注册

搜索

jadx 调试器 分析微信

[复制链接]
崎山小鹿 发表于 2024-4-24 17:05:18 | 显示全部楼层 |阅读模式
崎山小鹿
2024-4-24 17:05:18 1038 4 看全部
官网下载:https://sourceforge.net/projects/jadx.mirror/

用于从 Android Dex 和 apk 文件生成 Java 源代码的命令行和 GUI 工具。将 Dalvik 字节码从 APK、dex、aar、aab 和 zip 文件反编译为 java 类。从 resources.arsc 中解码 AndroidManifest.xml 和其他资源。包括反混淆器。请注意,Android Studio 可能会干扰 jadx 调试器,因此最好在附加到 jadx 中的进程之前将其关闭。 Smali 调试器,请检查 wiki 页面以了解设置和使用情况。使用突出显示的语法查看反编译的代码。

ajd.png

可以看到,小程序在代码中被称为appbrand,主要逻辑放在包com.tencent.mm.plugin.appbrand下面(部分抽出的ui控件除外);另外引用了3个js资源,均在/assets/wxa_library/下。虽然很大部分代码被混淆过的,但是适当的反编译后,我们还是能看出绝大部分东西。

开启调试
D:\Android\android-sdk\platform-tools>adb start-server
* daemon not running; starting now at tcp:5037
* daemon started successfully

D:\Android\android-sdk\platform-tools>netstat -ano | findstr "5037"
  TCP    127.0.0.1:5037         0.0.0.0:0              LISTENING       2140

微信图片_20240602232109.png

关掉adb服务:adb kill-server

点击“选择要调试的进程”
微信截图_20240602232836.png

双击要调试的进程
微信图片_20240602232725.png

进入调试模式:
jadx.png

包整理

依次整理com.tencent.mm.plugin.appbrand下的内容,按包区分:

a:似乎是单例和依赖注入的容器
appcache:微信小程序打包为wxapkg文件,这里处理的是下载解包验证和后续处理逻辑
appstorage:在数据库中存取AppBrandKVData的逻辑
b:在数据库中存取AppBrandLauncherLayoutItem的逻辑,是微信小程序列表缓存
c:通过安卓的canvas实现了一套完整的js的canvasapi,提供给小程序中canvas控件使用
config:小程序模块环境变量管理,其中数据可以通过互联网下发更新
contact:把app添加为微信联系人,似乎和聊天置顶有关
d:InputStream相关工具类
e:录音功能相关工具类
f:附近的人的小程序相关工具类
g:应该是AppBrandNetworkUtil,小程序模块用到的网络部分的工具类
h:权限管理工具类,包括小程序权限管理和jsapi权限管理,同时也可以通过网络更新
i:小程序sd卡操作工具类
ipc:ipc即进程间通信。小程序通过新开进程来保障独立运行的,独立进程的启动与微信本体的通信依赖这个包的代码完成。其中AppBrandMainProcessService是最主要运行服务,而AppBrandProcessProxyUI是小程序进程持有性质activity。
j:AppBrandConversionExtension,似乎是多个小程序切换过程中的辅助类
jsapi:微信小程序通过浏览器暴露给js环境的api的入口基本上都在这儿了,包括组件部分和api部分。最后AppBrandJSInterface把这些入口聚合在一起。
k:似乎是一些零散的工具类
l:js中WebSocketapi的native实现
launching:微信小程序加载逻辑的实现。主要是处理了很多加载准备过程中的逻辑和错误监测
m:微信小程序列表搜索功能相关逻辑
netscene:好像是对webview发起的特殊请求的处理和中断
page:页面部分,包括微信小程序列表页等,主要都是各个activity和使用的自定义view。其中l.class值得注意,应该是核心使用的webview了,h.class是这个webview的容器,也做了很多操作。
report:只是数据上报相关的东西
task:一些乱七八糟的异步工作放这儿了
ui:和page差不多,也是各种各样的activity和view。微信小程序实际的容器页面(5个)和各种功能与异常页面
widget:所有暴露给js的native控件都在这儿了。其实并不多

其他文件中值得关注的一些东西:
a.class即AppBrandBridge是小程序主路由控制器,持有着当前所有小程序
f.class看起来是AppBrandService,持有后台运行的jscore

15172-20180105221845049-357742587.png

15172-20180105221844253-1608990802.png

15172-20180105221850378-2045053537.png

15172-20180105221851331-1056034616.png

参考:
微信小程序源码阅读笔记1
回复

使用道具 举报

 楼主| 崎山小鹿 发表于 2024-5-30 16:05:10 | 显示全部楼层
崎山小鹿
2024-5-30 16:05:10 看全部
问题1:do is not a valid resource name (reserved Java keyword)
翻译:do 不是有效的资源名称(保留的 Java 关键字)
解决:您不能使用保留关键字
回复

使用道具 举报

 楼主| 崎山小鹿 发表于 2024-5-31 08:33:25 | 显示全部楼层
崎山小鹿
2024-5-31 08:33:25 看全部
Duplicate resources   重复资源
LintOptions#abortOnError 配置 用于设置 当编译时遇到错误 是否需要退出 ;
设置 true , 则遇到错误后 , 就会退出编译 ;
设置 false, 则遇到错误后 , 继续进行编译 ;
回复

使用道具 举报

 楼主| 崎山小鹿 发表于 2024-5-31 11:03:39 | 显示全部楼层
崎山小鹿
2024-5-31 11:03:39 看全部
错误:Error:Execution failed for task ':app:mergeDebugResources'.

这个异常的意思是对资源合并发生错误,那就是我使用的图片资源有问题,我使用的图片是能在android环境自适应展示的.9.png格式,在Eclipse上使用是能通过编译的,但是为什么在android studio上就不能呢?
原来,android studio中的资源文件命名是不能带有数字的,因为会与R类的资源ID起冲突,所以编译就发生了错误。
方式一:只需重新命名图片即可,在Make Project一下编译就能通过了。
方式二:我们可以用代码去除掉android studio对png格式文件的检测,这样系统就不会检测png格式的资源文件了。

找到app->build.gradle文件并打开,在buildToolsVersion属性下添加如下代码

aaptOptions.cruncherEnabled = false
aaptOptions.useNewCruncher = false
完整的build.gradle文件如下,修改完成再Make Project一下就不会报错了。
但是,主要还是看自己的编码规范,比如我遇到的问题是UI妹子切图的时候,命名不规范(下划线、A至Z、0至9,尽量避免驼峰命名法),还有是自己写对应的应用文件是否正确,都是自己编码过程中遇到的问题。

                        
原文链接:https://blog.csdn.net/qq_33721320/article/details/77198154
回复

使用道具 举报

 楼主| 崎山小鹿 发表于 2024-5-31 11:08:48 | 显示全部楼层
崎山小鹿
2024-5-31 11:08:48 看全部
报错信息:

在使用array.xml保存string[]时,如果数据中有 ' 符号时会报错

Cause: startElement.getAttributeByName(QName("name")) must not be null

解决方案:

使用 \' 进行转义
或删除  ' 符号

                        
原文链接:https://blog.csdn.net/dackchong/article/details/128798970
回复

使用道具 举报

  • 您可能感兴趣
您需要登录后才可以回帖 登录 | 立即注册 |

本版积分规则 返回列表

查看:1038 | 回复:4

  • 免费在线 Autodesk FBX 到 OpenUSD 转换器

    免费在线 Autodesk FBX 到 OpenUSD 转换器 https://products.aspose.app/3d/zh-cn/co

    阅读:173|2024-07-10
  • 3D数字人制作-Character creator

    Character creator 《角色创建者》是由Reallusion [1]公司推出的一款3D角色建模软件,

    阅读:262|2024-07-08
  • 第九区

    第九区的本质是创建一个世界模型,希望用这个世界模型能为老百姓和政府提供数据和推理

    阅读:277|2024-07-07
  • Discuz强大的广告系统

    强大的广告系统 页头通栏广告:页头通栏广告显示于论坛页面右上方 全局 页尾通栏广

    阅读:176|2024-07-07
  • 对于老百姓而言VR到底能做什么?

    VR技术自诞生以来不断发展,已经广泛应用于教育、医疗、工程、军事、航空、航海、影视

    阅读:261|2024-07-06
  • 剪映数字人口播原理

    剪映版本升级了,新版本6.0.1支持数字人定制,于是我赶紧申请了使用资格 目前的价格

    阅读:373|2024-07-03
  • 科学作息AI助手

    在魔塔空间创建了一个作息时间管理的agent >>>>>点我体验

    阅读:348|2024-07-01
  • 开发者聊科学作息时间表

    非常有幸对科学作息时间表app的开发者做一次采访。 问:你对科学作息时间表app满意么

    阅读:316|2024-07-01
  • 在线制作ico图标的网站

    给大家推荐一个在线制作ICO图标的网站 比特虫: https://www.bitbug.net/ 你也可以直

    阅读:364|2024-06-30
  • 恢复微信聊天记录

    微信好友删除了,之前的聊天记录能恢复么?能的,不管是安卓、苹果、Windows下的微信

    阅读:364|2024-06-30
金双石科技,软件开发20年,技术行业领先,您的满意,就是我们的目标,认真负责,开拓进取,让成品物超所值
关于我们
公司简介
发展历程
联系我们
本站站务
友情链接
新手指南
内容审核
商家合作
广告合作
商家入驻
新闻合作

手机APP

官方微博

官方微信

联系电话:15876572365 地址:深圳市宝安区西乡街道宝民二路宝民花园 ( 粤ICP备2021100124号-1 ) 邮箱:qishanxiaolu@qq.com
QQ|Powered by Discuz! X3.5 © 2001-2024 Discuz! Team.
快速回复 返回顶部 返回列表