首页 > 编程知识 正文

android逆向是什么意思,android逆向需要学会哪些

时间:2023-05-04 11:59:58 阅读:158363 作者:575

这期间,由于某种业务驱动,开始研究一些逆向相关的东西,看一下其中所包含的大致内容,发现真的是新大陆,和之前听到的一些门面介绍完全不同,印证了真的很棘手的说法。

在这篇文章中记录下我的Android逆向旅行吧。总述

对于熟悉APP应用层开发的我们来说,知道在陈列APP应用程序时,程序需要编译、签名,生成后缀为apk的文件并发布到APP应用程序市场,但我知道的反向是从这个apk开始(反方向分为几个反方向,为了不混淆概念,这里的反方向暂且是指apk的反方向。

工具准备

要做好自己,首先要有利其器。 这句话很适合用来解释相反方向的工具。

下载反编译代码的工具:

dex2jar:将dex文件转换为jar文件的下载地址。 https://SourceForge.net/projects/de x2 jar/files/JD-GUI :此工具用于将jar文件转换为java代码下载地址。 http://JD.Beeber

APKTool:本文的重要工具,APK反向工具,简单下载地址:3358 ibotpeaches.github.io/apk tool/install /

在这里简单介绍一下大致的流程。 首先,将后缀为. apk的文件更改为. zip的压缩文件,以便于解压缩。 dex2jar与jd-gui组合使用,用于反码部分,而APKTool用于反res文件夹下的图像布局等部分。

将. apk修改为. zip文件并解压缩的目录树的长度如下:

在这里也贴上源代码。 简单地用一个输入框和一个按钮。 在输入框内输入“2018”,单击按钮可跳转到其他界面。 否则,Toast“验证码错误! 来存取编辑器。 然后,我们应该做的是突破这个“2018”,绕过验证。

反编译代码部分

您需要的是dex2jar包中的三个文件。 目前在windows环境中,这是用于Mac环境的. sh文件。

d2j _ invoke.bat d2j-de x2 jar.bat lib

将这三个文件复制到空文件夹中,然后将刚才解压缩的. apk classes.dex文件一起复制到此处。 图:

Windows cmd在此文件夹下输入。 d2j-dex2jar.bat classes.dex

Mac在此文件夹下输入。 sh d2j-dex2jar.sh classes.dex

将在此目录中生成classes-dex2jar.jar文件。 图:

现在轮到JD-GUI工具了。 运行JD-GUI.exefileopenfileclasses-de x2 jar.jar以打开刚才生成的jar文件。 可以清楚地看到我们想要的代码。 如图所示。

对照上面发送的主要代码,已经足够远了。 对于想要代码想法的我们来说,到这里为止几乎可以知道他的逻辑了。 反编译res资源部分

下载apktool后,有两个文件:jar。 例如,apktool_2.3.3.jar必须重命名为apktool.jar。 (apktool.bat )。 (这两个文件在此下载。 图:)

像刚才一样在cmd命令下进入刚才的文件夹,将刚才的扩展名与apk安装软件包放在一起,然后键入以下命令:

apktool d app-release.apk其中app-release将获取apk名称的新app-release (与apk名称相对应)文件夹。 流程图:

此app-release文件夹下有几个文件。 主要内容如下。

AndroidManifest.xml :描述文件res :资源文件smail :所有反编译的代码。 语法与java不同,它就像一个程序集,安卓虚拟机使用的寄存器语言现在已经有了想要的东西。 下一步是实现我们想法的时候了。

修改原始代码逻辑

在刚才的JD-GUI中可以看到的跳跃的逻辑判断如下。

公共void onclick (viewparamanonymousview (if ) mainactivity.this.code.gettext ).toString ).trim ).Equalim )。 主活动. this.start活动(paramanonymousview; 返回; } toast.maketext (main activity.this,'验证码错误!' 、0 ).show ); }我们修正if之后的判断条件,如果设定为no的话就if (! MainActivity.this.code.…),这样就成功避免了条件约束。

接下来的另一个重要事项是修改smali文件,找到名为MainActivity$1.smali的文件,然后在“代码”视图工具中将其打开,如图所示。

找到这个if-eqz,用if-nez(nez是非,符号“! ”来进行修改,至此为止修改的部分全部成功。 最后一步是重新包装。 当然对smali语法感兴趣的人可以在我的群里索取免费的pdf资料(415974495 ),大家一起讨论学习。

重新打包

在apktool文件夹路径的cmd下输入。

apktool b [文件夹]-otest2.apk(test2是新的apk名称,[文件夹]是需要相应的修改后的软件包的文件夹),例如,我现在就这样把apk toolb [ f :tools

这样就生成了我们的目标apk文件。 当然,如果你想放进自己的手机的话,需要重新签一次。

重新签名

首先,需要签名的. keystore文件。 生成命令如下所示(此处假设生成了demo.keystore )。

keytool-genkey-alias demo.keystore-keyalg RSA-validity 40000-keystore demo.keystore (cmd在apktool文件夹下与要签名的apk相同的文件夹

jarsigner-verbose-keystore demo.keystore test2. apk demo.keystore

到此为止。 我们的目的apk已经可用,如果需要更快、更好的体验,还需要字节对齐操作(后续分析)。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。