概述

  安卓应用程序的开发语言是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文件》

下载

链接: 百度网盘-链接不存在 密码: tvsn

备用链接:百度网盘 请输入提取码 密码: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) - HaiyuKing - 博客园 (cnblogs.com)

【反编译系列】四、反编译so文件(IDA_Pro)相关推荐

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

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

  2. 爬虫笔记41之反爬系列四:字体反爬、JS反爬

    一.字体反爬 1.什么是字体反爬? 开发者创作了一种字体(字体代号):网页中显示的就是这种字体代号. 字体反爬也叫CSS反爬,就是因为这个字体是隐藏在我们css文件当中的一个.ttf文件. ​2.如何 ...

  3. android 键编译,Android 音视频学习系列 (四) 一键编译 32/64 位 FFmpeg 4.2.2

    前言 2020/5/20 增加了硬件解码编译脚本 编译环境 Centos + NDK20b + FFmpeg4.2.2 + Android-21/16 2020/4/26 更新了编译 64 位脚本 编 ...

  4. html中::before 爬虫_反反爬虫系列(四)

    过完年,好了,咱们接着更新反反爬虫系列 至于之前有朋友表示出一下1688呀,x宝的反反爬虫 说实在的,阿里系的反爬虫很厉害,我自愧不能搞定. 比如x宝的登录,用了selenium + chrome的朋 ...

  5. python爬虫反爬 css 知乎 专栏_反反爬虫系列(四)

    过完年,好了,咱们接着更新反反爬虫系列 至于之前有朋友表示出一下1688呀,x宝的反反爬虫 说实在的,阿里系的反爬虫很厉害,我自愧不能搞定. 比如x宝的登录,用了selenium + chrome的朋 ...

  6. Python反反爬系列(四)----前端JS进行AES加密,Python解密

    将6位或者7位数字加密成22位数字字母大小写的加密方法. 采集数据时,遇到对Url进行加密的网站,大致加密情形如下 1.编译加密前的url 在列表页的url如下 2.加密后的Url 除了端口这块没了, ...

  7. 国际站反作弊系列之 — 反作弊介绍

    2013-08-15 阿里技术嘉年华 文/王涛 [导读]本文将国际站在反作弊方面的经验总结出来,希望给大家一些参考.目前面临的难点分为技术.非技术两个方面.技术方面是如何更好的将机器学习模型实践应用, ...

  8. 2013年最精致的企业网站设计欣赏【系列四】

    企业网站的设计首先要考虑的是将企业网站建设成为一个与众不同的网站,网站可以反应出建设构想,初步形态及网站推广计划,有自己独特的设计风格,能够彰显企业的特色.下面这个列表向大家展示一下最精致的企业网站设 ...

  9. so文件反编译为python代码_【反编译系列】四、反编译so文件(IDA_Pro)

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 安卓应用程序的开发语言是java,但是由于java层的代码很容易被反编译,而反编译c/c++程序的难度比较大,所以现在很多安卓应用程 ...

最新文章

  1. linux卸载rpm包
  2. 中国AI论文,爆了!
  3. centos mysql 新增用户
  4. 医院(jzoj 1611)
  5. 初中数学分几个模块_北京版初中数学:8大模块,59个必考易错知识点大集合,一定要注意!...
  6. ToString(C2)转人民币金额时的相关问题
  7. python regex应用
  8. Aptana Studio 3 如何汉化,实现简体中文版
  9. php 检验类,php实现的简单检验登陆类
  10. 淘品牌”已去,“播品牌”正红
  11. 如何利用Matlab完成数字1-9的语音识别
  12. (*(void(*)())0)();
  13. atitit.eclipse 新特性总结3.1--4.3
  14. cpu与计算机其他的通信,PC与CPU224 通讯
  15. 2021年最新微信漫画小程序全开源商业版免费下载
  16. 【翻译】Real-Time High-Resolution Background Matting
  17. photoshop怎么设计淘宝天猫海报amp;nb…
  18. Buct oj 1018
  19. 嵌入式硬件入门——Flash Memory(W25Q64+SPI协议)
  20. 计算机新建表格2,(Word表格的制作计算机基础2.doc

热门文章

  1. 关于xml实体攻击的讨论
  2. Java工程师面试中,有些问题要这么答
  3. 【数据分析】数据分析方法(五):假设检验分析方法
  4. 通过钉钉机器人发送群消息通知
  5. USRP b210自动增益控制
  6. GUC-11 线程池
  7. github push报错 Support for password authentication was removed on August 13, 2021. Please use a perso
  8. 移动硬盘只能识别一个分区,另一个变为RAW的解决办法
  9. 【Spring系列】 Spring注解方式实现IOC、DI及其Spring其他注解
  10. 手机应用推广必备发布渠道【安卓渠道汇】