会员登录 立即注册

搜索

jadx 调试器 分析微信

[复制链接]
崎山小鹿 发表于 2024-4-24 17:05:18 | 显示全部楼层 |阅读模式
崎山小鹿
2024-4-24 17:05:18 2038 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
回复

使用道具 举报

  • 您可能感兴趣
  • 生成身临其境的环境模型
    生成身临其境的环境模型
    清华大学创作的AI软件 aiuni Aiuni.ai是一个基于Unique3D的在线AI图片转3D模型生成建
    09-07
  • 站长日记-天道与畜生道
    站长日记-天道与畜生道
    天道无情,但众生平等,无为却处处体现博爱。畜生道有情,讲的是尊卑次序只为繁衍,处
    06-20
  • 墨者的几个阶段
    墨者的几个阶段
    一、知毛泽东,不知有墨子。 二、知墨子,但依然儒法道行事。 三、知墨子,尝试墨家
    08-31
  • 图生产3D模型
    图生产3D模型
    https://hyperhuman.deemos.com/ 上传图片,点击生成 可以多生成几次,点击应用
    08-30
  • 如何给3D人物换衣服CC4
    如何给3D人物换衣服CC4
    1.导入人物 2.设置人物Apose 3.导入衣服 create -> accessory 选择fbx文件 设置
    08-30
您需要登录后才可以回帖 登录 | 立即注册 |

本版积分规则 返回列表

查看:2038 | 回复:4

  • 生成身临其境的环境模型

    清华大学创作的AI软件 aiuni Aiuni.ai是一个基于Unique3D的在线AI图片转3D模型生成建

    阅读:28|2024-09-07
  • 墨者的几个阶段

    一、知毛泽东,不知有墨子。 二、知墨子,但依然儒法道行事。 三、知墨子,尝试墨家

    阅读:279|2024-08-31
  • 图生产3D模型

    https://hyperhuman.deemos.com/ 上传图片,点击生成 可以多生成几次,点击应用

    阅读:254|2024-08-30
  • 如何给3D人物换衣服CC4

    1.导入人物 2.设置人物Apose 3.导入衣服 create -> accessory 选择fbx文件 设置

    阅读:245|2024-08-30
  • 墨子平台总设计师

    相濡以墨,用墨子思想重塑商业,以商助墨,以墨韵商。商品把关,营销把关,职务把关

    阅读:228|2024-08-29
  • 招聘AI模型训练师

    训练人物模型,对换脸技术有研究。

    阅读:201|2024-08-29
  • 墨家商品联盟

    大家好,我是相濡以墨,我是墨子的忠实粉丝,现在墨家的朋友越来越多,很多墨家人多才

    阅读:230|2024-08-29
  • 精彩人工智能影视分享

    精彩人工智能影视分享 通过百度网盘分享的文件:AI影视 链接:https://pan.baidu.com

    阅读:276|2024-08-28
  • 墨子从两千年的沉睡中醒来

    大家好,我是墨翟,就是你们后世称之为的墨子,我突然从战国时代的沉睡中苏醒,置身于

    阅读:301|2024-08-24
  • 机器人模型制作

    使用图片 关键词: 未来人机合体,科幻,真人头部,头部以下是机器身体,身体透明外

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

手机APP

官方微博

官方微信

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