会员登录 立即注册

搜索

jadx 调试器 分析微信

[复制链接]
崎山小鹿 发表于 2024-4-24 17:05:18 | 显示全部楼层 |阅读模式
崎山小鹿
2024-4-24 17:05:18 5068 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
天不生墨翟,万古如长夜!以墨运商,以商助墨。金双石科技长期招聘科技研发人才!微信:qishanxiaolu   电话:15876572365   公司:深圳市金双石科技有限公司
回复

使用道具 举报

 楼主| 崎山小鹿 发表于 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 关键字)
解决:您不能使用保留关键字
天不生墨翟,万古如长夜!以墨运商,以商助墨。金双石科技长期招聘科技研发人才!微信:qishanxiaolu   电话:15876572365   公司:深圳市金双石科技有限公司
回复

使用道具 举报

 楼主| 崎山小鹿 发表于 2024-5-31 08:33:25 | 显示全部楼层
崎山小鹿
2024-5-31 08:33:25 看全部
Duplicate resources   重复资源
LintOptions#abortOnError 配置 用于设置 当编译时遇到错误 是否需要退出 ;
设置 true , 则遇到错误后 , 就会退出编译 ;
设置 false, 则遇到错误后 , 继续进行编译 ;
天不生墨翟,万古如长夜!以墨运商,以商助墨。金双石科技长期招聘科技研发人才!微信:qishanxiaolu   电话:15876572365   公司:深圳市金双石科技有限公司
回复

使用道具 举报

 楼主| 崎山小鹿 发表于 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
天不生墨翟,万古如长夜!以墨运商,以商助墨。金双石科技长期招聘科技研发人才!微信:qishanxiaolu   电话:15876572365   公司:深圳市金双石科技有限公司
回复

使用道具 举报

 楼主| 崎山小鹿 发表于 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
天不生墨翟,万古如长夜!以墨运商,以商助墨。金双石科技长期招聘科技研发人才!微信:qishanxiaolu   电话:15876572365   公司:深圳市金双石科技有限公司
回复

使用道具 举报

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

本版积分规则 返回列表

管理员给TA私信
以墨运商,以商助墨。

查看:5068 | 回复:4

  • 在村子中央建立图书馆

    昨天成绩斐然,收获两栋漂亮海滨别墅,和一个高级瞭望塔,但同时损失惨重,村民损失九

    阅读:0|2024-12-22
  • 墨家小镇文化与经济

    文化建设: 墨家十要 旗帜: 八卦 双鱼戏水 经济建设: 麦田、 甘蔗田

    阅读:156|2024-12-20
  • 墨者的面具

    仿照三星堆的面具做头像

    阅读:151|2024-12-19
  • 从出生地前往墨家小镇集合

    装饰一下出生地 现在有路标了,通过路标让会员找到我们的村庄,一路要非常小心不

    阅读:239|2024-12-18
  • 墨家盾牌和武器

    盾牌上有墨家的标志,武器上也有墨家的特色

    阅读:231|2024-12-17
  • 安全的保险箱

    每个人都一个自己的箱子,只有自己能开启。且死亡不掉落! 对着一个上方没有红石导

    阅读:240|2024-12-17
  • 我的世界之墨家旗帜

    如何在我的世界里创建独特的旗帜呢? 将图片生成像素画 https://chuiliu.github.io/d

    阅读:295|2024-12-16
  • 给服务器增加组件

    给服务器增加组件,例如:墨家旗帜 租赁服务器如何使用mod? 答:目前我的世界纯净

    阅读:356|2024-12-15
  • 用手机玩墨山游侠

    用手机玩墨山游侠 各大应用市场都可以下载我的世界游戏,启动之后 选择【开始游戏】

    阅读:366|2024-12-15
  • 墨山游侠服务器开启

    在网易上开启创服之旅 服务器号:25744989 我们先用游戏版本:1.12.2 来测试,看

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

手机APP

官方微博

官方微信

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