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

Android 逆向】Android 中常用的 so 动态 ( systemliblibc.so 动态 | libc++.so 动态 | libstdc++.so 动态 )

文章目录 一、拷贝并分析 Android 中的 /system/lib/libc.so 动态 二、拷贝并分析 Android 中的 /system/lib/libc++.so 动态 三、拷贝并分析...Android 中的 /system/lib/libstdc++.so 动态 总结 一、拷贝并分析 Android 中的 /system/lib/libc.so 动态 ---- /system/lib..., 要先加载 /system/bin/linker , 这是 so 动态的加载模块 , 该动态中 , 主要是实现了 dlopen 方法 ; 二、拷贝并分析 Android 中的 /system...++.so /sdcard/Pictures 使用 64 位的 IDA 打开上述动态 ; 搜索 std , 即可查看常用的标准中的函数 ; 三、拷贝并分析 Android 中的 /system/...该动态的内部实际上使用 malloc 实现 , malloc 来自于 libc.so 动态 ; 总结 /system/lib/libc.so 动态是被引用最多的函数 , /system/lib

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

Android安全-SO动态注入

Android是基于Linux内核的操作系统,而在Linux下SO注入基本是基于调试API函数ptrace实现的,同样AndroidSO注入也是基于ptrace函数,要完成注入还需获取root权限。...0x08 恢复目标进程的堆栈,恢复目标进程寄存器值,解除关联,完成SO动态注入; (注:实际上,0x06和0x07并不属于SO动态注入的步骤,然而仅仅注入是完全没有意义的,通常我们需要执行...调用ptrace_writedata(pid, (void *)regs.ARM_sp, (void *)so_path, strlen(so_path) + 1),其中so_path为SO的绝对路径。...0x08 恢复目标进程的堆栈,恢复目标进程寄存器值,解除关联,完成SO动态注入: 调用ptrace_writedata(pid, (uint8_t *)saved_regs.ARM_sp...动态注入。

2.4K20

Android Studio开发so实践

项目中调用.so动态 Eclipse的如何通过NDK生成so就不多说了,目前已经不适用于Android开发,建议使用AS进行开发,本篇也是基于AS来进行讲解。...如何通过JNI调用Native层的c/c++代码,可以参考我的一篇文章: JNI_最简单的Java调用C/C++代码 注:window的动态是.dll文件,而Linux下的动态是.so文件 配置NDK...配置gradle 在defaultConfig下,配置ndk: ndk { moduleName "JNIDemo" // 生成的so名字 } 在android...执行ndk-build命令生成所有cpu架构的so ? 然后就可以在libs目录下看到所有平台的so: ? 至此,完整的so实践基本完毕,期间遇到任何问题均可留言,欢迎讨论交流。...最后 关于NDK开发so会有很多坑,本篇博客也只是引大家入门,我们在使用第三方的SDK的时候,就可能会用到别人提供的so,也可能会遇到使用so出现问题,有很多原因,可能是提供了不同的cpu架构的so

1.4K20

Android 逆向】Android 中常用的 so 动态 ( 拷贝 systemlib 中的 Android 系统 so 动态 )

文章目录 一、拷贝 /system/lib/ 中的 Android 系统 so 动态 一、拷贝 /system/lib/ 中的 Android 系统 so 动态 ---- 将 Android 系统的.../system/lib/libc.so 动态 , 拷贝到 /sdcard/Pictures/lib/ 目录中 ; 首先 , 在 /sdcard/Pictures/ 目录下创建 lib 目录 ; mkdir.../sdcard/Pictures/lib 然后 , 将 /system/lib/libc.so 动态 , 拷贝到 /sdcard/Pictures/lib/ 目录中 ; cp /system/lib.../libc.so /sdcard/Pictures/lib/ 拷贝后 , 可以从 SD 卡中 , 将 libc.so 动态拷贝出来 ; 注意 , 获取动态后 , 32 位的动态要使用 32 位的...IDA 打开 , 64 位的动态使用 64 位的 IDA 打开 ; 在 /system/lib/ 目录下有如下动态 : walleye:/ # cd /system/lib walleye:/system

1.4K10

Android 逆向】Android 中常用的 so 动态 ( libdvm.so | libart.so | libandroid_runtime.so | libandroidfw.so )

文章目录 一、Android 虚拟机涉及的 libdvm.so 动态 和 libart.so 动态 二、Android 运行时相关 libandroid_runtime.so 动态 三、Android...Framework 层 Native 实现相关 libandroidfw.so 动态 一、Android 虚拟机涉及的 libdvm.so 动态 和 libart.so 动态 ---- libdvm.so...动态Android 的 Dalvik 虚拟机使用的动态 ; Android 5.0 及以下系统使用 Dalvik 虚拟机 ; libart.so 动态Android 的 Art 虚拟机使用的动态...; Android 5.1 及以上系统使用 Art 虚拟机 ; 目前所有的模拟器 , 真机获取的虚拟机动态都是 libart.so 动态 ; 5.0 以下的 Android 设备 , 现在很少了..., 使用 64 位 IDA 分析该动态 ; 二、Android 运行时相关 libandroid_runtime.so 动态 ---- libandroid_runtime.soAndroid

2.1K20

Android 逆向】Android 中常用的 so 动态 ( libm.so 数学函数动态 | liblog.so 日志模块动态 | libselinux.so 安全模块动态 )

文章目录 一、libm.so 数学函数动态 二、liblog.so 日志模块动态 三、libselinux.so 安全模块动态 一、libm.so 数学函数动态 ---- libm.so 是数学相关函数..., 该动态是 libc.so 动态的依赖 , 是最基础的函数 ; 执行 cp /system/lib/libm.so /sdcard/Pictures 命令 , 将 libm.so 动态拷贝到...对数函数 , 等 ; 二、liblog.so 日志模块动态 ---- liblog.so 是日志模块的动态 , 所有的日志打印 , 都使用的这个 ; 执行 cp /system/lib/liblog.so.../sdcard/Pictures 命令 , 将 liblog.so 动态拷贝到 /sdcard/Pictures 目录 , 之后可以将其拷贝到文件系统 ; 三、libselinux.so 安全模块动态...---- libselinux.so 是安全模块的动态 ; 执行 cp /system/lib/libselinux.so /sdcard/Pictures 命令 , 将 libselinux.so

90710

Android 调用so全过程

一、前言 Android中有时候为了效率以及平台开发的支持,难免会用到NDK开发,那么都会产生一个so文件,通过native方法进行调用,开发和调用步骤很简单,这里就不多说了,本文主要来介绍,我们在使用...:设置应用的native路径 +scanPackageDirtyLI:扫描包内容初始化应用信息 2、ActivityManagerService.java +startProcessLocked...四、Androidso加载流程 在Android中如果想使用so的话,首先得先加载,加载现在主要有两种方法,一种是直接System.loadLibrary方法加载工程中的libs目录下的默认so文件...五、Android中类加载器关联so路径 上面分析so加载过程中可以发现有一个地方,就是通过类加载器来获取到so的路径,那么Android中的主要类加载器有两个,一个是PathClassLoader和...在之前说到了类加载器中的lib路径,我们可以打印一下路径的,这里直接使用getClassLoader得到加载器打印即可: 这里看到Library的目录包含很多路径。

5.6K21

Android 使用so的遇到的坑

使用so采坑记录 做Android开发会遇到各种各样的问题,遇到问题不可怕,解决了并且知道为什么,下次遇到能马上解决就好了,今天要说的就是这个so的使用采坑了。...两步都有坑,幸运的是我都踩到了,所以记录一下: 常规的so是使用C或者C++写的,Android中只要调用就好了,而这些依赖通常的有好几个版本文件,比如我们来看看百度的文字识别SDK,如下图所示。...上面有四个文件夹arm64-v8a、armeabi、armeabi-v7a、x86,这四个文件表示不同的so的版本,基本可以满足现在的Android智能机,但是不一定支持虚拟设备,所以当你涉及到使用第三方...然后把那包含so的四个文件夹和jar包都放到这个libs下。 一般来说Android默认是读取jniLibs下的文件的,但是这个文件在项目创建时是没有的,需要开发者手动创建。...其实也很好解决了,so是属于ndk开发,不同的so就有不同的配置,因此当你的常规配置解决不了问题的时候,就要尝试新的玩法。

3.4K10

Android so的热更新问题

首先来总结一下Android的ClassLoader方式的热更新,这种方式类的查找过程是通过BaseDexClassLoader来完成的,最终会通过成员变量DexPathList对象中的findClass...dexElementsSuppressedExceptions)); } return null; } 只需将patch的class插入到dexElements最前面即可完成热更新,当然还需要防止类被打上校验的标记,做法就是在class中插入一段字节码引用其他...具体代码就不贴了,实践后得出的结论是这种方式是完全可行的,只不过Android 6.0中这部分代码逻辑发生了改变。...在Android 4.0-5.1中,只需要将文件夹目录插入到nativeLibraryDirectories数组最前面即可,这个过程直接使用反射插入patch的so所在目录到数组最前面。...总结 以上所述是小编给大家介绍的Android so的热更新问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对ZaLou.Cn网站的支持!

67840

013android初级篇之Android Studio 引用源码模块,jar及so文件

013android初级篇之Android Studio 引用源码模块,jar及so文件 1....引用jar文件 将jar文件复制、粘贴到app的libs目录中; 右键点击jar文件,并点击弹出菜单中的“Add As Library”,将jar文件作为类添加到项目中; 选择指定的类。...已成功导入的jar包可以在android studio 中看到该包的信息。 3. 引用so文件 网上有很多引用so文件的方法,多数都很麻烦,在KYLE THIELK的博客中找到了一种简单的方法。...在“src/main”目录中新建名为“jniLibs”的目录; 将so文件复制、粘贴到“jniLibs”目录内。 报错 1....Studio开发入门-引用jar及so文件 Android Studio如何删除module Android studio 导入github工程

1.6K20

反编译so破解so

所以想破解so,将对i2c num 的大小改大点。...from=sec (2)实战预热 https://blog.csdn.net/m0_37766442/article/details/72903385 一、反编译so 使用IDA打开so 根据log信息或猜测查找需要破解的大致位置...如我需要搜索的log:bus_num(7) or reg_addr_size(1) 我们就搜索reg_addr_size这个字符串 我们找到了一处符合的字符串,双击上面的DATA_REF后的内容跳转到引用的代码段...我们看到上方有一个 loc_82036,这代表一段代码的标签处,类似C里面goto 的标签,那肯定其他地方会向这个标签做跳转 选中这个标签,右击 点击红框选项,就会列出所有向此处跳转的地方,这个so,...点中CMP R0,#6的地址处,然后切换到HEX View Hex VIEW 可以切换数据格式,64位so用4字节格式,32位so用2字节格式 我们需要将CMP R0,#6 改成CMP R0,#8

4.3K30

Android Studio工程引用第三方so文件的方法

android/log.h 日志将得到输出 ldLibs "log" // 声明创建指定cpu架构的so, 不声明的话, 默认(gradle 1.5.0)会生成4中架构 多一种mips...配置在根目录libs下可以加载第三方so, (最好不要创建jniLibs, 在众多的开源中可能会引起冲突,还没发现) // 2....运行时会自动将libs目录下的so拷贝到指定目录 // 3....如何适配各个目录,例如有一些第三方的类只提供了armeabi下的.so文件,而工程配置不止armeabi一个目录,这就需要将armeabi下的.so文件复制到其他对应的目录下。...总结 以上所述是小编给大家介绍的Android Studio工程引用第三方so文件的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。

3K11

Android 开发中如何动态加载 so 文件

我想对于静态加载 so 文件,大家都已经很熟悉了,这里就不多说了。...在 Android 开发中调用动态文件(*.so)都是通过 jni 的方式,而静态加载往往是在 apk 或 jar 包中调用so文件时,都要将对应 so 文件打包进 apk 或 jar 包。...所以采用动态加载 so 文件,有以下几点好处: 灵活,so 文件可以动态加载,不是绑定死的,修改方便,so 有问题,我们可以动态更新。...so 文件很大的话,采用动态加载可以减少 apk 的包,变小。 其实我们常用第三方 so ,单个可能没问题,如果多个第三方 so 文件,同时加载可能会出现冲突,而动态加载就能够解决这一问题。...我们在 Android 中加载 so 文件,提供的 API 如下: //第一种,pathName 文件的绝对路径 void System.load(String pathName); //第二种,参数为文件名

4.9K101

Android Studio 4.0.+NDK .so生成打包

+NDK .so生成打包 Android JNI的深度进阶学习 Android Studio 4.0....在Android开发中它的生成是需要使用JNI将C/C++文件打包成so的,当然在其他开发软件中,由其他工具将其打包成so。...文件测试 新建一个普通的Android程序,将放入程序中运行 将生成的.so放入lib文件夹中 之前生成.so文件函数的类,在调用程序中依然需要相同的包名、文件名及方法名 可以将的加载放在...应用就是可以使用的原生函数getData()。 OK,自动生成.so的方法就讲到这了,Android Studio帮我们自动化做了很多东西,所以so easy。 下面讲讲传统的.so生成方案。...+NDK .so生成打包 Android JNI的深度进阶学习 Android Studio 4.0.

1.3K40

NDK开发_编译的cpp引用到 其它so, Android.mk 的写法

如果我们编译的so文件需要引用到其它的so文件,那我们来看下这时候的Android.mk 文件如何写。...一、不需要ndk编译 .cpp,直接是 so文件 切到 Project 视图,在java同级目录下 新建 jniLibs文件夹,再根据平台需要,在jniLibs目录下建 armeabi-v7/x86 ....文件夹, 下面的截图 根据平台需要建的是armeabi-v7a文件夹,然后将相应的 so文件复制到该目录下即可。编译运行工程的后,相应的so就打包进apk了。 ?...二、需要ndk 编译.cpp, 编译的 .cpp 需要引用外部的 .so 如下图所示,ndk 编译 util.cpp,需要引用到 libyuv2rgb.so ,我们看下 Android.mk中的内容 ?...LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := preutil LOCAL_SRC_FILES := libyuv2rgb.so

1.1K20

Android 逆向】IDA 安装 ( 使用 IDA 分析 so 动态 )

文章目录 一、IDA 安装 二、使用 IDA 分析 so 动态 一、IDA 安装 ---- 启动 IDA 安装程序 , 开始安装 IDA ; 同意用户协议 ; 输入密码 ; 选择安装位置 ;...创建桌面图标 ; 开始安装 ; 等待安装完成 ; 安装完毕 ; 二、使用 IDA 分析 so 动态 ---- 首次进入 , 弹出如下对话框 ; 同意用户协议 , 之后该界面不再显示 ;...选择 " New " 选项 ; 这里直接将 so 文件拖动到 IDA 中 ; 拖入 so 文件后 , 使用默认选项 , 点击 OK 按钮 , 继续向后执行 ; 弹出的信息对话框中勾选不再显示该信息..., 点击 OK 按钮 ; 打开后的样式 : 左侧 Function name 显示函数名称 , IDA-View-A 是 so 对应的汇编代码 ; IDA-View-1 是 so 对应的二进制代码

1.3K20
领券