首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

so 文件解析详解

so 文件是啥?...so 文件是 elf 文件,elf 文件后缀名是.so,所以也被称之为so 文件, elf 文件是 linux 底下二进制文件,可以理解为 windows 的PE文件,在 Android 中可以比作dll...c 版本代价太大了; 2、在源码中,有个elf.h文件,这个文件定义了我们解析时需要用到的所有数据结构,并且给出了参考注释,是很好的参考资料。...2、e_type 字段:表示是可执行文件还是链接文件等,上的 so 文件就是分享文件,一般该字段为 3,详细请看下图。...(ps:简单写一原理,拉开写就太多了,这里感谢某大佬和我讨论的这个话题!!!) 本来因为这个 so 文件解析要写到明年去了,没想到看起来代码量大,但实际要用到的地方代码量很少。。。

3.3K41

什么是.so文件_so文件作用

so文件是Linux的程序函数库,即编译好的可以供其他程序使用的代码和数据 linux何谓.so文件: 用过windows的同学应该都知道 .dll文件吧, 这二者有什么共通之处呢,其实 .so文件就跟....dll文件差不多 一般来说.so文件就是常说的动态链接库, 都是C或C++编译出来的。...与Java比较就是:它通常是用的Class文件(字节码) Linux的.so文件时不能直接运行的,一般来讲,.so文件称为共享库 那么.so文件是怎么用的呢?...for example:  (1) 动态库的编译 这里有一个头文件:so_test.h,三个.c文件:test_a.c、test_b.c、test_c.c,我们将这几个文件编译成一个动态库:libtest.so...:表示要连接的库在当前目录中  -ltest:编译器查找动态连接库时有隐含的命名规则,即在给出的名字前面加上lib,后面加上.so来确定库的名称 命令:$ ldd test 注: 执行test,可以看到它是如何调用动态库中的函数的

3.4K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    so文件在线加固加密_so文件解密

    在这之前首先对elf文件结构有一定的了解,不一定完全了解,本菜鸟就不是完全懂,在文章开始之前有个知识点必须了解: 这两个节头要有所了解:.init:可执行指令,构成进程的初始化代码,发生在main函数调用之前...fini:进程终止指令,发生在main函数调用之后。以上这么分析感觉有点像c++的构造函数和析构函数,的确构造和析构是由此实现的。...} _error: fclose(fp); return ret; } 在这里重点解释这个解密函数: 首先看到的是getLibAddr()这个函数:在介绍这个函数之前首先了解一个内存映射问题: 和Linux...文件头的修改简单的说明一: 修改so文件为什么不会报错的原因进行简单的说明: 我们在这考虑一个问题就是Section与Segment的区别,由于OS在映射ELF到内存时,每一个段会占用是页的整数倍,这样会产生浪费...3.对于文件替换后没有什么问题,运行结果为: 总结: 该篇是在有源码的基础上进行对特定的section进行加密,但是试想一,有多少情况才能有源码,因此局限性比较大, 下一篇是基于二进制级别的特定函数的加密

    3.1K40

    so文件解密_Android是什么文件

    前言 一道so文件动态加解密的CrackMe,运行时解密要执行的函数,且在执行后立马加密CrackMe:dex文件加的数字壳,so文件无壳,因为反调试,所以so文件采用全静态分析 分析环境:脱壳工具:FART...分析过程 2.1 脱壳 拿到FART定制ROM跑,得到想要的dex文件,数字壳抹去了前八个字节的dex文件魔数,需要填充一,才能用GDA进行解析 2.2 定位校验函数 从上图可知,校验函数为...libnative-lib.so文件中的test函数 2.3 分析so文件 首先分析so文件提前加载的三处函数(init、init_array、JNI_OnLoad) 用readelf -d查看是否有init...函数的作用是解密字符串 接着分析JNI_OnLoad函数,导入jni.h头文件,用于解析JNI函数 接着分析ooxx函数 sub_8930函数的内容如下: 其中sub_8A88函数的作用是获取so...文件的加载基址,如下: 获取so文件的加载基址的方法是,通过读取CrackMe进程的内存映射文件maps,然后通过搜索切割字符串得到的,maps文件的内容如下: sub_8930函数接着调用了sub

    1.6K40

    so库你应该注意的事

    在这公司那么久也没有弄过ndk开发,作为一个做刷卡头和蓝牙pos的开发程序员这点还是很蛋疼,然后现在重新做一个新的项目,因为以前的so库是放在armeabi文件夹下面的,所以不管是4.4以下还是...下面就来扯一cpu 早期的Android系统几乎只支持ARMv5的CPU架构,你知道现在它支持多少种吗?7种!...“64位手机”就不同了:它包含着64位处理器、64位标准系统、64位虚拟机、以及64位程序,这才是真正意义上的64位手机!...谷歌官方曾说,很早前就支持64位了,这话不假,从Android4.0到Android4.4,系统都支持64位的硬件,但是这仅仅表示底层驱动支持64位,能运行在64位的硬件之上,仅此而已。...我有几个搞开发的朋友,都明确表示永远不涉足64位程序开发,这又是为什么呢? ARMv8是一套不错的指令集,它既支持未来的64位程序,也向下兼容现有32位程序。

    1.2K20

    WindowsPython调用so文件

    在本文中,我们将详细阐述Windows使用Python调用so文件的方法和技巧。 一、准备工作 在开始之前,我们需要准备以下几个方面: 1、确保你已经安装了Python,并且已经配置好环境变量。...2、获取所需的so文件,可以是自己编写的,也可以是第三方提供的。 3、安装所需的Python第三方库,以便于调用so文件。...二、调用so文件的方法 在Windows,我们可以使用ctypes库来调用so文件。...四、处理返回值 当调用so文件中的函数后,我们可能需要处理函数的返回值。...六、总结 通过本文的介绍,我们了解了如何在Windows使用Python调用so文件。我们需要先准备好环境,并安装所需的Python第三方库。

    2.4K30

    LiteAVSDK商业版6.6+,集成动态加载so

    一、简介 本篇文章主要介绍集成LiteAVSDK商业版、6.6以上的版本,端采用动态加载so的方式时的写法。 端非商业版aar集成、jar集成,可以参考官方集成文档 。...我们直接从复制动效so和P图资源到内部存储开始。 示例demo需要把armeabi-v7aso文件、assets-dynamic里面的资源文件,都复制到手机sd卡的一个文件夹里面。...以demo为操作示例,如下图ListView,操作步骤: 点击copyFolder条目,复制粘贴so、assets-dynamic,从sd卡复制到工程包名下的文件夹。...点击setLibraryPath条目,调用sdk接口动态加载so。 点击setLicence条目,设置动效Licence。这一步会下载校验licence,请保持网络通畅、给读写权限。...PituDemo直接引入集成视频云终端团队封装的module,module里面的直播、短视频等功能点、api写法,可以参考官方文档 建议把高级美颜都体验一遍,尤其是人脸识别的大眼、瘦脸、头部挂件等特效

    3.4K96

    鸿蒙不是Linux也不是

    1.1 鸿蒙不是Linux,也不是 很多人会混淆鸿蒙跟Linux的关系。 先举个例子,大家很熟悉的Windows里面含有内核,也含有UI系统,含有桌面程序,普通人可以直接使用Windows。...但是Linux仅仅是一个内核(它提供进程管理、文件系统等概念),必须在Linux之上安装各种APP,普通人才可以使用。...基于Linux内核制作出来的完整系统有Ubuntu、debian等等,普通人可以直接使用这些完整系统。 所以鸿蒙要对标的是Windows、、IOS这类完整系统,而Linux只是鸿蒙支持的内核之一。...鸿蒙支持多种内核,有Linux,也有Liteos-a。 鸿蒙的体系很庞大,看下图,内核只是其中之一: ?...比如倒车摄像头,没人能忍受2秒钟后才看见图像:即使你能忍受,也很难把Linux优化到2秒内启动。

    4.6K31

    第四夜 概念漫游(

    第三夜 概念漫游(上)中,我介绍了最基本的功能单元和Intent的连接方式。在这个骨架之上,我们可以进一步增加一些与开发密切相关的重要概念。...每一种视图元素在中表示为一个View类,比如Button类,TextView类和EditText类。的视图元素很多样,就连图片和网页也都有对应的视图元素。...Fragment的运行方式与Activity类似,也是在状态转换中调用onStart()等方法。 Resource 在开发中,有可能需要一些静态资源,比如图片、字符串、XML文件等等。...这些资源被存储在项目res/下不同的文件夹中。 ? 不同资源分类存放。我们上面提到用XML来定义布局,它们就保存在layout。...drawable*的文件夹中包含不同清晰度的图片,而字符串存放在values的strings.xml中。在项目中,我们可以用ID或文件名,来引用对应的资源。

    1K100
    领券