《教我兄弟学Android逆向08 IDA爆破签名验证》

上一篇  教我兄弟学Android逆向07 IDA破解第一个so》我带你下载了逆向神器IDA,并用IDA修改了我们第6课写的一个Demo 学完上节课的课程有点同学反映说用进制修改器修改so会好些 比如说010EDitor 不可否认的是进制修改器确实好用 但是上节课的目的是让你接触到IDA这个工具  关于010EDitor后面的课程会有讲到。

对于apk的签名我想你一定不陌生  apk如果被反编译 那么原有的签名将不会保留 如果你要想对反编译后的apk重新打包 那么就要对apk重新签名才能安装到手机上
通过百度知道一个apk只有一个签名 而且这个签名是必须存在的 不然你这个apk就不能安装到手机上 。

要么学!要么不学!学和不学之间没有中间值 不学就放弃,学就要去认真的学!    --致选择

看了上面我的介绍 你有点不耐烦说大哥我要跟你学的是破解 你跟我讲什么签名 我不学了!

大兄弟你别着急,还记得李华吗?咱们儿时的小伙伴 ,有点事想请你帮忙

下面介绍一下李华 李华是一个很有天赋 的Android程序员 他用了半年时间含辛茹苦,挑灯夜战,摧枯拉朽的编写了一款黑宝宝游戏 当然这几个词形容的并不恰当 但是李华确实为了这个apk的上线付出了很多努力  谁知游戏刚一上线就被破解了,生不生气?难不难过?

吸取了这次的教训 李华决定要反击 他通过书籍 了解到一个apk只有一个签名 于是他有了一个很大胆的想法:

如果别人要破解我的apk他一定会对我的apk进行重打包 但是重打包后的签名就不是我原来的签名了 我可以在代码中判断 如果签名不是我的签名 那么就让程序退出 这样不就达到防止别人破解的目的了,哈哈哈 太佩服我自己了。

他知道你最近在学习Android逆向 他想在游戏上线前让你测试一下他新加的签名验证是否能防住别人的破解

下面是李华编写的这个加上签名验证的apk
链接:https://pan.baidu.com/s/1n0xjnA_eateCSDOjysyquA 密码:7g6z

你拿到这个apk看了一会说他的签名验证是写在so里面的 但是我不会so的破解 大哥你教教我吧

我说:好吧!

下面开始本节课的课程 请同学们认真听课

一  打开导出表窗口(Exports)
1.apktool解包apk后用IDA打开libJniTest.so

下面介绍两个窗口:
(1)Exports窗口是导出表(so中能让外部调用的函数)
(2)Imports窗口是导入表(so调用到外面的函数)

2.通过分析java层知道程序调用了一个native层函数check 既然知道了Exports窗口能列举出外部调用so的所有函数 又知道natve函数check是在java层被调用的
所以打开导出表窗口 搜索check  通过第6课知道 so中的函数都是java_包名类名_方法名格式的 所以这里check函数就被找到了

3.双击进去查看check方法 并按键盘f5将汇编转换成C语言 但是这里看到好多中文乱码 此时按住alt+A键打开ASCII string style窗口
然后点击set default encodings 在弹出框中选择8-bit的change 选择utf-8后点击ok回到c语言界面按f5刷新一下界面 乱码问题解决



4.乱码问题虽然解决了 但是下面的代码可读性很差 此时需要导入jni.h文件 点File->Load file->Parse C header file 找到jni.h所在位置 点打开 此时显示Compilation successful 导入成功
jni.h下载链接:https://pan.baidu.com/s/1faR0m4TYWLFZOgZySaB0vw 密码:jmsw


5.点击函数第一个参数int 右键Convert to struct* 在弹出的框中选择_JNIEnv点ok后可以看到有一些函数已经显示出来了

6.虽然现在下面已经显示出来一些函数 但是可读性还是差一点 为了让代码可读性更好 选中下面的函数 右键Force call type 

其他的函数也都这样做 然后点住a1按住n键重命名为env 至于为什么这样做 这不是本节课的重点 以后的课程中会讲到的 

8.以后的课程会有JNI的编写 所以这里就不带你分析了 由于本节课的重点是破解 点击回到汇编视图 然后按空格键转化为图形视图  通过图形视图可以对apk的整个逻辑一览无余 快捷键ctrl+鼠标滑轮可以缩小方法视图


9 通过图形视图很清晰的可以看出 如果签名正确程序通过BNE指令跳到左视图程序继续执行 否则跳到右视图退出程序
bne: 数据跳转指令,标志寄存器中Z标志位不等于零时, 跳转到BNE后标签处
beq: 数据跳转指令,标志寄存器中Z标志位等于零时, 跳转到BEQ后标签处
这两条汇编指令相当于smali里面的if-eqz,if-nez是相反的


10.通过上面的分析 现在你知道怎么改了吧 没错就是把BNE改成BEQ 让程序在签名错误的情况下还能继续执行 鼠标选中BNE执行按住空格键 返回到汇编视图 通过上一课你知道修改so就是改16进制
通过鼠标点住BEQ 可以看到BEQ命令对应的16进制是D0 那么这里只要把BNE那行命令BNE对应的16进制改成D0是不是就可以把命令BNE换成BEQ了

11 鼠标点住BNE那行命令 View->Open subviews->Hex dump打开16进制编辑 把BNE


12回到汇编窗口可以看到BEN已经被改成了BEQ

二 总结
本节课我带你认识了apk的签名验证 然后通过李华给你测试的apk又熟悉了IDA的使用 了解了IDA的导入和导出窗口接着又学习了两条汇编指令 总体来说从这节课你收货的东西还是挺多的

课堂作业
1.爆破李华Demo中的用户名和密码 要求输入任意用户名和密码 提示登陆成功
2.看完《IDA Pro权威指南》6-12章


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答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代码和调试应用程序。 此外,他应该参加相关的培训课程或工作坊,或者参考网上的程和指南。这些资源可以帮助他了解更多关于安卓逆向的技术和最佳实践。 最后,我鼓励他通过实践来巩固所知识。他可以选择一些开源的安卓应用程序进行逆向分析,并尝试修改应用程序的行为。通过实际操作,他将更好地理解逆向工程的流程和技巧。 需要注意的是,逆向工程需要遵守法律和道德准则,所以请确保他将技能用于合法和道德的目的,并尊重开发者的知识产权。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值