上一篇 《教我兄弟学Android逆向06 用AndroidStudio编写第一个so》我带你用AS编写了第一个so 现在回顾一下 首先我创建了一个myJNI类 里面包含一个Native的sayHello方法 这个方法在native层返回一句话 hello 52pojie! 然后我在java层通过Log函数调用并输入了sayHello方法完成了第一个so的编写。
课程写到这我已经不再是面向威一个人了 有很多同学私信我问威学的怎么样了 找到工作了吗 其实威已经找到了逆向的工作 待遇还不错 今年七月份回学校拿毕业证 现在正在忙着写毕业论文等学校一堆的事情 当然他学的并不止这些东西。 虽然威找到了工作 但是应很多同学的要求课程还会继续更新 后面我还会陆续放出来一些课程。
希望同学们好好学习 认真学习的人都能找到满意的工作。
教我兄弟学逆向系列课程中的每一课我认为均是一个框架 这是一个抛砖引玉的过程 课程中我不会把东西讲的这么细 我只会教给大家一种破解的思路和实现方式 具体原理请自行百度。
要么学!要么不学!学和不学之间没有中间值 不学就放弃,学就要去认真的学! --致选择
本节课给你带来的是so的破解 本节课用到的例子是上节课我带你做的Demo 题目是更改Native方法sayHello的返回值 让它原来返回的hello 52pojie!变成hello world!
那么开始今天的课程。
本节课所有到的工具和Demo
IDA
链接:https://pan.baidu.com/s/15uCX8o6tTSSelgG_RN7kBQ 密码:ftie
第六课Demo
链接:https://pan.baidu.com/s/1vKC1SevvHfeI7f0d2c6IqQ 密码:u1an
一 解包
1.使用apktool解包app-debug.apk
2.关于apktool的使用请看番外
https://www.52pojie.cn/thread-732007-1-1.html
二 打开so文件
1.进入解包后的lib目录找到libJniTest.so并用IDA打开
<ignore_js_op>
2.点两次OK进入此页面 点新建
<ignore_js_op>
3.找到so并打开它 因为我的机型是支持arm的所以我这里打开的是armeabi文件夹下的so 如果机型是x86模式的那么这里要打开x86模式下的libJniTest.so
armeabiv-v7a: 第7代及以上的 ARM 处理器。2011年15月以后的生产的大部分Android设备都使用它.
arm64-v8a: 第8代、64位ARM处理器,很少设备,三星 Galaxy S6是其中之一。
armeabi: 第5代、第6代的ARM处理器,早期的手机用的比较多。
x86: 平板、模拟器用得比较多。
x86_64: 64位的平板。
<ignore_js_op>
4.点击打开后会有几个弹框 全部点OK会进入到这样一个界面 说明so已经打开
<ignore_js_op>
三 找到字符串hello 52pojie!并修改为hello world!
1.按住键盘组合键 shift + f12 打开字符串窗口 这个窗口将会列举出so中所包含的所有字符串 因为上节课我们只编写了一个字符串 所以这里只有一个hello 52pojie! 如果打开的是x86的so这里还会有一些.so 但是字符串只有这一个
<ignore_js_op>
2.双击进去将会找到hello 52pojie!的内存地址
<ignore_js_op>
3.鼠标点在hello 52pojie!字符串上,打开 Hex dump窗口,修改hello 52pojie!对应内存地址的内容
关于字符对应的16进制可以在百度百科搜索ascii码表 找到字符所对应的16进制
<ignore_js_op>
<ignore_js_op>
4.因为我要把hello 52pojie!修改成hello world! 是不是只要找到每个字符所对应的hex修改就好了
这里我看到 hello 52pojie!对应的hex是:68 65 6C 6C 6F 20 35 32 70 6F 6A 69 65 21
我在ascii码表上找到world所对应的十六进制是:77 6F 72 6C 64
所以hello world! 对应的十六进制是:68 65 6C 6C 6F 20 77 6F 72 6C 64 21
5.找到所要修改的字符所对应的16进制 右键Edit
<ignore_js_op>
6.由于52pojie!比world!多两个字符 这里把多出来的置为00 修改好后 右键Apply changes应用
<ignore_js_op>
7.保存修改好后so
<ignore_js_op>
<ignore_js_op>
8.点击确定后 把修改后的so储存到一个位置
<ignore_js_op>
四 替换so并重打包
1.关闭ida 并把armeabi和armeabi-v7a下的libJniTest.so替换成修改后的so 注意这里两个文件夹下的so都要替换 同理 如果是x86模式的 这里要替换x86文件夹的so
<ignore_js_op>
2 替换so后把app-debug文件夹用apktool命令重打包成new.apk 并进行签名 生成签名后的new_sign.apk
<ignore_js_op>
<ignore_js_op>
3.将new_sign.apk安装到手机 运行 查看Log成功显示hello world! so破解成功
<ignore_js_op>
五.总结
本节课首先下载了ida这款逆向神器 然后通过ida修改so的16进制 成功的将hello 52pojie!修改成了hello world! 完成了对第六课的破解 。
课后作业
1.完成第六课的课后作业并破解它
2.看完《IDA Pro权威指南》前六章
书籍链接:https://pan.baidu.com/s/1zHkHbeaGZ6wfeRR20Gav-A 密码:3vnu
下一篇:《教我兄弟学Android逆向08 IDA爆破签名验证》