【反编译系列】反编译so文件(IDA_Pro)
概述
安卓应用程序的开发语言是java,但是由于java层的代码很容易被反编译,而反编译c/c++程序的难度比较大,所以现在很多安卓应用程序的核心部分都使用NDK进行开发。使用NDK开发能够编译c/c++程序,最终生成so文件。而so文件是一个二进制文件,我们是无法直接分析so文件的,所以这里需要用到一个反编译工具IDA Pro。IDA Pro能够对so文件进行反汇编,从而将二进制代码转化为汇编语言,利用IDA Pro神奇的F5功能还能将汇编语言反编译成c/c++程序。
--摘自《安卓逆向学习笔记 (3)- 使用IDA Pro静态分析so文件》
下载
链接: https://pan.baidu.com/s/1c3R6iZY 密码: tvsn
备用链接:https://pan.baidu.com/s/1MvisS6uzwnR9hiAcA2Fz8g 密码:kljo
下载IDA_Pro_v7.0_Portable.zip即可。
安装
直接解压缩即可。
注意:绿色版解压缩路径不要含有中文或者路径长度不能超过72字符。(python模块自身的bug)
使用
双击ida64.exe,打开软件IDA Pro
本来按照我的理解,如果想要反编译的so文件是在arm64-v8a目录下,则只能打开ida64.exe文件;如果想要反编译的so文件是在armeabi目录下,则只能打开ida.exe文件。但是我这边的测试结果时:
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 绿色版
【反编译系列】反编译so文件(IDA_Pro)相关推荐
- 【反编译系列】四、反编译so文件(IDA_Pro)
概述 安卓应用程序的开发语言是java,但是由于java层的代码很容易被反编译,而反编译c/c++程序的难度比较大,所以现在很多安卓应用程序的核心部分都使用NDK进行开发.使用NDK开发能够编译c/c ...
- 安卓反编译揭秘,伪加密APK文件如何被破坏
2019独角兽企业重金招聘Python工程师标准>>> 1. 源码混淆 如上图,对Android APP的源码进行混淆后混淆器将代码中的所有变量.函数.类的名称加密为简短的英文字母代 ...
- 反编译“微软纸牌集合”资源文件
@[TOC]反编译"微软纸牌集合"资源文件 成功反编译"微软纸牌集合"资源文件 一天时间,终于成功反编译了"微软纸牌集合(Microsoft Soli ...
- 反编译系列教程(上)
MalwareBenchmark · 2016/03/14 15:25 Author: MalwareBenchmark 0x00 简介 <编译原理>课程在大学本科阶段就难道了很多计算机专 ...
- myeclipse重新编译java,反编译class文件并重新编译的方法
在没有.java源码的情况下,如果想修改一个.class文件.可以通过以下步骤实现: 修改前的class文件: 一.反编译.class文件成.java文件. 1.可以使用Java Decompiler ...
- 反编译828D PLC的工程文件(*.ptp)
反编译828D PLC的工程文件(*.ptp) "拉兹-胡夫"变换 PLC存储格式 CPU信息描述 打印设置 LAD/STL可编辑数据 符号表 监控数据表 SDB数据 工具命令 软 ...
- Android APK+Dex文件反编译及回编译工具
本帖最后由 zhu891108 于 2012-8-3 11:00 编辑 大家好! 相信很多人玩智能手机,无论是塞班,安卓等等,不只是看重各种软件的功能,而更多的是看重系统的可定制性,可以自己动手DIY ...
- Android APK+Dex文件反编译及回编译工具 v.1.8.0 测试版
可显示APK文件自身图标 _______________________________________________________________________________________ ...
- Android APK+Dex文件反编译及回编译工具(APKDB)v.1.9.2 正式版
http://idoog.me/?p=1913 [Android APK+Dex文件反编译及回编译工具 (APKDB)v.1.9.2 正式版] <APK+Dex文件反编译及回编译工具> 简 ...
- [软件共享] 【强荐】Android APK+Dex文件反编译及回编译工具 v.1.7.2 正式版
该工具非常强大,集成了反编译和回编译APK文件的工具apktool1.3/1.43/1.50版本,可以用于编译ICS4.0和JB4.1的APK文件, 里面还有ZIP刷机包和APK文件的签名工具, 所以 ...
最新文章
- Php 获取xml中的节点值
- java 动态数组的应用
- 360极速浏览器崩溃_360极速浏览器12.0新版上线 四大亮点引国内浏览器浪潮
- 第十三周项目一-分数类中的运算符重载
- mybatis.xml中sql编写规范
- 线程本地存储器——Windows核心编程学习手札之二十一
- 进一步解 apt-get 的几个命令
- 【转】CT中的“层“与“排“的区别
- 没有到主机的路由_网络基础知识:TCP协议之跟踪路由
- 敏捷外包工程系列之二:人员结构(敏捷外包工程,敏捷开发,产品负责人,客户价值)...
- makefile语法_Makefile的语法
- POJ3614 Sunscreen【贪心】
- 对象functionJavaScript: The Definitive Guide 权威指南,读书笔记(一)
- Java的值类型(基本类型)和引用类型
- C# 异步调用控件 跨线程调用控件 跨线程赋值
- 正则学习之一:在js中使用正则表达式
- MATLAB除法运算的精度问题及其解决方案
- java 定时器 的中断程序,AVR单片机教程——定时器中断
- timesten mysql_timesten 存储过程
- mac修改eclipse的内存配置