NDK 开发,其实是为了有些时候为了项目需求需要调用底层的一些 C/C++ 的一些东西;另外就是为了效率更加高些。首先要配置 NDK 还要 下载 Cygwin ,配置 Cygwin ,然后需要编译生成,哎太麻烦了。如果你说使用 Eclipse,的确这样在编译上是能简单很多,但是前期也是需要配置一大堆;哎,配置错了还伤不起。Android Studio&nbs
一、配置so需要的库环境高版本的Android Studio已经集成了LLDB调试库,所以说,大家不要在找为什么没有,该从哪里去找。现在很多教程都是老的,这个算是我用的这个版本的最新方法,踩坑版。 File->setting二、创建so文件的工程直接选择最后一个 File->New project下一步这些配置,自己按照喜好就好了配置好该页面后,直接点击右下角的“Finish”,项目就
文章目录前言基础配置.gradleproject#.gradlemodule#.gradle 前言切换各种项目时,老是配置一些东西,写在这里,以后不怕找不到了。基础配置.gradleconfigs.gradle/* 主要会使用 kotlin androidx 相关库 */ /* -------------------------------- 构建设置 --------------------
转载 8月前
107阅读
# Android Gradle SO配置指南 ## 总览 本文将向你介绍如何在Android Gradle项目中配置SO库。下面是整个配置过程的步骤概述: | 步骤 | 描述 | | --- | --- | | 1 | 将SO库文件放置在项目目录下的指定位置 | | 2 | 在项目的`build.gradle`文件中配置SO库的路径 | | 3 | 在模块的`build.gradle`文件
原创 2024-01-03 05:23:10
1117阅读
git是什么?git是一种版本控制系统,在开发者中广泛使用。为什么要进行版本控制呢?这和开发中的实际需要有关。举几个例子:app版本1.0已经发布到应用市场,1.1的版本正在开发中,突然有一天,发现1.0的版本存在严重bug需紧急修复,此时1.1尚未开发完毕且距离1.1的预定发布日期还早。你需要找回1.0版本的代码,基于此版本进行修复工作。同时,正在开发中的1.1版本的代码也要不受干扰,以便继续开
# Android 配置不混淆so文件 在开发Android应用时,经常会使用到C/C++编写的动态链接库(so文件)。为了保护源代码和减小应用体积,我们通常会对Java代码进行混淆,但对于so文件,只要能被正确加载即可,无需进行混淆。本文将介绍如何配置Android项目,以确保so文件不会被混淆。 ## 为什么不混淆so文件 在Android应用中,so文件通常用于提供与Java代码无法直
原创 2023-11-02 11:30:44
391阅读
故事背景: 寒假开始,我与几位舍友成立了项目小组,目标为大学篮球界开发一款APP,以便于校史留名。 寒假结束,几位舍友纷纷向我咨询如何安装JDK以及Android Studio的SDK怎么更新不了的问题。 “万事开头难,真的,我尽全力了”舍友感叹道。更新啦,更新啦,更新时间:2018年12月17日总之,本文目的是一条龙服务,借读书笔记这一说,把只有毛片和毛选的电脑配置成能写
今天看到一篇有关Android混淆配置比较好的文章,拿出来分享给大家,一起学习!android studio自带java语言的ProGuard工具,主要用来压缩、优化、混淆,然后配合Gradle构建工具实现混淆。一、在app module中统一配置混淆规则我们可以直接在app module中build.gradle文件配置所有module需要混淆的规则。这样,其他module中就无需开启混淆。首先
Android.mk的用法和基础         一个Android.mk file用来向编译系统描述你的源代码。具体来说:该文件是GNU Makefile的一小部分,会被编译系统解析一次或多次。你可以在每一个Android.mk file中定义一个或多个模块,你也可以在几个模块中使用同一个源代码文件。每个模块属下列类型之一:   1)APK程
Android的Sepolicy实际上是对SELinux安全策略的描述和设置。什么是SELinux安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是 Linux 的一个安全子系统。SELinux 主要作用是最大限度地减小系统中服务进程可访问的资源(最小权限原则)。对资源的访问控制分为两类: DAC和MAC.DAC在未使用SELinux的系统
转载 2023-07-27 22:49:19
14阅读
需求:给一个目标apk,要求hook它的native层代码,但是不能修改它原本的so文件。实现方法:通过/proc/pid/maps查看目标so文件加载到内存的基址,然后利用ida查看目标函数在so文件的内存偏移,两个数字相加得到目标函数的内存地址,然后利用Android-Inline-Hook框架编写c文件,编译生成so文件,再修改apk中的smali文件,加载我们的so文件,从而达到hook的
一. 预编译预编译,又称预处理,是做些代码文本的替换工作。处理以 # 开头的指令 , 比如拷贝 #include 包含的文件代码,#define 宏定义的替换 , 条件编译等,就是为编译做的预备工作的阶段。百度百科二. gcc 生成预编译文件 gcc -C -E input -I header-path -o output -E:主要选项,gcc 使用该参数生成预编译文件;-C:进行字符串替换
第一、前言从今天开始我们正式开始Android的逆向之旅,关于逆向的相关知识,想必大家都不陌生了,逆向领域是一个充满挑战和神秘的领域。作为一名Android开发者,每个人都想去探索这个领域,因为一旦你破解了别人的内容,成就感肯定爆棚,不过相反的是,我们不仅要研究破解之道,也要研究加密之道,因为加密和破解是相生相克的。但是我们在破解的过程中可能最头疼的是native层,也就是so文件的破解。所以我们
第一、前言从今天开始我们正式开始Android的逆向之旅,关于逆向的相关知识,想必大家都不陌生了,逆向领域是一个充满挑战和神秘的领域。作为一名Android开发者,每个人都想去探索这个领域,因为一旦你破解了别人的内容,成就感肯定爆棚,不过相反的是,我们不仅要研究破解之道,也要研究加密之道,因为加密和破解是相生相克的。但是我们在破解的过程中可能最头疼的是native层,也就是so文件的破解。所以我们
转载 2024-01-17 19:51:29
72阅读
来来了解一下JNI吧,也许工作中并不一定用得着,但是也得知道一下大概内容呀。总结安卓中关于JNI的基础知识,有以下三个部分。(第一部分)A) 创建一个类(HelloWorld.java)或者在原来的类com.example.hellojni.HelloJNI中声明本地方法。(1)使用关键字native声明本地方法,表明这两个函数需要通过本地代码C/C++实现。public native
转载 2024-10-08 17:33:48
42阅读
文章目录前言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
166阅读
在有些情况下,可能遇到需要改变目标进程的执行流程的问题,替换原函数转而指向我们自己的函数,而Hook就是指的改变待Hook函数的地址,替换地址而达到更换原函数的功能。本文主要介绍Android上对native层中的so库Hook的方法,核心技术其实是对GOT表的Hook,获取目标函数地址需要对so文件进行解析,而so文件实际上是ELF文件,所以在此之前需要对ELF文件格式有一个很好的了解。关键解析
转载 2023-07-24 22:28:26
118阅读
  随着Android设备上的隐私安全问题越来越被公众重视,恶意软件对用户隐私,尤其是对电话、短信等私密信息的威胁日益突出,各大主流安全软件均推出了自己的隐私行为监控功能,在root情况下能有效防止恶意软件对用户隐私的窃取,那么这背后的技术原理是什么?我带着疑问开始一步步探索,如果要拦截恶意软件对电话、短信等API的调用,在Java或者Dalvik层面是不好进行的,因为这些层面都没有提供Hook的
转载 2024-01-28 00:38:58
74阅读
  全局符号表(GOT表)hook实际是通过解析SO文件,将待hook函数在got表的地址替换为自己函数的入口地址,这样目标进程每次调用待hook函数时,实际上是执行了我们自己的函数。  GOT表其实包含了导入表和导出表,导出表指将当前动态库的一些函数符号保留,供外部调用,导入表中的函数实际是在该动态库中调用外部的导出函数。  这里有几个关键点要说明一下:  (1) so文件的绝对路径和加载到内存
Gradle 内置了很多常用的插件,Gradle 中的插件可在一定的场景中可以帮助我们提高开发效率,可以通过扩展现有的插件来实现更多功能,比如 Android Gradle 插件就是基于内置的 Java 插件来实现的。插件的作用如何应用一个插件自定义插件先来一下 Gradle 插件的作用,主要有以下几个方面:添加任务到项目中,可对项目进行测试、编译、打包;添加依赖到项目中,可用来配置项目构建过程中
转载 2024-04-18 14:47:39
68阅读
  • 1
  • 2
  • 3
  • 4
  • 5