AliCrackme_2题的分析
来源:互联网 发布:国内蜜月旅行 知乎 编辑:程序博客网 时间:2024/05/22 16:58
作者:Fly2015
AliCrackme_2.apk运行起来的注册界面,如图。
首先使用Android反编译利器Jeb对AliCrackme_2.apk的Java层代码进行分析。
很幸运,就找到了该apk程序的用户注册码的函数securityCheck并且这个函数是在Native层实现的。下面就到该程序的so库中去查找该函数的Native实现。
Native层securityCheck函数的注册并不是使用在JNI_OnLoad函数中进行注册的方式注册的,因此非常走运的找到securityCheck函数的实现,分析如下图:
通过对Native代码的静态的分析发现, _lpSaveBuffer = off_628C中保存的就是正确的注册码字符串,因此,要获取该apk的注册码,必须对其进行动态的调试,获取到_lpSaveBuffer 中保存的字符串的内容就能实现该apk的破解。
对该Android应用程序进行动态的调试。说一句,Android应用程序一般会在JNI_OnLoad函数中进行程序的反调试操作,以防止别人对其App进行动态调试。经过几轮动态调试的实验,发现该Android应用程序会调用函数pthread_create创建线程进行反调试。因此,直接在函数Java_com_yaotong_crackme_MainActivity_securityCheck处下断点实现破解的方法不能直接达到。
因此,为了阻止该App程序的反调试,将程序的代码进行了修改。如图,定位地址A8CE 9C58处的ARM汇编指令BLX R7在内存中的位置,然后将汇编指令BLX R7改为汇编指令MOV R0, RO即NOP掉BLX R7指令。
至于ARM汇编指令与机器码的转换,使用下面这个工具,但是请注意,在使用这个工具的时候,必须将这个工具放在桌面上才能正常的使用。
顺利跨过反调试的障碍,下面就在函数Java_com_yaotong_crackme_MainActivity_securityCheck上下断点,直奔主题。
在程序输入密码的界面上,随便输入一个字符串密码,函数Java_com_yaotong_crackme_MainActivity_securityCheck就会被调用。
程序就会断在函数Java_com_yaotong_crackme_MainActivity_securityCheck上,然后在该函数里找到_lpSaveBuffer = off_628C对应的汇编代码LDR R2, [R1, R7]。在汇编代码LDR R2, [R1, R7]的下一条指令上下断点即可得到R2保存的密码字符串指针的地址为A8CEC450,然后在程序数据内存中同步R2的值定位到地址A8CEC450处的字符串aiyou,bucuoo,很显然aiyou,bucuoo就是要获取的密码。
AliCrackme_2题的分析文档和apk下载地址:http://download.csdn.net/detail/qq1084283172/8897059
- AliCrackme_2题的分析
- 【动态调试so文件】 + AliCrackMe_2分析记录
- 趣味题的分析
- core 分析的分析
- 一个笔试题的分析
- collect一题的分析
- racing一题的分析
- POJ 1005 题的分析
- 数据分析的重要性分析
- 关于一道招聘题的分析
- C语言测试题的讲解分析
- C语言测试题的讲解分析
- 求结构长度笔试题的分析。
- C语言测试题的讲解分析
- baidu的题,分析,算法,编程(转)
- 对一道题的算法分析
- 爱因斯坦谜题的图表分析法
- C语言测试题的讲解分析
- c++ 中的单冒号与双冒号
- JS高级程序设计5-引用类型
- Android 访问权限设置
- 2015.7.9 第四课 课程重点(浮动、盒子模型、绝对/相对定位)
- 企业如何快速拥有高效便捷的客服服务
- AliCrackme_2题的分析
- 【零基础学习iOS开发】【01-前言】02-准备
- iOS系统方法进行AES对称加密
- C++标准转换运算符reinterpret_cast
- HDU 1013 Digital Roots
- 2015.7.13 第五课 课程重点(z-index、overflow、浏览器兼容性)
- 【零基础学习iOS开发】【01-前言】01-开篇
- The client has disconnected from the server. Reason:Protocol version mismatch. Required protocol ve
- 第一篇:在opencv3.0中,Mat与iplimage转换