图/文  听鬼哥说故事

继续上文的内容----------------------------------

0x1:測试文件的编写

经过上一篇文章的基础学习,如今我们開始进行是用的部分。

既然我们能够在so中定义String字符串了,那么我们当然也能够定义int类型的数据了。那么。我们在此定义一个getCoin方法,返回值为int类型。

例如以下:

JNIEXPORT jint JNICALL Java_com_ggndktest1_JniGg_getCoin

(JNIEnv * env, jobject this)

{

int c=100;

return c;

}

同一时候编写java代码:

static public native int getCoin();

这两个方法的加入,能够继续在我们上一篇文章的基础上进行补充就可以,当然,为了熟练创建ndkproject,也能够又一次创建project的。

然后我们在shell下切换到project根文件夹:

这样成功生成so文件。

然后我们简单在xml定义下布局。简单的,直接在layout下

<TextView

android:id="@+id/coin"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="" />

加入一个TextView,设置id为coin。然后就能够在主类进行引用。

这样我们执行一下程序,查看一下效果。

0x2:任务明白

我们如今须要做一个任务。就是改动上文程序中的金币数量。

我们直接在project的bin文件夹下拿出来未签名的apk。分析时能够先无论签名。我们把lib/armeabi下的so文件拿出来,拖进IDA进行分析。

0x3:挂起IDA。进行分析

(如果,当前我们的状态是不知道程序源代码)

通过上文执行的截图,我们能够分析到。有keyword“Current Coin ”,我们在对反编译后的程序分析搜索,发现仅仅存在于so文件里,这样,我们就直接在IDA中搜索字符串去。

快捷键 Shift + F12

找到它的引用

这个没啥好解释的。载入字符串而已,没啥重要信息。发现不出来金币在哪里定义了,那么我们就看下引用。

发如今so文件里。并没有函数对此方法进行调用,那么我们就返回java中,看看java语句中是怎么对它进行的调用。其上下文都是什么东西。

经过查看printhello方法在JniGg.smali中是定义。在MainActivity是调用。我们具体看下代码:

贴上简单的说明,大家就能够看的清楚了。

我们在这里发现一个关键函数。getCoin方法。通过向上追寻,发现也是在so文件里的,那么如今我们再次回到IDA中:

在Options打开General。也就是第一个选项,设置例如以下:

然后我们能够看到:

这个是Thumb的指令。那么我们改动,也要使用Thumb。

一个字节来定义数值。我们仅仅能用最大ff了,即255,那么在16进制编辑器打开。跳转到c04的位置,改动为FF 20,然后放回程序,签名,执行。

好了,说明我们的改动成功。

0x4:反思一下

既然我们是自己写的源代码。那么我们就能够非常好的来对照思考了。这个过程留给同学们自己来思考,请花上10分钟时间,对照一下代码里面编写的方法,与在so中反汇编的代码的联系,增强一下熟悉的感觉。

另:

上面的apk,还有其它破解方法。即我们找到java层的调用了。那么直接改动java层调用方法的返回值,效果也一样,能够改动为无限大的数值。

相关附件地址:

http://pan.baidu.com/s/1i3wzetf

文章同一时候也交由www.pd521.com 首发,转载请注明出处。

转载于:https://www.cnblogs.com/zsychanpin/p/6791777.html

跟着鬼哥学so改动,二,进行篇相关推荐

  1. 跟着鬼哥学so改动,一,准备篇

    图/文 听鬼哥说故事 闲话少说,so的改动,重要性大家都知道,这里从头编写so文件,分析so文件,改动so文件,打算做一个系列的教程,当然,主要是看时间同意. android的sdk配置以及ndk环境 ...

  2. 跟着鬼哥学so改动,三,作业篇

    作业: 通过前面两篇文章的学习.请自行分析此应用,将当前用户类型改动为Gold Vip 用户. 有两种以上的方式能够改动的,有兴趣的同学请进行分析,写一下分析记录,可另起文章公布其过程与思路. 明天或 ...

  3. 跟着鬼哥学爬虫-10-python微信-5-加上了人工智能回复!

    跟着鬼哥学爬虫-10-python微信-5-加上了人工智能回复! 其实人工智能回复,现在网上有很多开源的机器学习,AI学习的框架,但是最重要的一点就是没有语料,也就是没有相互回答的数据内容. 所以这个 ...

  4. 跟着鬼哥学爬虫-5-更新妹子图库质量,提高微信群聊发图速度

    跟着鬼哥学爬虫-5-更新妹子图库质量,提高微信群聊发图速度 第三篇中的图库,群里大家都说质量稍微次一点,现在重新爬了个网站更新一下. 比上一篇的代码也优化了一点,对于自动保存的文件名,采用数字方式直接 ...

  5. 跟着鬼哥学so修改,一,准备篇

    图/文 听鬼哥说故事 闲话少说,so的修改,重要性大家都知道,这里从头编写so文件,分析so文件,修改so文件,打算做一个系列的教程,当然,主要是看时间允许. android的sdk配置以及ndk环境 ...

  6. 跟着鬼哥学PyQtPart.2

    <span style="font-family: Arial, Helvetica, sans-serif;">0x1:</span><span s ...

  7. 跟着鬼哥学爬虫-3-美女图片!!!

    这一节课,是群里很多娃在等待的课程. 通过前面两篇文章的学习,我们对BeautifulSoup4的简单使用有了了解. 了解了使用这个爬虫的核心是熟悉分析清楚html标签,一些css的简单知识,找准了标 ...

  8. 跟着鸟哥学linux【二】

    在输入完几个字符后忘了后面的命令是什么怎么办?就按tab键 (不知道为什么我的电脑和鸟哥的不一样他的Bash的B是大写) 想看某个目录下面的某个名称的文件怎么办?就按tab键 如果安装了bash-co ...

  9. 跟着鬼哥学PyQt Part.1

    中秋几天不出去玩了,留在家里把PyQt的相关资料学习一下,这里仅记录一下学习的相关记录,留下存档,便于以后翻阅.主要的目的是编写一个反编译和回编译的工具,稍后可以慢慢随着需求补充上一些搜索和修改的功能 ...

最新文章

  1. CuteEditor6.0使用配置心得体会(转)
  2. 在linux下vcd光盘提取,linux下抓取Vcd的视频文件[Linux安全]
  3. 计算机用三角函数时如何用弧度制,三角函数1任意角和弧度制.PPT
  4. wordpress 如何移除管理后台仪表盘小工具
  5. CREO图文教程:三维设计案例之一腔多模设计(定位参照零件导入模具模型)图文教程之详细攻略
  6. 如何设计网页模板才简洁美观?
  7. jemalloc 使用
  8. 移动端安全|Drozer针对Sieve渗透示范
  9. Bootstrap学习(九)collapse折叠窗口、carousel轮播效果、Affix侧边栏
  10. windows使用命令行修改用户密码
  11. 成都富华力鼎:抖音的商品标题怎么写
  12. Flutter 中神奇的 AbsorbPointer 组件
  13. 了解并掌握Halcon HDevelop 仿真程序语法
  14. UE4虚幻引擎UI界面动画制作!
  15. EtherNet IP以太网IO接口工业读写器|读卡器CK-FR12-E01性能与PLC组网攻略
  16. 突发!中国顶级程序员左耳朵耗子(陈皓)去世
  17. DiscuzX3.1数据库字典(含之前)
  18. 240. 搜索二维矩阵 II
  19. Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255]解决方法
  20. ZXing 源码分析(简阅)

热门文章

  1. 利用几何画板Sketchpad画球体的方法
  2. vue实现一个星级打分效果_vue 实现的评分小星星组件,包括半星
  3. 由英语presentation引发的关于PPT制作的思考
  4. basicdbobject java_java mongol数据库怎么连接
  5. ubuntu发送使用sendmail发送邮件
  6. USB基础知识1:USB各型插座插头封装引脚分布
  7. Android 5.0 设置语言的增加和删除
  8. codeforces 1311-c
  9. 【路径规划】基于模糊控制实现机器人路径规划matlab代码
  10. TMR称重传感器的应用