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

概述

安卓应用程序的开发语言是java,但是由于java层的代码很容易被反编译,而反编译c/c++程序的难度比较大,所以现在很多安卓应用程序的核心部分都使用NDK进行开发。使用NDK开发能够编译c/c++程序,最终生成so文件。而so文件是一个二进制文件,我们是无法直接分析so文件的,所以这里需要用到一个反编译工具IDA Pro。IDA Pro能够对so文件进行反汇编,从而将二进制代码转化为汇编语言,利用IDA Pro神奇的F5功能还能将汇编语言反编译成c/c++程序。

下载

下载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代码

源代码如下:

退出(默认即可)

参考资料

so文件反编译为python代码_【反编译系列】四、反编译so文件(IDA_Pro)相关推荐

  1. 谁是小偷python代码_警察抓到四个人ABCD(小偷是谁 C++)

    转载这么多了 发个自己写的程序吧! 警察抓到四个人 ABCD-- 题目:警察抓到四个人 ABCD , A: 我不是小偷 B:c 是小偷 C: 小偷肯定是 D D:C 冤枉我 其中有 1 个人说假话,只 ...

  2. 简单几段python代码_如何用python跑一段鸿蒙最简单代码?

    首先,鸿蒙并不支持python,HarmonyOS代码开发支持多语言,包括Java.XML(Extensible Markup Language).C/C++ . JS(JavaScript).CSS ...

  3. 商业数据分析模型及其核心Python代码_持续更新

    商业数据分析模型_持续更新 一.AARRR模型 二.PEST模型 理论 医美行业应用案例 三.RFM模型 理论 Python实战_核心指标计算 四.SWOT模型 五.5W1H模型 六.流程拆解法 七. ...

  4. 角谷猜想python代码_查看“Python-2020-fall”的源代码

    因为以下原因,您没有权限编辑本页: 您所请求的操作仅限于该用户组的用户使用:用户 您可以查看与复制此页面的源代码.== Python程序设计课程主页(2020年秋季学期) == Teacher: [h ...

  5. python 代码_如何让Python代码加速运行?

    Python 是一种脚本语言,相比 C/C++ 这样的编译语言,在效率和性能方面存在一些不足.但是,有很多时候,Python 的效率并没有想象中的那么夸张.本文对一些 Python 代码加速运行的技巧 ...

  6. knn的python代码_《机器学习实战》之一:knn(python代码)

    数据 标称型和数值型 算法 归一化处理:防止数值较大的特征对距离产生较大影响 计算欧式距离:测试样本与训练集 排序:选取前k个距离,统计频数(出现次数)最多的类别 def classify0(inX, ...

  7. 掷骰子python代码_通过构建一个简单的掷骰子游戏去学习怎么用 Python 编程

    不论是经验丰富的老程序员,还是没有经验的新手,Python 都是一个非常好的编程语言. Image by : opensource.com Python 是一个非常流行的编程语言,它可以用于创建桌面应 ...

  8. 仅用几行Python代码就能帮小姐姐复制U盘文件,实用干货

    今天有个读大学的小姐姐找到我,问我有没有什么办法可以复制U盘文件,我很疑惑她复制U盘要干啥呢,仔细问了才知道小姐姐打算复制老师的U盘,看里面课件还有练习题,嗯,好学生呀,我就想直接分享出方法,大家一起 ...

  9. 初学者怎样看懂python代码_新手入门必看,最常用的Python代码片段

    对于编程开发人员来讲,Python语法一开始可能看起来很奇怪.如果我们看到Python使用其他编程语言(例如Java)完成常见的工作,那会不会很意思?我们常见的代码片段称为"代码惯用法&qu ...

最新文章

  1. WCF服务编程(4):《WCF服务编程》第3版中文版翻译结束,即将出版
  2. [C++11]shared_ptr共享智能指针的初始化与使用
  3. Java集合系列---ConcurrentHashMap源码解析
  4. pytorch之batch_size
  5. Spark源码分析之Master状态改变处理机制原理
  6. 腾讯社交广告转化率预估初探
  7. 团队开发之个人博客八(4月27)
  8. 通过pip下载python包缓慢的解决方法
  9. 参加美赛能给计算机保研er带来些什么?
  10. 计算机微软云同步怎样安装软件,云骑士Win10微软账户设置同步的方法
  11. javaweb JAVA JSP员工绩效考核管理系统(员工考核管理系统)员工考勤管理系统人事考勤
  12. php 微信 other,PHP——仿造微信OpenId
  13. 【The Economist】2018经济学人杂志经济学人双语版阅读分享资源
  14. vue使用Mars3D实现3d卫星轨道和3d地球图
  15. 路由器分类2【按功能级别分】
  16. OpenEmu MAME核心自动更新解决
  17. python——sys模块
  18. 自动化测试(定位元素的方式,浏览器操作)
  19. 取消管理员取得所有权_取消管理员取得所有权|右键管理员取得所有权|win10获取管理员权限...
  20. Android 极光推送 自定义通知铃声

热门文章

  1. 手机上的APP是如何与服务器通信的
  2. Git 原理安装和命令解析
  3. java入门-方法的使用
  4. 面对流氓软件,是逃避还是反击?(连载二、一场口水引发的战争)
  5. “另类”程序卸载有技巧
  6. 在Java Web项目中建src/main/java包
  7. 数据库-cmd下安装mysql服务
  8. 以下代码中的两个sizeof用法有问题吗?
  9. 云应用系列---云桌面
  10. mtk 按键中断驱动