本帖最后由 听鬼哥说故事 于 10:29 编辑
0x1:测试文件的编写经过上一篇文章哥的基础学习现在我们开始进行是用的部分。既然我们可以在so中定义String字符串了那么我们当然也可以定义int类型的数据了,那么我们在此定义一个getCoin方法,返回值为int类型如下:JNIEXPORT
同时编写java代码: 这两个方法的添加,可以继续在我们上一篇文章哥的基础上进行补充即可当然,为了熟练创建ndk工程也可以重新创建工程的。然后我们在shell下切换到工程根目录:
这样成功生成so文件
这样我们运行一下程序,查看一下效果
0x2:任务明确 我们现在需要做一个任务,就是修改上文程序中的金币数量
我们直接在工程的bin目录下拿出来未签名的apk,分析时可以先不管签名我们把lib/armeabi下的so文件拿出来,拖进IDA进行分析
0x3:挂起IDA,进行分析 (假设当前我们的状态是不知道程序源码)
通过上文运行的截图,我们可以分析到有关键字“Current Coin
”,我们在对反编译后的程序分析搜索,发现只存在于so文件中这样,我们就直接在IDA中搜索字符串去
这个没啥好解释的,加载字符串而已没啥重要信息,发现不出来金币在哪里定义叻那么我们就看下引用。
发现在so文件中并没有函数对此方法进行调用,那么我们就返回java中看看java语句中是怎么对它进行的调用,其上丅文都是什么东西
|