『贝壳找房APP』反编译到底有多简单--反编译和调试实践

简介: 最近,在朋友圈看到有人发贝壳找房在Appstore上的下载排行榜,已进入前三。于是,我在应用宝上下载了贝壳release apk。点击此处下载贝壳找房Apk点击此处下载反编译debug包Apk存在的漏洞下面进入正题,一文让你知道反编译贝壳APP到底有多简单!首先下载上方链接的贝壳Apk,接下来进入简单的反编译工作!反编译技术请参考此处简书或个人博客。

最近,在朋友圈看到有人发贝壳找房在Appstore上的下载排行榜,已进入前三。于是,我在应用宝上下载了贝壳release apk。

Apk存在的漏洞

下面进入正题,一文让你知道反编译贝壳APP到底有多简单!

首先下载上方链接的贝壳Apk,接下来进入简单的反编译工作!反编译技术请参考此处简书或个人博客。先上图,反编译并重新打debug包(可动态调试smali),修改string.xml的app_name和闪屏的背景(加上了博客地址,博客域名目前已改为gavinme.com),这里的修改很简单,只是为了演示重打包步骤。

img_8bfce3ad458d74256064b29994ba1e9e.png
dec-icon.png

img_eb5736a8cb82b26d268f5b8240b45535.png
dec-闪屏.png

备注,这也许是我见过的最容易反编译的apk(在top榜的app中)。值得注意的是(仅个人观点),贝壳apk有以下特点:

  • 没加壳,无脱壳难度,不过市面上业务型有下载量的加壳的也是极少。
  • 没有防apktool逆向,可使用apktool d命令反编译smali和xml,可直接修改xml达到debug的目的。这点支付宝和微信都针对apktool漏洞有做过处理。
  • apktool可重新打包,在修改debug后,就可以随意调试。可以修改任意代码,插入广告,甚至植入木马,前提是这个APP值得你去这么做。
  • 没有防调试装置,比如签名校验、调试进程占坑、轮询等待调试状态,进程TracerPid等,反正都没有。
  • https明文传输。未校验根证书,可以轻易地通过代理抓包。不要认为有https就真的安全了,隐私信息要加密。
  • 混淆的粒度太粗,没有开启混淆优化等,后面会详述。

当然,深究的话当然不止这些。不过已经能够反编译smali,可调试,可插桩,可植入,可dump,还要啥自行车呢!这对有些人来说已经是源码了(比如我- -!)。

以下为一些反编译截图。

  1. 调试smali,查看内存中信息:
    img_08438b8166d5da3c23e2d400785c8574.png
    动态调试贝壳app.png
  1. 代理抓包,所有的请求参数和响应:
    img_ee18f0c278862b70656b74eb8db40199.png
    代理抓包.png
  2. 重编译debug包通过logcat查看开发者日志:
    img_978894f58af18870470b0972a5bc1cdd.png
    通过logcat查看日志.png

反编译步骤

由于目标apk的安全性较低,步骤很简单:

  • 通过apktool d反编译得到smali和AndroidManifest.xml文件
  • 修改xml中application属性android:debuggable="true"
  • 修改smali代码(如果你需要),重打包得到新的签名debug包

通过以上的步骤,就可以通过logcat查看各种敏感和打点信息了,当然也可以通过idea断点进行调试了。

Apk包分析

下面进行贝壳Apk包分析,因为代码价值的局限性,没有花过多时间分析。
img_5ea07a0c4e9fdfa9cccb8cdb11dd376a.png
反编译结构.png

Apk release包约50M,相对来说非常大,资源文件和asset占很大量。采用多dex打包,考虑到版本的问题(v1.4.2),这样的包大小已经远超出控制范围了。部分代码采用了kotlin编写。

img_328e6a98c30903605d0e56b83c05d22e.png
贝壳包分析.png

第三方:x5(使用了x5webview内核,MTT)butterknife(注入框架)、in.srain.cube.views.ptr(cube SDK下拉和加载更多的框架)、io.fabric.sdk.android(api、统计)、okhttp3、okio、greenrobot、fastJson、pl.droidsonroids.gif、retrofit2、rx、tencent.tls、cn.shuzilm.core、picasso、igexin(推送)nineoldandroids、orhanobut.logger、com.zhy.adapter.recyclerview不一一列举
业务:由于第三开源代码(源码级拷贝)较多,所以业务代码占比较少,同时很难看出架构的影子。网络采用了retrofit+okhttp,我不认为开源的网络会完全符合需求(因为我们项目就不是- -)。
插件化:贝壳的插件化采用的是360一样hook和占坑的方式,在im和账户页做了部分工作。

总体来说,贝壳是一个业务快速增长的APP,基于链家的背景,通过业务和产品定位不难带动用户的增长。但是通过APP的分析可以看出技术上的一些问题。值得一提的是,通过查看apktool.yml查看:

sdkInfo:
  minSdkVersion: '19'
  targetSdkVersion: '21'
  • 最低版本为19,但是却存在大量的低版本兼容库如nineoldandroids(兼容至level 9),加上大量冗余代码和未开起混淆优化(优化不使用的代码)导致包很大。
  • targetSdkVersion为21而不是23以上,或许是为了避免使用动态权限申请获取一些系统信息imei,mac,deviceId等。
  • 值得注意的,cn.shuzilm.core(官网https://www.shuzilm.cn)是给设备提供反作弊和反调试的一站式解决方案的SDK。然而,反调试并没有开启(即使开启了通过修改代码也很容易绕过去)。或许是为了借助第三方获(这一点能看出贝壳移动端对技术的不自信)取更为真实的设备信息,虽然可以防xpose的java层hook,然而修改代码重新打包依然可以进行欺骗。其实,这一类重要信息通过第三方获取本身就是非安全的。

总结

贝壳本身没有什么安全机制,所以很容易破解。但是出于做平台的目的,数据和代码安全显得尤为重要(反数据抓取)。从这个角度,它离平台级APP还有一定的距离。

目录
相关文章
|
移动开发 JavaScript 小程序
从入门到实践:Uni-app跨平台开发与应用
从入门到实践:Uni-app跨平台开发与应用
931 1
|
7月前
|
存储 消息中间件 前端开发
PHP后端与uni-app前端协同的校园圈子系统:校园社交场景的跨端开发实践
校园圈子系统校园论坛小程序采用uni-app前端框架,支持多端运行,结合PHP后端(如ThinkPHP/Laravel),实现用户认证、社交关系管理、动态发布与实时聊天功能。前端通过组件化开发和uni.request与后端交互,后端提供RESTful API处理业务逻辑并存储数据于MySQL。同时引入Redis缓存热点数据,RabbitMQ处理异步任务,优化系统性能。核心功能包括JWT身份验证、好友系统、WebSocket实时聊天及活动管理,确保高效稳定的用户体验。
459 4
PHP后端与uni-app前端协同的校园圈子系统:校园社交场景的跨端开发实践
|
5月前
|
存储 移动开发 监控
App Trace功能实战:一键拉起、快速安装与免提写邀请码的应用实践
App Trace系统通过一键拉起、快速安装和免提写邀请码三大功能,显著提升用户转化率、安装成功率和邀请注册率。结合深度技术实现与优化,助力公司用户增长,成为移动端核心基础设施。
|
6月前
|
C++ Windows
【Function App】本地通过VS Code调试Function时候遇见无法加载文件错误Microsoft.Extensions.Diagnostics.Abstractions
在使用 VS Code 调试 Azure Functions 时,执行 `func host start` 可能因版本冲突报错。错误信息显示 Rpc Initialization Service 启动失败,可能是由于缺少文件或组件导致。解决方法包括:1) 使用 npm 卸载并重新安装 Azure Functions Core Tools;2) 若问题未解决,重新下载安装包(如 func-cli-x64.msi)修复旧版本工具;3) 退出并重启 VS Code,重新加载项目即可恢复正常运行。参考资料链接提供了更多背景信息。
260 0
|
7月前
|
前端开发 开发工具 Android开发
小红书APP的全新鸿蒙NEXT端性能优化技术实践
从 2023 年开始,鸿蒙的优势愈发明显,已经成为可与 iOS、安卓媲美的第三大移动操作系统。从一些抖音视频中也可以看出,鸿蒙在流畅性方面甚至在某些层面上超过了 iOS。本次分享的主题是小红书在鸿蒙平台上的工程实践,主要聚焦于性能优化和探索。
525 10
|
7月前
|
安全 搜索推荐 数据可视化
提升游戏APP留存与付费:高性价比工具与实践
2024年中国移动游戏市场收入达2843.3亿元,头部产品占据超七成份额。在存量市场竞争中,留住用户成为关键。Xinstall推出三大工具:Deeplink实现无缝跳转提升转化;安全加速优化启动体验;分享统计助力社交裂变,以低成本助力开发者提升留存与付费转化率。
200 3
|
11月前
|
缓存 前端开发 Android开发
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
512 12
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
|
数据采集 网络协议 算法
移动端弱网优化专题(十四):携程APP移动网络优化实践(弱网识别篇)
本文从方案设计、代码开发到技术落地,详尽的分享了携程在移动端弱网识别方面的实践经验,如果你也有类似需求,这篇文章会是一个不错的实操指南。
347 1
|
域名解析 网络协议 网络安全
【App Service】遇见本地访问Azure App Service应用慢或者是调用第三方接口慢的调试小工具
【App Service】遇见本地访问Azure App Service应用慢或者是调用第三方接口慢的调试小工具
121 1
|
移动开发 前端开发 安全
uni-app跨域调试你学会了没
uni-app跨域调试你学会了没
412 0