安卓逆向分析步骤总结

start:2020年9月3日

一、前言

安卓逆向说好听一点叫逆向分析学习技术,说不好听就叫破解App了。但是,技术这个东西本身不分好坏,只是看你学会它之后用在哪些方面了。这篇博客用于总结我对安卓逆向分析的学习理解,主要以分析的步骤来表现,当然同时也提供给大家学习交流,仅此而已。

我们应当努力奋斗,有所作为。这样,我们就可以说,我们没有虚度年华,并有可能在时间的沙滩上留下我们的足迹。——拿破仑

 

二、工具准备

主要:

  • Android Killer   用于反编译/回编APK

  • jadx-gui  用于反编译dex文件,进行java层的静态分析

  • NotePad  用于记录分析线索,总结分析结果

调用工具:

  • DDMS  查看程序运行log / 方法追踪分析 
  • IDA  动态分析工具 / 反汇编工具 / 内存修改工具 / 脱壳 /  JNI 层分析

其他:

  • Android Studio  用于编码 /  Java层动态分析
  • Jeb
  • ApkToolBox
  • GDA
  • WinHex
  • 010

 

三、功能分析

要想分析某款App的某个功能,首先你就需要使用一下这个功能,然后记录下其中的关键字,一般来说:比如那些Toast弹出的提示、Dialog显示的文字、按键的名字等待,这些都可以作为关键字进行代码定位。但是我个人喜欢通过组件的id来定位,这样可以排除String被处理了,然后直接找组件被使用的地方,快速的找到突破口。为了演示本博客中采用String定位代码位置。

 

 

关键字:您的会员已到期,请升级VIP

 

四、Android Killer反编译

打开AK工具,将Apk拖入,等待反编译完成,出现下图所示即可:

 

五、通过关键字定位代码位置

将AK工具切换到工程搜索界面,搜索我们刚才记录的关键字,如下图:

 

搜索后发现,结果是一个xml的布局文件,这就说跟定会有一个Activity这样的活动类会引用它,我在根据这个布局文件的名称进行搜索。(关键字:dialog_package_upgrade)结果如下:

 

 

发现还是没有想要的smali文件,但是我们发现了R文件,我们可以通过里面定义的16进制的id值,再次进行搜索,结果如下:

 

 

终于我们找到了第一个关键字的被调用的位置,就决定是你了。关键字:PackageUpgradeDialogFragment

由于smali代码可阅读性差,我们接下来就用jadx将smali代码转换成java代码来进行下一步的分析,当然AK自带有这个功能,但是我个人觉得不好用。(jadx的使用方法这里就不讲了,不懂的就CSDN一下)

 

六、分析Java代码,找突破口

打开jadx,将apk拖入,然后打开搜索界面,等待反编译结束,然后搜索关键得到下图:

 

进入第一个结果:

 

 

发现是一个封装好的DialogFragment类,那么我们就看看那些地方实例化了它,然后分析得出这个地方使我们要找的地方:

 

 

继续跟踪,我们就找到了我们真正需要的地方:

 

 

记录逻辑函数:ischeckAccunt()

 

七、修改smali代码,回编

找到我们想要的逻辑函数之后,我们就分析它的逻辑,然后尝试修改smali代码,回编(修改逻辑这里就不提供了):

 

 

八、安装测试

 

 

 

九、总结

本次逆向分析发现,现在大多的App在安全防御方面还是比较欠缺的,可以说是比较落后的,在我看来一个App至少需要对两个地方进行防御:

  • java代码:1.关键逻辑代码用JNI进行编写    2.将Apk进行加固   3.代码混淆...
  • 网络传输:1.协议Body加密   2.服务器验证  3.防止VPN代理...

 

声明:本博客仅用于移动安全领域的技术研究,不用于任何商业活动,本人不承担任何责任,后果自负,如果本博客有写的不妥的地方请联系我,我会及时整改。

 

 

end:by take

  • 17
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 学习Android逆向PDF这个过程需要一定的时间和专业知识。首先,你的兄弟需要了解Android开发和Java编程语言。他可以通过学习相关的教材、在线课程或者参加培训班来掌握Android开发的基本知识。 接下来,他需要了解PDF的相关知识,包括PDF的结构和格式,以及如何解析和操作PDF文件。可以推荐他阅读一些专业的书籍或者参考一些在线教程。 在学习Android逆向方面,他需要了解Android的工作原理、应用程序分析的基本流程和相关工具的使用。可以推荐他使用一些逆向工具,例如apktool、DEX2Jar、jadx等,这些工具可以帮助他分析和反编译Android应用程序。 此外,了解逆向工程的基本知识也是很重要的,包括逆向分析步骤、常用的逆向技术和工具等。他可以通过阅读一些专业的逆向工程书籍或者参加一些逆向工程的培训班来学习这方面的知识。 最后,学习Android逆向PDF需要不断的实践和实验。他可以选择一些简单的Android应用程序进行分析和修改,然后逐渐深入研究更复杂的应用程序。 总之,学习Android逆向PDF需要充分的准备和学习,希望以上的建议可以对你兄弟有所帮助。 ### 回答2: 学习Android逆向PDF是一项复杂的任务,需要具备一定的编程和计算机知识。下面是一个简单的步骤,以帮助你的兄弟开始学习Android逆向PDF。 首先,他需要掌握基本的编程知识,特别是Java语言。因为Android开发主要使用Java编程,了解Java语法和面向对象编程的概念对于理解和编写逆向代码很重要。 接下来,他需要学习Android的基础知识,包括如何创建和设置应用程序、布局和UI设计、活动和片段的使用等等。这将有助于他了解Android应用程序的结构和功能,从而更好地进行逆向分析和修改。 在掌握了Java和Android基础知识之后,他可以开始学习关于逆向工程的知识。逆向工程主要涉及反编译、调试和分析应用程序的代码和逻辑。他可以学习使用工具如JD-GUI、APKTool和IDA Pro等对应用程序进行反编译,以获取代码和资源文件。 接下来,他需要学习如何使用调试器来分析逆向的应用程序。调试器可以帮助他理解应用程序的工作原理和关键功能。他可以使用工具如Xposed框架或Frida来对应用程序进行hook,以便在运行时获取和修改数据。 最后,他需要不断实践和尝试。逆向工程是一个复杂的过程,需要不断的尝试和解决问题。通过参与逆向工程项目、阅读相关文档和论坛,以及与其他逆向工程师交流,他将能够提升他的技能和知识。 综上所述,要学习Android逆向PDF,你的兄弟需要学习编程和Android开发的基础知识,掌握逆向工程相关的工具和技术,并不断实践和尝试。这是一个长期的过程,需要耐心和持续的学习。 ### 回答3: 学习安卓逆向PDF需要一些基本的知识和技能。以下是我给你兄弟的一些建议和步骤: 首先,要学习安卓逆向工具和技术,他可以从学习Java编程语言开始。Java是Android开发的基础,了解Java可以帮助他更好地理解Android的逆向过程。他还需学习如何使用反编译工具,例如dex2jar、Apktool和JADX等。 其次,他需要了解Android应用程序的结构和工作原理。阅读有关Android应用程序开发和框架的书籍或教程,这将帮助他更好地理解Android逆向工程。 接下来,建议他学习Android逆向工具的使用。这些工具通常用于分析和修改APK文件,例如获取源代码、查看资源文件和修改应用程序的行为。他应该熟悉逆向工具的基本操作,例如反编译APK文件、分析Smali代码和调试应用程序。 此外,他应该参加相关的培训课程或工作坊,或者参考网上的教程和指南。这些资源可以帮助他了解更多关于安卓逆向的技术和最佳实践。 最后,我鼓励他通过实践来巩固所学知识。他可以选择一些开源的安卓应用程序进行逆向分析,并尝试修改应用程序的行为。通过实际操作,他将更好地理解逆向工程的流程和技巧。 需要注意的是,逆向工程需要遵守法律和道德准则,所以请确保他将技能用于合法和道德的目的,并尊重开发者的知识产权。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值