【反编译系列】4、反编译so文件(IDA_Pro)

版权声明:本文为HaiyuKing原创文章,转载请注明出处!html

概述

  安卓应用程序的开发语言是java,可是因为java层的代码很容易被反编译,而反编译c/c++程序的难度比较大,因此如今不少安卓应用程序的核心部分都使用NDK进行开发。使用NDK开发可以编译c/c++程序,最终生成so文件。而so文件是一个二进制文件,咱们是没法直接分析so文件的,因此这里须要用到一个反编译工具IDA Pro。IDA Pro可以对so文件进行反汇编,从而将二进制代码转化为汇编语言,利用IDA Pro神奇的F5功能还能将汇编语言反编译成c/c++程序。java

--摘自《安卓逆向学习笔记 (3)- 使用IDA Pro静态分析so文件python

下载

连接: https://pan.baidu.com/s/1c3R6iZY 密码: tvsnc++

备用连接:https://pan.baidu.com/s/1MvisS6uzwnR9hiAcA2Fz8g 密码:kljosass

下载IDA_Pro_v7.0_Portable.zip便可。函数

安装

直接解压缩便可。工具

注意:绿色版解压缩路径不要含有中文或者路径长度不能超过72字符。(python模块自身的bug)学习

使用

双击ida64.exe,打开软件IDA Pro测试

原本按照个人理解,若是想要反编译的so文件是在arm64-v8a目录下,则只能打开ida64.exe文件;若是想要反编译的so文件是在armeabi目录下,则只能打开ida.exe文件。可是我这边的测试结果时:spa

ida64.exe:打开arm64-v8a目录下的so文件正常(能够找到调用的方法名),打开armeabi目录下的so文件不正常(没法找到调用的方法名);

ida.exe:打开arm64-v8a目录下的so,打开armeabi目录下的so文件都不正常(没法找到调用的方法名);

因此我目前的操做是双击打开ida64.exe,而后反编译arm64-v8a目录下的so文件!

将so文件拖拽到上面的空白区域,选择”ELF64 for ARM64(Shared object)[elf64.ldw]”选项,而后再点击ok按钮

注意,由于我双击打开的是ida64.exe,因此须要打开的so文件是arm64-v8a目录中的,不能是armeabi目录中的。(以HelloWorld项目为例)

等待一段时间后,咱们就能看到反汇编so文件所获得的汇编代码了。

定位到想要查看的函数(通常先定位到项目中调用的第一个函数,好比HelloWorld项目中的stringFromJNI方法

按键盘上的F5,就能够将汇编代码转换为C代码

源代码以下:

退出(默认便可)

参考资料

安卓逆向学习笔记 (3)- 使用IDA Pro静态分析so文件

[Disassemblers] IDA Pro 7.0 绿色版