12博官网
12博官网 关于我们 业务领域 新闻中心 在线留言 联系我们
 

联系我们

网址: 12博官网

地址: 东莞市高埗镇振兴北路华宏西街1号

 

如何系统的学习安卓逆向分析?




作者:12博官网     发布时间:2020-10-29 22:09

  逆向入门的一些知识。所以首先我们需要准备一个APK,做的简单一些,就是一个EditText,已经一个按钮,模拟验证注册码。

  首先,把我们的apk用ApkTool给反编译了,进入目录发现有以下文件夹

  其中,smali文件夹里,放的都是dex反编译出来的smali文件,如果想改变应用的逻辑,只需要修改smali再重新打包即可。接下来,介绍几种突破方法。

  在代码里,我们可以很明显看到,onClick方法内,进行了验证码的判断。此时我们已经找到切入点。

  一般apk的代码不会如此简单,肯定有很多复杂的代码,这时候如何去寻找切入点呢,其实我们可以根据引用的资源来寻找,比如我们注册失败的时候会提示注册失败,这时候,我们去res文件夹下找string。

  发现name为failed,然后再去public文件里寻找对应的id,找到了

  将这个16进制的id转化为10进制,得到2131099682,在逆向得到的jar文件,索引这个id,发现正好有引用,所以这一区域是关键代码区域

  逆向离不开猜测,找到目标页面,假设要获取一个点击事件,那么就猜测类型为Button的属性,在混淆代码里,只有一个button叫做a,那么只要找这个a的点击事件即可。

  到现在我们已经有了切入点,接下来要开始达成我们的目的了,那就是改变代码逻辑。

  既然我们已经抓住了切入点,如何去破解这个注册码到底是多少呢,接下来向大家介绍几种开刀方法。

  看到混淆代码,阅读之,发现这个注册码是根据日期生成的,所以我们只需要人算出来当前日期输入即可。

  注意第48行,这里是执行了方法a(),也就是生成key的方法,把返回值交给了V0,后面所有逻辑都是根据这个判断的,所以我们可以把v0给偷偷替换掉,假设我们替换为”123”,这样我们输入123,就可以通过验证了,代码如下:

  什么叫做酒后真言?就是喝多了让他自己吐出来真心话,那么我们怎么让他吐出来真心话呢?当然是打log了,嘿嘿嘿,我们只要在v0后面打一条log,把这个v0打出来,验证码不是就自己出来了吗,哈哈。 代码如下:

  这绝对是重头戏,什么叫做深入敌营呢?就是打入敌军内部,这里说的就是动态调试拉~ 直接debug smali,看看各个寄存器里的值,你说腻害不腻害~

  首先,你需要有个2.3以下的AS,因为smaliidea这个插件不支持2.3,然后安装这个插件。

  接下来,把逆向出来的AndroidManifest.xml文件做一点小修改,给他加入一句

  这时,打开ddms,看到端口为8600,这时候把窗口里的端口改为8600.

  就可以打印出来函数调用栈,各个寄存器等信息,这时候我们使用evaluate expression 打印出v0的值:

  可以看到,与我们之前代码猜想结果一致,验证码为”0318”,到此,我们就完成了这个验证系统的逆向。

  到此,本篇文章的内容就结束了,希望各位读者不要去运用这些知识去做坏事,天网恢恢。 反而我们应该思考的是怎么去防止别人破坏我们的APP,比如增加混淆程度,签名校验,加固等等,虽然这些也能被破解,但是会增加难度。毕竟安全这件事,防君子不防小人。房子的门可以被撬开,可是我上班出门仍然会关门。

12博官网



  • 上一篇:逆向入门分析实战(五)
  • 下一篇:黑客进阶基础篇:逆向破解winexe—让我们来谈谈
  •  
    24小时咨询热线:
    12博官网 关于我们 业务领域 新闻中心 在线留言 联系我们 网站地图
     
     
    手机:  地址:东莞市高埗镇振兴北路华宏西街1号
    ©2018 东莞市天发物流公司 版权所有