【安卓逆向】修改so库中字符串流程实现

需要学习安卓逆向的可以加群:692903341

1.编写目的
记录破解so库并进行修改其中的字符串信息的相关流程.

2.使用工具
逆向工具: IDA 6.8 , Jadx , AndroidKiller

运行环境:Nexus 5 (Android 4.4)

3.原字符串信息
在这里插入图片描述
4. 实现流程
4.1 使用adb命令定位字符串位置
1.手机打开字符串所在界面

    2.手机连接电脑

    3.在cmd中输入”adb shell dumpsys activity top”查看当前顶层界面所在app的工程位置

结果:

目标所在位置 : ”com.glj.dynamicregistration/.MainActivity”
在这里插入图片描述
4.2 使用Jadx对APP进行逆向分析
Jadx工具分析完后打开包名”com.glj.dynamicregistration”下的”MainActivity”
在这里插入图片描述
4.3 定位字符串显示位置

 1.在onCreate中只有一个TextView从getText()函数中获取字符串,再看getText()函数是经过native修饰的.那么可以肯定这是一个jni函数.再看Activity中确实加载了一个”hellojni”的so库,那么我们基本上定义这是从so库中获取的字符内容.

在这里插入图片描述
4.4 获取so库
将app的apk格式改为zip压缩包格式后打开,在lib目录下进行扣取
在这里插入图片描述
4.5 IDA加载so库静态分析
在这里插入图片描述
4.6 使用IDA的查看so库中的字符串信息

   1.Strings window打开流程:View->open subviews->Strings

   2.打开后发现所需要的字符串.

   3.亦可使用Ctrl+F进行关键字搜索

在这里插入图片描述
在这里插入图片描述
4.7 双击搜索结果的字符串,跳转到所在代码的位置
在这里插入图片描述
4.8 在IDA中定位该数据所在hei view中的位置

      1.选中.rodata:00002988中的字符串信息

      2.选择标题栏View-> open subviews->Hex dump进入Hex View窗口

      3.下图蓝色部分就是目标字符串的字节码数据

在这里插入图片描述
4.9 字符串信息修改

  改前中文字符串:

 你好,我是JNI的动态注册方式!

 对应UTF-8编码:

                        E4 BD A0 E5 A5 BD 2C E6 88 91 E6 98 AF 4A 4E 49

                        E7 9A 84 E5 8A A8 E6 80 81 E6 B3 A8 E5 86 8C E6

                        96 B9 E5 BC 8F 21 00



 改后中文字符串:

 嘿嘿,已经被修改了!

 对应UTF-8编码:

                        E5 98 BF E5 98 BF 2C E5 B7 B2 E7 BB 8F E8 A2 AB

                        E4 BF AE E6 94 B9 E4 BA 86 21 00 00 00 00 00 00

                        00 00 00 00 00 00 00



 将光标放到目标数据的第一个数据出右击选择Edit进行数据修改

在这里插入图片描述
经过修改后的数据然后保存
在这里插入图片描述
在这里插入图片描述
4.10 数据修改完成后重新生成so库

扫描二维码关注公众号,回复: 11545881 查看本文章
               1.在工具栏中选择Edit->Plugins-> modifyfile进行生成新的so库

               2.在弹出的更改文件弹窗中选择确定更改

               3.保存文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.11 使用新的so库进行回编APP操作

               1.打开AndroidKiller工具逆向加载APP

               2.将新的so库替换旧的so库

3.进行回编
在这里插入图片描述
在这里插入图片描述
5.结果显示
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/YJJYXM/article/details/102875850