概述

  安卓应用程序的开发语言是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)相关推荐

  1. 【反编译系列】四、反编译so文件(IDA_Pro)

    概述 安卓应用程序的开发语言是java,但是由于java层的代码很容易被反编译,而反编译c/c++程序的难度比较大,所以现在很多安卓应用程序的核心部分都使用NDK进行开发.使用NDK开发能够编译c/c ...

  2. 安卓反编译揭秘,伪加密APK文件如何被破坏

    2019独角兽企业重金招聘Python工程师标准>>> 1. 源码混淆 如上图,对Android APP的源码进行混淆后混淆器将代码中的所有变量.函数.类的名称加密为简短的英文字母代 ...

  3. 反编译“微软纸牌集合”资源文件

    @[TOC]反编译"微软纸牌集合"资源文件 成功反编译"微软纸牌集合"资源文件 一天时间,终于成功反编译了"微软纸牌集合(Microsoft Soli ...

  4. 反编译系列教程(上)

    MalwareBenchmark · 2016/03/14 15:25 Author: MalwareBenchmark 0x00 简介 <编译原理>课程在大学本科阶段就难道了很多计算机专 ...

  5. myeclipse重新编译java,反编译class文件并重新编译的方法

    在没有.java源码的情况下,如果想修改一个.class文件.可以通过以下步骤实现: 修改前的class文件: 一.反编译.class文件成.java文件. 1.可以使用Java Decompiler ...

  6. 反编译828D PLC的工程文件(*.ptp)

    反编译828D PLC的工程文件(*.ptp) "拉兹-胡夫"变换 PLC存储格式 CPU信息描述 打印设置 LAD/STL可编辑数据 符号表 监控数据表 SDB数据 工具命令 软 ...

  7. Android APK+Dex文件反编译及回编译工具

    本帖最后由 zhu891108 于 2012-8-3 11:00 编辑 大家好! 相信很多人玩智能手机,无论是塞班,安卓等等,不只是看重各种软件的功能,而更多的是看重系统的可定制性,可以自己动手DIY ...

  8. Android APK+Dex文件反编译及回编译工具 v.1.8.0 测试版

    可显示APK文件自身图标 _______________________________________________________________________________________ ...

  9. Android APK+Dex文件反编译及回编译工具(APKDB)v.1.9.2 正式版

    http://idoog.me/?p=1913 [Android APK+Dex文件反编译及回编译工具 (APKDB)v.1.9.2 正式版] <APK+Dex文件反编译及回编译工具> 简 ...

  10. [软件共享] 【强荐】Android APK+Dex文件反编译及回编译工具 v.1.7.2 正式版

    该工具非常强大,集成了反编译和回编译APK文件的工具apktool1.3/1.43/1.50版本,可以用于编译ICS4.0和JB4.1的APK文件, 里面还有ZIP刷机包和APK文件的签名工具, 所以 ...

最新文章

  1. Php 获取xml中的节点值
  2. java 动态数组的应用
  3. 360极速浏览器崩溃_360极速浏览器12.0新版上线 四大亮点引国内浏览器浪潮
  4. 第十三周项目一-分数类中的运算符重载
  5. mybatis.xml中sql编写规范
  6. 线程本地存储器——Windows核心编程学习手札之二十一
  7. 进一步解 apt-get 的几个命令
  8. 【转】CT中的“层“与“排“的区别
  9. 没有到主机的路由_网络基础知识:TCP协议之跟踪路由
  10. 敏捷外包工程系列之二:人员结构(敏捷外包工程,敏捷开发,产品负责人,客户价值)...
  11. makefile语法_Makefile的语法
  12. POJ3614 Sunscreen【贪心】
  13. 对象functionJavaScript: The Definitive Guide 权威指南,读书笔记(一)
  14. Java的值类型(基本类型)和引用类型
  15. C# 异步调用控件 跨线程调用控件 跨线程赋值
  16. 正则学习之一:在js中使用正则表达式
  17. MATLAB除法运算的精度问题及其解决方案
  18. java 定时器 的中断程序,AVR单片机教程——定时器中断
  19. timesten mysql_timesten 存储过程
  20. mac修改eclipse的内存配置

热门文章

  1. 蓝桥杯javaB组穿越雷区
  2. Qt工具栏中设置小部件间隔的方法
  3. 窄告:超越搜索引擎关键词模式的精准营销
  4. 网商基本法:网上贸易,用网商币
  5. 类似杨辉三角问题——第n杯水
  6. WASM进阶-猿人学第二十题
  7. Flutter开发(1)—— Dart vs Swift
  8. Vue+element 实现表格的动态增加行
  9. 转:hosts文件及修改hosts的作用
  10. 无需投资,小白在家也能闲鱼店创业赚钱,教你月入10000+丨国仁网络资讯