原文章逆向思路

重点:先向CSDN审核客服声明一下:本文仅仅是用于技术交流,甚至可以都算不上APP逆向,文章提到的截图已经全部打码、也没有提及是什么APP,希望审核人员可以通过本文章,谢谢。

这是一篇入门级的APP逆向教程,如有写着不对的地方,烦请大佬们指出,互相学习,谢谢啦

全文目录

  • 前言
    • 0x00、预估一下本次的逆向步骤
    • 0x01、首要就是抓包分析
    • 0x02、反编译APP
    • 0x03、修改 smali 代码,重新打包、签名
    • 0x04、最后重新签名之后,你可以卸载原来的APP,然后装上这个无限制的版本,哈哈哈...
    • 最后: 真感谢每一位小伙伴,竟然看完了我的文章,谢谢你们啦,有帮助的话,点个赞呀
    • 打赏喝咖啡

前言

本文起源于:前两天,我的一位朋友跟我说,他在QQ群里面,一位群友,发了一些黑色/灰色地带的产业链信息,他就仅仅是好奇,去下载了那款APP

原来发现,QQ群友的分享,是为那款APP做引流,一个有效的分享可以获得多少金币(砖石)这种(是指引导别人来注册,才算有效分享,才能获取金币)

打开之后,发现很惊人,这直播!!!

而这直播APP里面区分:免费和付费的房间,当你想要看付费的房间,那你只能看前面几十秒钟的时间,过了这个时间就会弹窗出来,让你付费,才能继续看

我朋友就让我帮忙看看,跟我说有什么能难倒程序员的??而且刚好最近我在学APP逆向,心里想着,这种灰产的APP又不能大力宣传,估计反逆向不会做很好吧?然后就开始尝试搞搞,看看能不能逆了它

0x00、预估一下本次的逆向步骤
  • 第一步、抓包分析
  • 第二步、反编译
  • 第三步、根据第一步的抓包关键词来搜索
  • 第三步、根据抓包信息、收费弹窗,来分析这个收费的逻辑
  • 第四步、得出这个逻辑之后,对smali代码进行篡改,保存
  • 第五步、回编译APP,重新打包签名

本次用到的工具:魅族手机(Flyme6)已经root的、HttpCanary抓包工具、MT管理器、xxApp(这个不公开说了)

0x01、首要就是抓包分析

由于本次使用的手机是root的,而且抓包工具的证书已经被我安装到系统证书的目录下,而非直接安装到用户个人证书(所以对于本次APP是否有检验抓包工具检测这一块,直接忽略掉)

打开HttpCanary抓包工具,然后找到【设置】

然后选择【目标应用】,这里为了过滤无用的包,减少干扰,利于快速分析


返回去之后,点击开始【抓包】,然后转向去打开目标APP,然后打开一些room,免费的、收费的都开一下,目的就是为了抓包,看看APP发起了哪些请求、收到哪些响应

再切换回来之后,发现已经存在一堆抓包信息了

一个一个查看包响应,看看有什么收获

没想到,竟然发现如此大的突破口

看下面的两张截图前,再次向广大博友们声明:本次教程仅仅是用于技术交流,而非传播不当东西,谢谢。

下面来看两张收费的room的就截图:一个用户点进去看了几十秒(应该是30s,具体是多少没有数),然后就弹窗出来说得需要付费才能继续,这不诱惑人进行付费吗?

更多详情请看这里的原文,必看

0x02、反编译APP
  1. 鄙人一开始是,使用 jadx-gui 来反编译APP,发现没有壳、没有很强的混淆,可以直接反编译

  2. 反编译之后,进行相关的关键字来搜索,前面抓包中,有个很有用的关键词:

"type": "2",
"type_val": "38",
"type_msg": "本房间为收费房间,需支付38钻石"

再来简单分析一下:这三个字段中,如果你直接搜索 type 的话,根据经验,这肯定会出现很多搜索结果,排除它;而 type_val 、type_msg 这两个字段出现的概率不会很大,那么分析完了,就开始搜索呗!!!

首次我搜索的是 type_val ,但是出来的结果还是不够精准,有6/7条结果;
然后转而去搜索 type_msg,发现出来的结果只有两处,这不就是很精准了吗,噢耶!!


然后选择第二个进去看看。

你们可以思考一下为什么是选第二个呢?(我个人纯粹是靠大胆的猜测,因为第二个有关键词 LiveRoom,就是直播房间嘛)

发现抓包中的三个参数,都在这里取出来了,而且发现是对那个 type 字段进行判断是否收费的,多次抓包分析得出返回的数据中:免费房间的 type=0,收费的房间 type=2,至于代码中还有一个 type=1 的判断,看到代码中调用的方法名,可以猜测:

  • type=0,调用 forwardNormalRoom 方法,根据字面意思是:转到正常(免费)房间处理逻辑
  • type=1,调用 forwardPwdRoom 方法,根据字面意思是:转到输入房间密码处理逻辑
  • type=2 || type=3,调用 forwardPayRoom 方法,根据字面意思是:转到房间收费的处理逻辑

所以,我们只需要将,type=1/2/3里面的调用方法,改为调用type=0的方法即可绕过这个限制,话不多说,下面就是修改的步骤,Just do IT

0x03、修改 smali 代码,重新打包、签名

理清当前逻辑之后,本文使用最轻量级的、入门级的、小白级的工具——MT管理器

简单来简述一下它的功能:

  • 其他文件夹有的基础功能它也都有(复制、移动、重命名等等)
  • APP安装包编辑,主要有 DEX 编辑,ARSC 编辑,XML 编辑,APK 签名、APK 优化、APK 共存、去除签名校验、RES 资源混淆、RES 反资源混淆、翻译模式等
  • 可以修改文件夹权限(系统目录的话,需要 root 权限才能修改)
  • 自带强大的文本编辑器,可以流畅编辑大文本文件,支持设置是否显示行号、开关自动换行、双指缩放字体大小、自动识别编码、代码语法高亮、自动缩进、正则搜索替换

其他更加强大功能,待你们去发掘,相信用过了之后,你们会觉得这是用来修改APP包/破解APP限制的一个好工具。

本次主要是使用它的第二个功能——APP安装包编辑功能

  1. 使用MT管理器【查看】目标APP包

图中我圈了红色的三个文件是我们待会需要进行操作的

其中,第一个 META-INF 目录中,包含了一些签名文件等,我们将里面的三个文件删除掉:CERT.RSA、CERT.SF、MANIFEST.MF(其中CERT.RSA、CERT.SF这两个命名,不同APP可能会名字不一样,只要找到后缀格式一样的即可)。

Tips:鄙人在这里踩了一个坑,这个好像得需要删掉这三个文件打包才不会被检测到。不然重新打包签名之后,一联网打开APP就会出现闪退的情况,估计是被检测检验了。

文件 classes.dex、classes2.dex 就是APP编译之后,Class转成成.dex文件,dex是Android平台上(Dalvik虚拟机)的可执行文件, 相当于Windows平台中的exe文件, 每个Apk安装包中都有dex文件, 里面包含了该app的所有源码, 通过反编译工具可以获取到相应的java源码。

一些工程很大的话就会产生多个.dex文件,到现在有了前面的介绍,我们可以简单的知道:dex 文件就变相等于可执行的源码,那我们可以通过修改这个源码来达到逆向的目的(说法如有说错,烦请大佬们纠正,谢谢啦)。

  1. 先打开第一个dex文件,MT管理器会提示我们,要用哪个打开,选择 【Dex编辑器++】即可

3.选择【搜索】 ,然后输入刚刚那些关键词【type_msg】

  1. 点击右上角,再次进行搜索:【type_msg】

    此处,你得需要一些smali语法,但是本文我只介绍本文使用的语法:
  • if-eqz : 意思就是 是否等于0(if equal zero)
  • if-eq:意思就是 是否相等 (if equal)
  • const/4 p2,0x1:意思就是将0x1,即0x01赋值到 p2 ,即 p2=1

所以,if-eqz p1,:cond_4b就是:如果 p1=0,那么调用方法 cond_4b;
if-eq p1,p2,:cond_45如果 p1=p2(p1=1),那么调用方法 cond_45 ;

这也印证了我们前面反编译APP的源码逻辑。
那肯定会有小伙伴会问,那个 cond_4b 是什么方法?很好,我这里回答一下,因为通过我们前面反编译的分析,我们已经知道,如果type=0的时候就是调用 forwardNormalRoom 方法,所以,可以肯定的告诉你们,这个cond_4b就是指向这个 forwardNormalRoom 方法。

  1. 将type=1/2/3的情况,调用的方法改为调用 cond_4b 即可,然后点击右上角的保存

  2. 保存之后,返回上一层第一层搜索的时候,点击右上角,选择【编译】

  3. 编译之后进行返回,返回的时候会提示你,点击【退出】即可。此时会再次提示你,dex文件已经修改,问你是否更新到压缩包中 ,我们选择【确定】

    然后你会看到压缩在更新

  4. 然后返回之后,你会看到一个刚刚被修改过的apk文件,显示绿色名字的,然后点击它,第一步选择【功能】、第二步选择【APK签名】

    选择【确定】即可

    然后就任君选择啦

0x04、最后重新签名之后,你可以卸载原来的APP,然后装上这个无限制的版本,哈哈哈…

本文入门级的APP逆向教程已经编写完毕,妈呀,花了几个小时来重新演示逆向过程,以及编写本篇文章

最后: 真感谢每一位小伙伴,竟然看完了我的文章,谢谢你们啦,有帮助的话,点个赞呀

题外话:希望小伙伴们都别用于非法的手段,本文只是技术交流

谢谢大家

相关文献参考:

【APP逆向-入门级】记一款直播APP逆向过程
META-INF目录是干啥用的?

打赏喝咖啡

你的支持就是我的动力,感谢感谢

【APP逆向-入门级】某直播APP逆向过程相关推荐

  1. i国网app苹果版_黑白直播app苹果-黑白直播苹果手机版下载

    黑白直播app苹果版是一款体育球迷最喜欢的体育直播软件,每日都有大量的赛事内容以及赛事资讯实时在线得知,各大赛事比分和球员数据都能第一时间在线得知,全球的赛事直播资源免费观看,每一场赛事数据和球队资料 ...

  2. android直播app下载地址,g直播app官方下载安装

    软件介绍 G直播是Gensee直播/教育平台的移动客户端app!首家提供播放器编辑器功能,无需编程,课堂场景自助式设计,所见即所得.提供多款直播播放器选择(纯视频.两分屏.三分屏.互动增强等),作为移 ...

  3. 完整的iOS直播app

    今年移动直播行业的兴起,诞生了一大批网红,甚至明星也开始直播了,因此不得不跟上时代的步伐,由于第一次接触的原因,因此花了很多时间了解直播,整理了直播的原理,希望能帮助到更多的人更快的了解直播. 一.个 ...

  4. iOS直播APP—原理篇

    原文:http://www.jianshu.com/p/bd42bacbe4cc 作者:@袁峥Seemygo 一.使用的三方SDK 直播:七牛云 即时通讯:环信 视频滤镜:GPUImage 二.直播环 ...

  5. 云豹直播app源码对fragment替换方案的思考

    fragment是google将界面逻辑拆分成多个模块的一种思路实现,属于轻量级的一种activity,使得很多逻辑可以进行复用和重组.但是在使用的过程中,可能会出现各种各样的令人头疼的问题,而且fr ...

  6. 直播APP开发:熊猫直播求续命,直播的多种玩法

    2019独角兽企业重金招聘Python工程师标准>>> 2016年,直播行业疯狂发展,随之兴起的便是斗鱼.虎牙.战旗.熊猫这些直播平台,而现在,王思聪的熊猫直播准备作价30亿,以一部 ...

  7. 某直播APP逆向TCP协议分析

    概述 一枚小菜鸟终于完成对炫舞梦工厂APP的分析.该直播APP采用TCP协议,TCP连接建立之后,首先进行基础连接认证,认证通过之后,进行帐号认证,完成即可进行获取角色信息.进入房间等各类操作.发送数 ...

  8. 安卓逆向Xposed HOOK TB直播APP的x-sign参数

    最近学习安卓逆向,接触一下TB系的APP,了解大厂APP是做数据安全的,这篇文章主要介绍某宝直播APP的签名参数x-sign的HOOK过程,当然,其他的参数也是可以HOOK的.本文只用于学习交流,请勿 ...

  9. 安卓逆向Xposed HOOK TB直播APP的x-sign参数(二)

    最近学习安卓逆向,接触一下TB系的APP,了解大厂APP是做数据安全的,这篇文章主要介绍某宝直播APP的签名参数x-sign的HOOK过程,当然,其他的参数也是可以HOOK的.本文只用于学习交流,请勿 ...

最新文章

  1. ubuntu 下搭建redis和php的redis的拓展
  2. sigaction 函数,sigemptyset()函数,fcntl()函数,isatty()函数
  3. SQLite自增关键字报错(near “AUTO_INCREMENT“: syntax error)
  4. java 判断是否大于指定版本号
  5. 人工智能系统研究的9大挑战和4大趋势
  6. SpringBoot 自动配置实现流程
  7. 评审会上产品经理常被怼的话
  8. 成为oa的飞鸽传书重要标准应用与开发平台
  9. jenkins自动部署--定时轮询svn代码更新并自动发布至测试环境
  10. 中国节能吊扇行业市场供需与战略研究报告
  11. vue-cli 基本原理
  12. Portal widget 插入 widget
  13. ES6字符串的扩展方法~超详细哦
  14. 控制反转(IOC)入门
  15. OC 类的load方法
  16. 环境试验之单臂跌落试验机操作规程
  17. A股市场低开现象研究
  18. MacBook Pro键盘功能盘点
  19. 常用工具及常用解决方案
  20. 谷歌学术 rss_更改Google RSS文件夹

热门文章

  1. Photoshop学习(三十):修正图片颜色
  2. Android瀑布流仿京东,(二) 仿京东顶部伸缩渐变丶自定义viewpager指示器丶viewpager3D回廊丶recyclerview瀑布流...
  3. SQL基础入门-数据控制语言-Grant与Revoke
  4. 网络支付7月起执行实名制 去年实名账户比例仅占一半
  5. vivo新系统originos和鸿蒙,再见Funtouch OS vivo全新系统OriginOS
  6. 【在线考试系统】B站讲的最好的毕业设计之在线考试系统
  7. linux桥接模式不能上网/ping不通主机解决方案
  8. 海明码!是人看的例子!说人话!
  9. 【Mac Technology Overview】(二) Creating Software Products for the Mac Platform(在 Mac 平台上开发应用)
  10. excel中打印问题处理