APP渗透测试过程对apk逆向二次打包



       安全圈有句话叫不知道怎么进攻,不知道怎么防守。我想从攻击的角度谈谈这个问题。以市

场上某大公司的一款app为例,我来说说如何绕过它的防范机制,修改代码(弹出提示框),重新

打包,重新签名,运行。在写这篇文章的过程中,我也遇到了一些问题。我在文末整理了一下问

题,希望有这方面经验的开发者可以互相交流。另外,绕过程序的反重新打包机制毕竟不是什么

好事,所以做这个程序的程序员可能要承担这个负担。所以本文中的代码都是以图片的形式给出

的,关键识别位置都是马赛克的,但我觉得有些有心人还是能看出来这是什么程序。看到了就不

说了好吗?
 
 
好了,下面是正文。锋利的工具很管用。首先准备工具:反编译工具。1.apktool反编译工具。2.

dex2jar将dex文件反编译成jar文件(java代码),用于解释代码。3.gui打开jar文件工具。签名工具

。1.apksign是一个为java程序签名的工具。2,testkey.pk8teskkey.x509.pem文件进行签名。先

下载apk。1.用ApkTool反编译android程序。用apktool反编译,命令如下。成功后,将在同一级

别目录中生成一个测试文件夹。这是反编译的安卓程序。可以看出这个目录结构和我们写安卓

代码时的目录结构很像。除了java代码是以smali格式呈现的,其他的基本上都是原始代码。其

实很多人复制界面,你可以在这一步复制完整的界面。例如,清单文件中的活动定义可以很清

楚地看到。然后布局文件,各种res都可以看到。

 
 
 
其实我写这个的时候有个疑问。如何防止这一步?我不知道。我想问你一两个问题。如果要参

考一个程序的界面,认为所有的res和布局文件都可以看到就够了。更改代码并重新编译就是

更改这个文件夹中的smali文件,所以smali的语法应该比较熟悉。但是当我们看代码逻辑的时

候,我们不用看晦涩难懂的smali语言,这是下一步。反编译出java代码。第二,用dex2jar反

编译java源代码。第一步先放在这里。我们需要重新操作apk文件。实际上,apk文件是一个

压缩的包,所以我们把后缀名改成rar,用解压工具打开。看到这里可能有人会问,为什么不

直接解压,和我们刚才用apktool反编译的不一样?你可以试试。这里的其他文件已经在apkt

ool步骤中进行了反编译。我们需要的只是类文件,它是在java代码编译后生成的。使用工具

dex2jar可以反编译原始代码(java格式)。解压这个类文件,放在dex2jar的同级目录下。命令

如上,成功后,jar文件会生成在同一级目录下。
 
 
 
第三,使用gui查看代码。还记得我们在开始时谈到的工具图形用户界面吗?您可以通过gui

打开jar文件来查看java代码。所有导入的包代码都可以在这里找到,所以如何找到我们想要

的主程序代码取决于我们在第一步中反编译的清单文件。熟悉android的朋友都知道清单文件

中有两条重要信息。首先,包名,也就是主程序的路径,在清单的第一行。第二个信息是入

门活动,很简单,只要找到带有启动器logo的活动,就是入门活动。现在,您可以在图形用

户界面中找到这个条目类。代码中有混淆,但混淆只是替换了一些变量名或类名,增加了阅

读代码的难度,并没有修改程序逻辑本身,所以只要静下心来慢慢看,还是能看得懂的。至

此,反编译过程结束。你要看程序的逻辑或者程序的接口逻辑。第四,重新打包,签名,运

行。接下来,开始最重要的工作,修改代码,重新打包。事实上,在这里你可以在不改变代

码的情况下重新打包任何代码,看看程序能否正常运行。如果没有,看哪个步骤阻止程序运

行,这样也方便你以后定位签名验证的位置。目前,我已经看到了以下签名验证:直接抛出异

常,禁止运行。会弹出一个提示框来提示用户。提示框消失后,退出程序。与服务器交互传

递签名信息,如果不正确,服务器将不返回数据。
分享: