关于学习安卓逆向破解

前言:

回顾:

​ 其实这篇文章很早之前就想写了,但是一直没找到合适的时间和破解逻辑的思路总结…….经常上吾爱学习并与吾爱大佬交流破解里的人,对学习逆向既是陌生又是感兴趣的,因为它不仅仅是把一个软件一项功能给限制性破解掉,也不单单为了获得一个VIP破解而去学习(当然,很多人都是因为这个)。破解确实比较麻烦和精妙,因为这里面不仅牵扯到“攻与防的问题”,还涉及到各个理论原理以及安卓软件内部架构代码逻辑运行问题。

​ 在安卓逆向圈,有句俗话说的很好:“一千个软件,有许许多多个不同的功能和方方面面”,这句话其实也从侧面反映出安卓软件其实功能与它的结构密切相关。同时破解的人,也是千篇一律亦或者“一千个读者,有一千个哈姆雷特”,这里所说的是逆向之人读取软件方法和逻辑也应该会有所不同。

虽然,软件种类繁多,并且各个结构不尽相同,但是他们都有着一样的逻辑和运行规则,所以破解思路是有个大致的过程,想要学习并快速读通、能够熟练操作破解软件方法,关键在于是否能够熟练破解其中的原理,并熟练掌握其代码逻辑运行规则。打开或者切除限制,后门开通vip服务等。因此,想要快速掌握并成为破解大佬,须得多上手实操,多练习,多拿软件来练手,和想拿高分,必须经过疯狂刷题一样的道理。但是每个阶段都会感触不一样,因为不同境界理解划分。

下面我将从人门时做的一些笔记描述一些“逆向破解场景思路”等,仅以此文,代表曾经破解入门时的满怀学习新知识的入门交流。

温馨提示: 本文篇幅较长,可通过网站旁的目录跳转查看!

步入正题:

#第一节 一:第一节: app的结构认识和修改名字版本号

1.找个app——点击——查看名称,app版本,信息id等。

2.点击查看,一堆文件:安装包组成成分,安装安装包,认识:

==a. assets资源文件名==
==b.lib 杂乱文件,没啥东西==
==c.META-INF 签名文件存放处(3个文件夹)==
==d.rss.一些 图标文件,图标==
==e.AndroidManifest.xml全局的配置文件==
==f.classes.dex 字节码集合==
==g.resources.arsc 字串符集合==文件====

2.修改APP名字: 点击.arsc文件夹——点击字节常量值——过滤(万能)修改名称——确定(会生成出bat副本文件)。

3.修改版本并查看: 应用程序APP包名下会有版本号。
实操: 点击查看——全局配置文件Androidmanifest.xml——打开方式(可以直接反编译,会员功能)——反编译里面有(去更新,修改版本号:versionCode=99999,)——versionName(版本名称)修改之后保存。

无会员,打开字节符常量值——找到版本号,更改版本号,还版本号名字。只限于看到的版本号。

4.安装之前,更改了。必须再功能中APK签名——只有签名,手机才能识别APP,要不然安装失败,无法识别。

二: #第二节: MT管理器去除广告

#方法1.去除联网权限,先看看app广告位置以及可去的丑陋程度。

原理:
适合本地联网的APP,修改方法。去除联网功能,去除广告连接。
例如: 本地的反编译工具APP,还有些本地播放器。

操作方法:
查看——Androidmainfest.xml——字节常量符——过滤搜索(Internet)——搜索到(Android.permission.INTERNET)去掉这段英文。删掉,保存,返回,更新,这样联网功能删除了。

卸载原版本,安装新修改版本!

#方法2.修改广告布局参数 (分为浮点式广告,镶嵌式的广告)联网谷歌广告,预留空间,给广告,镶嵌式。

显示广告,必须在Androidmainfest.xml里注册。
查找ad广告,所在代码段。ads多处广告,

操作方法: (找到布局方法)
首先找到res——layout文件全局的布局的文件里——点击adview.xml广告视图页面——反编译——Android:id,参数layout_width宽度修改,改成=“0.0dip”,高度都改成“0.0dip”反编译一个源码,
(有些参数广告在:audacity广告所以页面活动,全部修改!!)

返回签名apk,安装 绿色签完名的app,删除之前原本的版本。

#方法3.删除广告的链接

带广告的应用找了很长时间才找到一个。(破解广告mt,up主讲的一个笑话)

操作方法:
查看——打开classes.dex——dex编辑器——字符常量值——过滤:http——删除谷歌广告所有的链接。改成全部为0或者直接删除,

含有代码字符的广告:
建议还是删除。字符别直接删除网址
改成http://0.0.0/safa/sdk-core……
以此类推=0.01 0.02……0.03

#第三节: 修改软件的显示方向,横屏竖屏两种。

方法一:
例如: 一代MT美化等,mt一直竖屏显示,
操作
在二代mt管理器——打开一代管理器,查看——Androidmainfest——反编译——搜索代码screen(屏幕)——screenaOr ientation——“portrait”竖向,竖直。代码后面都是默认程序显示屏方向——landscape横向,横屏。,点击全部替换,共替换21次。 所有代码都改成成横向屏幕。

点击保存——更新——退出签名———保存安装。
允许一次,可以点击安装。所有屏幕安装都是横向。操作无影响,只是横向横屏而已。

#第四节: 去除盗版更新提示公告等提示框

1.去除提示弹框方法

操作方法:
找到安装包——查看——classes.dex——Dex编辑器————常量搜索——弹窗内容: 公告(数据类型:字串符)——查看搜索内容——MainActivity——shownotice(提示公告)这里修改: 直接前面部分内容删除——(保留最后一行返回函数:return-void留住,最后不显示)。一路返回,保存退出。

卸载原包公告——安装修改过版本(查看效果)

#第五节: apktool反编译给app添加彩色toast弹窗

方法原理:
以一代MT为例,无修改MT管理器

操作方法:
点击查看——把classes.dex文件解压复制到——英文路径里——使用apktool反编译dex文件——反编译后(可删除原版)——回到MT管理器(包名:bin.mt)反编译——找到bin-mt文件夹———接下来,可以打开“彩色弹窗”软件——选择颜色代码——写出自己想要的弹窗文字——生成弹窗代码——添加输出路径(默认即可)——生成出弹窗代码——调用代码(需要添加:找到生成的samil文件,)——把生成的smail文件添加到bin_mt文件夹里,再到main.smali/Mainactivity文件下,添加调用代码,点击搜索oncreate 在.registers.13换行

换行的这一行下添加之前生成的弹窗的调用代码。

然后保存,返回,在apktool里再点击修改过的classes.dex然后回编译它,反编译完成。

点击未修改的软件,查看,把修改过的dex文件添加过去,然后返回给它功能里签名,

卸载原版,然后再安装,查看效果。完成!!

#第六节: 替换app图标,美化app图片同理

操作方法:
示例: 二代MT管理器中的葫芦侠 (换图标)

点击查看——res资源文件——在drawable-hdpi-v4下——寻找图片拼的数列图——tool_app_icon.app名称——168x168分辨率照片——找一张使用照片编辑器编辑(可压缩)——调整分辨率——保存,格式图片设置为jpg/png,一般选择png。保存后记住路径——寻找制作的图片,然后重命名替换,添加替换的照片。(另外,其他图片,适合其他不同类型手机的分辨率而已。)这样话,直接把替换的应用图标添加到每一里面,都可以显示这些。把每个有图标文件夹,替换掉。一般正常软件只需要2-3个替换的图标即可。

结尾:

#第一章:吾爱破解论坛大佬讲解部分

第二小节: 初识APK文件结构,双开,汉化,基础修改。

双开原理:
1.修改包名: 让手机系统认为这是两个APP,这样的话就能生成2个数据存储路径,此时的多开就等于你打开了两个互不相干扰的APP。

2.修改framework来实现双开的目的,例如,小米自带双开。

3.通过虚拟化技术实现,虚拟framework层、模拟android对组件的管理、虚拟应用进程管理等一整套虚拟技术,将APK复制一份到虚拟空间中运行,例如:平行空间。

4.以插件机制运行: 利用反射替代,动态代理,hook了系统的大部分与system—server进程通讯的函数,以此作为“欺下瞒上”的目的,欺骗系统“以为”只有一个apk在运行,瞒过插件让其认为自己已经安装,例如:VirtualApp
![[IMG_20240321_230036.jpg]]

双开教程操作方法:
通过修改包名实验双开,点击功能——APK共存——生成新的包名——勾选自动签名(mt需要登录,并且需要会员功能)

换NP管理器——提取安装包——功能——APK共存——确认——生成了一个共存包,可以安装两个了demo——双开动用了应用签名信息——如果开发者插入了签名信息效验,那么会出现打开后闪退情况,可以用NP和Apktool尝试去签名效验等功能,防止闪退。

总结:

总之,安卓逆向还有很多漫长的路需要学习。因为上有政策,下有对策,而正版和破解的黑灰产相当于“矛与盾”,它们也是相互针对的攻防,有破解,必有防守。所以,以上的内容只是些许皮毛而已,针对目前的软件完全不够深入核心。总之,逆向之路长路漫漫,希望终有一天,你能拨开云雾见终见晴天,总会有那么蓦然回首一刻,会让你柳暗花明又一村!最后,请切记勿做违法违规相关事情!