前言:关于.jar文件:平时我们Android项目开发中经常会用到第三方的.jar文件。其实.jar文件就是一个类似.zip文件的压缩包,里面包含了一些源代码,注意的是.jar不包含资源文件(res、图片等)------------------------------------------------------------------------------------------------
# Android 的dex和so区别 ## 1. 简介 在Android开发中,我们经常会遇到dex和so这两个概念。它们分别代表着不同的文件格式和编译方式。本文将介绍dex和so区别,以及它们在Android应用开发中的使用场景。 ## 2. dex文件 dex(Dalvik Executable)文件是一种专为Android平台设计的可执行文件格式。它是由Java源代码(.java文件
原创 2023-09-04 06:31:31
860阅读
目录 1、什么是SOA  2. 什么是微服务3. 微服务由来4. 为什么需要微服务?4.1 最期的单体架构带来的问题4.2 微服务与单体架构区别4.3 微服务与SOA区别5. 微服务本质6.什么样的项目适合微服务微服务优势与缺点7.1 特性7.2 特点7.3 缺点8. 微服务开发框架9. Sprint cloud 和 Sprint boot区别1、什么是SOA  SOA(Service-
转载 2023-07-03 19:20:16
62阅读
AndroidX简介:Android 9.0(API level 28)发布时,AndroidX也作为一个新的支持库发布出来了。AndroidX时Jetpack的一部分,它包含了现有的支持库和最新的Jetpack组件。AndroidX 与 Android 操作系统分开提供,并与各个 Android 版本向后兼容。AndroidX 完全取代了支持库(android.support.v7或androi
在Linux系统中,经常会遇到以.so和.a为后缀的文件,这两种文件类型在系统中扮演着非常重要的角色。本文将从几个方面来探讨这两种文件的区别以及各自的特点。 首先,让我们来看一下.so文件。在Linux系统中,.so文件是共享库文件的一种形式。共享库文件是一种可执行程序使用的外部函数库,在运行时可以被加载到内存中,并且可以被多个程序同时共享。因此,共享库文件的作用是可以帮助节省内存,提高程序的运
原创 2024-04-03 10:55:30
347阅读
此篇文章基于一些特殊场景,如三方分享的时候,微信需要release包才能进行分享;当然诸如此类的三方框架不在少数,故此我借鉴了网上多篇同此需求的文章,加以总结与实践有了此篇Blog,末尾也包含了一些我遇到的坑~优先掌握:查看是否配置Signing属性方式一 :项目 - 右键 - Open-Moudle-Settings 方式二:Ctrl+Shift+Alt+S 如Signing没有配置过,那么就如
文章目录一、简介二、应用组件1、Activity2、Fragment3、ContextCompat4、IntentCompat5、Loader6、Preference7、ContentResolverCompat三、界面1、RecyclerView2、ViewPager3、GridLayout4、PercentFrameLayout5、PercentRelativeLayout6、DrawerL
转载 2023-07-24 21:59:56
133阅读
需求:给一个目标apk,要求hook它的native层代码,但是不能修改它原本的so文件。实现方法:通过/proc/pid/maps查看目标so文件加载到内存的基址,然后利用ida查看目标函数在so文件的内存偏移,两个数字相加得到目标函数的内存地址,然后利用Android-Inline-Hook框架编写c文件,编译生成so文件,再修改apk中的smali文件,加载我们的so文件,从而达到hook的
第一、前言从今天开始我们正式开始Android的逆向之旅,关于逆向的相关知识,想必大家都不陌生了,逆向领域是一个充满挑战和神秘的领域。作为一名Android开发者,每个人都想去探索这个领域,因为一旦你破解了别人的内容,成就感肯定爆棚,不过相反的是,我们不仅要研究破解之道,也要研究加密之道,因为加密和破解是相生相克的。但是我们在破解的过程中可能最头疼的是native层,也就是so文件的破解。所以我们
第一、前言从今天开始我们正式开始Android的逆向之旅,关于逆向的相关知识,想必大家都不陌生了,逆向领域是一个充满挑战和神秘的领域。作为一名Android开发者,每个人都想去探索这个领域,因为一旦你破解了别人的内容,成就感肯定爆棚,不过相反的是,我们不仅要研究破解之道,也要研究加密之道,因为加密和破解是相生相克的。但是我们在破解的过程中可能最头疼的是native层,也就是so文件的破解。所以我们
转载 2024-01-17 19:51:29
72阅读
  全局符号表(GOT表)hook实际是通过解析SO文件,将待hook函数在got表的地址替换为自己函数的入口地址,这样目标进程每次调用待hook函数时,实际上是执行了我们自己的函数。  GOT表其实包含了导入表和导出表,导出表指将当前动态库的一些函数符号保留,供外部调用,导入表中的函数实际是在该动态库中调用外部的导出函数。  这里有几个关键点要说明一下:  (1) so文件的绝对路径和加载到内存
  随着Android设备上的隐私安全问题越来越被公众重视,恶意软件对用户隐私,尤其是对电话、短信等私密信息的威胁日益突出,各大主流安全软件均推出了自己的隐私行为监控功能,在root情况下能有效防止恶意软件对用户隐私的窃取,那么这背后的技术原理是什么?我带着疑问开始一步步探索,如果要拦截恶意软件对电话、短信等API的调用,在Java或者Dalvik层面是不好进行的,因为这些层面都没有提供Hook的
转载 2024-01-28 00:38:58
74阅读
来来了解一下JNI吧,也许工作中并不一定用得着,但是也得知道一下大概内容呀。总结安卓中关于JNI的基础知识,有以下三个部分。(第一部分)A) 创建一个类(HelloWorld.java)或者在原来的类com.example.hellojni.HelloJNI中声明本地方法。(1)使用关键字native声明本地方法,表明这两个函数需要通过本地代码C/C++实现。public native
转载 2024-10-08 17:33:48
42阅读
  本节用的so是上节用Android Studio创建的so。想在Android Studio中调用so中的方法,需要先引用soAndroid Studio中引用so的方法有二种,下面开始介绍。一 引用so   在app/src/main目录下新建Directory,命名文件夹为jniLIB(文件名不能错),把so文件放进去 ,如图:  二 编写java代码调用so中方法  ①在代码
转载 2018-11-24 11:42:00
209阅读
0X00 前言 为了增加APK文件的破解难度,很多比较重要的功能都是通过native实现,与反编译不同的是,java的伪代码可以很清楚的得到程序的逻辑关系,但是so文件反编译得到的是汇编代码,使用ida这样的神器可以得到c的伪代码。使用ida实现so的动态调试,可以在关键地方下断点,对于一些变换,比如有的时候输入的内容与经过一些列的变换后的结果比较,这个时候我们不需要关心中间的变换过程,在动态调
文章目录前言Hook So有导出so层hook无导出so层hookSo层实战hook脚本的编写hook脚本的效果总结 前言我在前面的一篇博客 CTF逆向-EasySo世界SO层反汇编 中记录了对一道 CTF 逆向题目的 Android APP 的 So 层函数进行基础的逆向分析的过程,通过 IDA 反汇编查看 So 层代码并分析获得了 Flag 值。生命在于折腾~本文将记录尝试通过 Frida
转载 2023-07-06 15:58:26
172阅读
在有些情况下,可能遇到需要改变目标进程的执行流程的问题,替换原函数转而指向我们自己的函数,而Hook就是指的改变待Hook函数的地址,替换地址而达到更换原函数的功能。本文主要介绍Android上对native层中的so库Hook的方法,核心技术其实是对GOT表的Hook,获取目标函数地址需要对so文件进行解析,而so文件实际上是ELF文件,所以在此之前需要对ELF文件格式有一个很好的了解。关键解析
转载 2023-07-24 22:28:26
118阅读
前言,承接之前的 IOS开发涉及有点概念&相关知识点,这次归纳的是Android开发相关,好废话不说了。。先声明下,Android开发涉及概念比IOS杂很多,可能有很多都题不到的。。 首先由于Android是基于Linux,而Linux又是用c山寨Unix的,但是为什么Android不用开发App,其实我也不懂,我想可能是java比较简单。同样的,IOS为啥没用java
转载 7月前
39阅读
Android提供了NDK来供开发人员调用C/C++所写的SO文件,基本方式如下:假设NDK的存放路径为:E:\android-ndk-1.5_r1,首先:在E:\android-ndk-1.5_r1\sources目录下建立自己存放.C文件的目录linux,里面写上自己的JNI方式的.C文件和Amdroid.mk配置文件;然后:在E:\android-n
转载 2023-08-17 13:40:47
268阅读
动态链接,在可执行文件装载时或运行时,由操作系统的装载程序加载库。大多数操作系统将解析外部引用(比如库)作为加载过程的一部分。在这些系统上,可执行文件包含一个叫做import   directory的表,该表的每一项包含一个库的名字。根据表中记录的名字,装载程序在硬盘上搜索需要的库,然后将其加载到内存中预先不确定的位置,之后根据加载库后确定的库的地址更新可执行程序。可执行程序根据更新后的
转载 精选 2015-01-09 12:41:49
348阅读
  • 1
  • 2
  • 3
  • 4
  • 5