显然一个是静态链接库(.a),一个是动态链接库(.so)联系和区别相同点:链接库本身不是最终的执行程序文件,而是为其他执行文件提供服务的程序。如果把最终的执行程序文件比作一个汽车生产厂家,那么链接库就可以理解为零部件提供商 。不同点:静态链接库在链接阶段就直接打包到最终的执行程序文件中,而动态链接库则是在程序运行时去链接库里面找需要的东西。优缺点:显然,静态链接的库文件会导致最终目标程序文件体积膨
转载
2023-07-09 21:13:26
256阅读
gen 在import一个so库里的类或函数时,有时发现so文件分明就在那路径下,可是总是报错ModuleNotFoundError: No module named ***,这种错误的可能原因有:1.首先要确保so所在的路径已经包含在sys.path里了,如果so所在目录已经是在python默认的系统路径里,例如/usr/lib/python3.6/dist
转载
2023-06-06 11:14:11
2108阅读
so库是linux下的动态链接库,相当于windows下的dll。后缀一般是".so"记录下整个流程。linux下编译代码都需要一个make文件来向编译器解释说明一些内容。所以需要些两个文件,一个是Android.mk(make文件),一个是c/c++源码文件。源码文件的方法定义名称是受ndk约束的,名称是固定格式的。很长很难记,所以用到一个头文件(就是方法名)生成工具javah命令。这个命令参考
linux下何谓.so文件:1. 用过windows的同学应该都知道 .dll文件吧, 这二者有什么共通之处呢,其实 .so文件就跟.dll文件差不多.//2.一般来说.so文件就是常说的动态链接库, 都是C或C++编译出来的。与Java比较就是:它通常是用的Class文件(字节码).//3.Linux下的.so文件时不能直接运行的,一般来讲,.so文件称为共享库.//4.那么.so文件是怎么用的
转载
精选
2013-11-17 16:10:38
668阅读
本周在开发一个python业务系统时,涉及到解密过程,解密是通过调用c的so文件实现的。开发过程中,踩进了一个不大不小的坑,差点腿都没拔出来,仅以此谨记不再踩ctypes坑。1.首先我们要有一个so库,有一个待调用的方法,c语言部分实现如下:int c_dec(unsigned char* c,
unsigned char* m,
unsigned long long b,
const unsig
转载
2023-07-25 17:29:50
254阅读
应用程序二进制接口(Application Binary Interface)定义了二进制文件(尤其是.so文件)如何运行在相应的系统平台上,从使用的指令集,内存对齐到可用的系统函数库。在Android 系统上,每一个CPU架构对应一个ABI:armeabi,armeabi-v7a,x86,mips,arm64- v8a,mips64,x86_64。 so文件和jar包存放到工程的libs目
转载
2023-07-02 17:07:20
292阅读
因为最近业务上涉及安全的问题然后有一些加密解密的方法和key的存储问题本来想存储到手机里面,但是网上说一般敏感信息不要存储到手机Sdcard上而且我这个如果从网络建立通信获取的话,又太耗时,所以黑客论坛上就有人建议把加密解密的关键信息写在so里,然后从so里面调用要想破解so就涉及到汇编语言的,这个没功力的话一般做不成的 O(∩_∩)O 作者:Andye大体流程
问题描述当需要引用 so 库的时候,正常情况下我们只需要将不同版本的 so 文件分别放置。但是这样就会遇到两个问题:如果每个架构的 so 库都放进去,会大大增加 apk 包的大小如果偏偏没有 arm-v7a 的版本呢?是删除 armeabi-v7a 目录只保留 armeabi ?还是说两个目录下 so 文件数不同也没有关系?首先了解一下 so 文件的类型so 文件的类型在 Android 系统中
转载
2023-11-01 10:59:41
0阅读
ldd命令linux 下可以使用ldd查看可执行文件所需要的动态链接库(*.so)。 注:下文用so代替动态链接库文件。// 举个例子
~$ ldd /bin/ls
linux-vdso.so.1 => (0x00007ffe06386000)
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00
转载
2023-09-01 19:58:47
1141阅读
对于linux和Android开发者,有时可能需要查看或者修改.so文件,下面来讲述如何查看或者修改so文件。1、本文使用的工具IDA Pro: https://www.52pojie.cn/thread-675251-1-1.html010 Editor:http://www.pc6.com/softview/SoftView_55129.html2、反编译.so文件 本文使用的反编译软件是I
c_program.c文件内容#include <stdio.h>
void display(char* msg) {
printf("%s\n", msg);
}
int add(int a, int b) {
return a + b;
}py_call_so.py# -*- coding: utf-8 -*-
"""在python中调用so文件"""
from
转载
2023-06-06 16:00:30
412阅读
linux下文件的类型是不依赖于其后缀名的,但一般来讲:.o,是目标文件,相当于windows中的.obj文件 .so 为共享库,是shared object,用于动态连接的,和dll差不多 .a为静态库,是好多个.o合在一起,用于静态连接 .la为libtool自动生成的一些共享库, vi编辑查看,主要记录了一些配置信息。可以用如下命令查看*.la文件的格式 $file *.la
一、前奏 1.demo.apk、IDA6.6以上、adb等工具,具体可参考工具篇 demo.apk的主逻辑代码如下: 2.什么是so文件? so文件是unix的动态连接库,我们知道Android系统是类linux,所以这里也沿用其动态链接库so,一般用c语言实现,是二进制文件,作用相当于windows下的.dll文件,在Android中调用动态库文件(*.so)都是通过jni的方式。 And
转载
2023-11-01 09:39:59
141阅读
1.so文件是什么?
2.怎么生成以及使用一个so动态库文件?
3.地址空间,以及线程安全.
4.库的初始化,解析:
5.使用我们自己库里的函数替换系统函数:
//------------------ separator ------------------//
转载
2023-07-24 21:55:20
245阅读
文章目录ELF文件格式查看工具so文件加载时的函数执行顺序so文件动态调试so文件调试技巧使用ida动态调试的那些坑进程显示不全illegal segment bitnessmore than one special register presentadb安装强制应用App以32位运行 ELF文件格式查看工具和PE文件类似,比PE文件简单,我们可以用NDK中提供的一个工具readelf去查看EL
转载
2023-07-24 21:50:45
607阅读
本文是记录自己学习IDA的一些总结与归纳,并将其体现成具体功能,便于复习与交流,有不对之处望大家包容并指出,欢迎大家留言收藏本篇是IDA静态分析的第一篇, 本文讲解非常简单的静态分析so包 , 以便于熟悉IDA环境IDA pro 7.0so包是32位附加GitHub地址下载apk如果出现其他问题可以参考IDA常见问题
开始通过分析apk, 我们知道, java层调用了那些本地函数 , 实际运用也是
一、so文件的加载地址so文件一般在程序刚启动的时候由动态连接器映射入可执行程序的地址空间,也可以通过dl库中的dlopen来映射入可执行程序的地址空间中,它的底层实现都是通过mmap来实现,这个没有什么好说的。通常来说,我们自己使用的so文件是很少主动确定so文件加载入内存的地址,所以so文件运行时映射在不同程序中的地址是不确定的。但是有些so文件是在生成的时候指明了自己的优选地址,例如我们常见
转载
2023-09-06 21:20:46
20阅读
so 文件是啥?so 文件是 elf 文件,elf 文件后缀名是.so,所以也被称之为so 文件, elf 文件是 linux 底下二进制文件,可以理解为 windows 下的PE文件,在 Android 中可以比作dll,方便函数的移植,在常用于保护 Android 软件,增加逆向难度。解析 elf 文件有啥子用?最明显的两个用处就是:1、so 加固;2、用于 frida(xposed) 的检测
动态加载的优点静态加载,不灵活,apk 包有可能大。所以采用动态加载 so 库文件,有以下几点好处:灵活,so 文件可以动态加载,不是绑定死的,修改方便,so 库有问题,我们可以动态更新。so 库文件很大的话,采用动态加载可以减少 apk 的包,变小。其实我们常用第三方 so 库,单个可能没问题,如果多个第三方 so 库文件,同时加载可能会出现冲突,而动态加载就能够解决这一问题。注意路径陷阱动态加
转载
2023-07-27 13:35:58
322阅读
项目场景:最近项目需要开发一个新功能,需要调用c++的so文件,在实际开发过程中碰到了一些问题,记录一下。 文章目录项目场景:一、使用技术二、使用步骤1.编写一个类用于解析so文件2.项目部署3.注意事项(可能出现的错误)3.1版本不一致3.2 运行环境3.3 没有配置动态链接库地址(LD_LIBRARY_PATH)3.4 文件名3.5 函数名不正确总结 一、使用技术原本是想直接用jna的,但是我
转载
2023-09-01 06:43:02
303阅读