一: 分析“getText”函数

1.首先任意打开一个函数,以getText函数为例,如下图所示。

IDA静态分析

2.双击打开该函数,开始分析汇编指令,箭头所指位置是指令的开始处,如下图所示。

IDA静态分析

.text:00001148 STMFD SP!,{R3-R5,LR}

压栈操作,把R3-R5,LR分别压到栈顶。

.text:0000114C MOV R5, R1

把R1赋值给R5。

.text:00001150 LDR R3, [R0]

将R0的地址给R3。

.text:00001154 MOV R4, R0

将R0给R4。

.text:00001164 BLX R3

跳转带链接状态切换到R3。

.text:0000117C ADD R3, PC, R3

将PC和R3相加给R3。

IDA静态分析

已经知道他的操作流程,那么它的这些操作为了实现什么逻辑呢?带着这个疑问继续分析。

二:对比分析源码、伪代码、汇编指令三者对应关系

1.如下图所示为源代码的逻辑,它在获取字段的值。

IDA静态分析

2.在反汇编窗口中找到getText函数,按“F5”,将汇编指令切换为伪代码,通过查看IDA里的伪代码发现:默认传入的参数类型需要修改才能查看,如下图所示。

IDA静态分析

3.选中getText函数的参数,右键N对名称进行修改。第一个参数就是刚刚看到的env,直接改为env;右键Y对类型的修改,将类型修改为JNIEnv*。这样就识别完成了,效果如下图所示。

IDA静态分析

分析此处的逻辑:

第一个跳转是:Findclass

第二个跳转是:GetFindID

第三个跳转是:GetObjectFieId

第四个跳转是:GetStringUTFChars

第五个是返回一个:NewStringUTF

接着修改参数,如下图所示。

IDA静态分析

4.参数修改完成后,右键选择copy将伪代码拷贝到反汇编窗口,也就是getText函数的汇编指令,如下图所示。

IDA静态分析

这就是最终的效果,分析最终效果,便可以了解这些指令的作用,如下图所示。

IDA静态分析

小结

本次主要分享了静态分析的流程:

1、分析函数,查看ARM汇编指令。

2、对比分析源码、伪代码、汇编指令三者对应关系。

3、查看跳转,理清逻辑。

4、总结逻辑,实现过程。

更多相关文章

  1. JSP第一篇【JSP介绍、工作原理、生命周期、语法、指令、行为】
  2. 队列(静态方式)
  3. 小程序静态资源如何设置防盗链?
  4. 静态h5页面没有后台直接访问本地json文件
  5. 在Rails 3中通过.ajax渲染静态部分
  6. 用HTML+CSS编写一个计科院网站首页的静态网页
  7. ThinkPHP生成静态页buildHtml方法
  8. 问一个高深的问题,静态html页面如何接收来自服务器的参数?
  9. Canvas绘制心电图(静态)

随机推荐

  1. Android版本更新
  2. [Android5.1]开机动画显示工作流程分析
  3. 创建Android第一个工程
  4. 疯狂Android讲义下载
  5. Android快速开源框架--afinal
  6. android ------ AAPT2 error: check logs
  7. Android应用程序与SurfaceFlinger服务的
  8. Android 5将在第二季度发布
  9. Android TTS 实战一:认识 TTS
  10. 你的Android,我的Android