
Android逆向与加固工程
文章平均质量分 71
Android逆向与加固分析
Android系统攻城狮
《Android系统多媒体进阶实战》一书作者
展开
-
Android逆向之反编译与打包apk(二十)
本篇目的:Android逆向之反编译与打包apkApktool是一个逆向工程工具,主要用于对Android应用进行反编译和重新打包。它能够将APK文件转换成Smali代码,以便开发者可以查看和修改应用的源代码。同时,Apktool还支持将修改后的代码重新打包成APK文件,以便重新安装到Android设备上。Apktool的主要功能包括:反编译APK文件:Apktool能够将APK文件解包,提取出其中的资源文件和代码。原创 2024-06-17 09:08:13 · 1295 阅读 · 0 评论 -
IDA for Linux/Mac/Windows
IDA download原创 2021-09-04 17:19:00 · 683 阅读 · 0 评论 -
Android Native Hook工具
前言在目前的安卓APP测试中对于Native Hook的需求越来越大,越来越多的APP开始逐渐使用NDK来开发核心或者敏感代码逻辑。个人认为原因如下:安全的考虑。各大APP越来越注重安全性,NDK所编译出来的so库逆向难度明显高于java代码产生的dex文件。越是敏感的加密算法与数据就越是需要用NDK进行开发。 性能的追求。NDK对于一些高性能的功能需求是java层无法比拟的。 手游的...转载 2020-03-07 18:15:43 · 797 阅读 · 0 评论 -
Inline Hook
什么是Inline HookInline Hook即内部跳转Hook,通过替换函数开始处的指令为跳转指令,使得原函数跳转到自己的函数,通常还会保留原函数的调用接口。与GOT表Hook相比,Inline Hook具有更广泛的适用性,几乎可以Hook任何函数,不过其实现更为复杂,考虑的情况更多,并且无法对一些太短的函数Hook。其基本原理请参阅网上其他资料。需要解决的问题Arm模式与T...转载 2020-03-07 18:07:33 · 983 阅读 · 0 评论 -
android基于plt/got的hook原理
目录概述简单示例ELF文件格式初探装载、动态链接与重定位PLT与GOT如何定位基址?如何修改呢?解析基址和偏移思考和小结概述我们日常开发中编写的C/C++代码经过NDK进行编译和链接之后,生成的动态链接库或可执行文件都是ELF格式的,它也是Linux的主要可执行文件格式。我们今天就要借助一个示例来理解一下android平台下native层hook的操作和原理,不过在这之前,我们...转载 2020-03-07 18:04:36 · 1942 阅读 · 2 评论 -
PLT hook与Inline hook
前言在目前的安卓APP测试中对于Native Hook的需求越来越大,越来越多的APP开始逐渐使用NDK来开发核心或者敏感代码逻辑。 个人认为原因如下:安全的考虑。各大APP越来越注重安全性,NDK所编译出来的so库逆向难度明显高于java代码产生的dex文件。越是敏感的加密算法与数据就越是需要用NDK进行开发。 性能的追求。NDK对于一些高性能的功能需求是java层无法比拟的。 手游...转载 2020-03-07 17:25:34 · 4262 阅读 · 2 评论 -
got、plt表介绍
1. GOT表和PLT表GOT(Global Offset Table,全局偏移表)是Linux ELF文件中用于定位全局变量和函数的一个表。PLT(Procedure Linkage Table,过程链接表)是Linux ELF文件中用于延迟绑定的表,即函数第一次被调用的时候才进行绑定。2. 延迟绑定所谓延迟绑定,就是当函数第一次被调用的时候才进行绑定(包括符号查找、重定位等),如果...转载 2020-03-07 15:53:44 · 2012 阅读 · 0 评论 -
控制x86汇编指令eip的方法
1、控制eip能够做什么一般而言,作为pwn手小白,最希望的就是控制eip了,而控制eip究竟能做什么呢?控制eip,相当于就控制了程序的执行流程,从而获得了程序的最高权限,甚至能够绕过操作系统上的安全限制,直接获取用户shell或进行破坏性操作。而如果我们能够控制ctf题目中的eip,我们会进行怎样的操作呢?如果程序有shell地址,直接跳转至shell地址处,获得shell ...转载 2020-03-07 15:48:14 · 1511 阅读 · 0 评论 -
移动应用安全之沙盒技术
前言移动互联网的飞速发展, 改变了企业传统的业务模式, 提高了工作效率. 但同时也给企业的数据安全带来了巨大的挑战, 我们面对各种攻击的可能性会大 大增加, 面临潜在的风险:移动设备中的不安全应用程序会危及到企业网络的安全; 移动设备可能在不安全的网络(如公共 WiFi 热 点)中使用, 容易造成恶意软件感染和数据泄漏; 越狱或获取 Root 权限移动设备会带更多风险; 移动设备被盗...转载 2020-03-02 00:20:39 · 6829 阅读 · 0 评论 -
Android插件化原理—ClassLoader加载机制
前面《Android 插件化原理学习 —— Hook 机制之动态代理》一文中我们探索了一下动态代理 hook 实现了启动没有在 AndroidManifest.xml 中显式声明的 Activity的功能。我们加载的是应用内部的一个 Activity,但是通常 Android 插件化及沙箱机制都是加载外部的文件,这时我们还需要其他的机制保证插件加载,大部分插件化框架都是基于 ClassLoad...转载 2020-03-02 00:15:06 · 1183 阅读 · 0 评论 -
Linux编译、运行多个java文件
# mkdir statics# cd statics 1.Target.javapackage statics;//包名public interface Target{ public String execute();}2.TargetImpl.javapackage statics;public class TargetImpl implements Target{...原创 2020-03-01 19:24:58 · 676 阅读 · 0 评论 -
Java静态代理、动态代理以及CGLIB动态代理
代理模式是java中最常用的设计模式之一,尤其是在spring框架中广泛应用。对于java的代理模式,一般可分为:静态代理、动态代理、以及CGLIB实现动态代理。对于上述三种代理模式,分别进行说明。1.静态代理静态代理其实就是在程序运行之前,提前写好被代理方法的代理类,编译后运行。在程序运行之前,class已经存在。下面我们实现一个静态代理demo:静态代理定义一个接口Ta...转载 2020-03-01 19:17:37 · 231 阅读 · 0 评论 -
DEX VMP与ARM VMP
0x00: 目前各种加固都说是VMP了,简单分析市面上的加固,然后自己实现了一个类似原理的加固,大致流程图如下:加固端:解释器:https://www.cnblogs.com/2014asm/p/6534897.htmlARM平台指令虚拟化初探0x00:什么是代码虚拟化? 虚拟机保护是这几年比较流行的软件保护技术。这个词源于俄罗斯的著名软件保护软件“VmPr...转载 2020-02-29 22:17:29 · 2563 阅读 · 0 评论 -
Android APK签名原理
Android APK 签名原理涉及到密码学的加密算法、数字签名、数字证书等基础知识,这里做个总结记录。非对称加密需要两个密钥,一个是公开密钥,另一个是私有密钥;一个用作加密的时候,另一个则用作解密。其相对的加密即为对称加密,可以用现实世界中的例子来对比:一个传统保管箱,开门和关门都是使用同一条钥匙,这是对称加密;而一个公开的邮箱,投递口是任何人都可以寄信进去的,这可视为公钥;而只有邮...转载 2020-03-01 09:47:32 · 708 阅读 · 0 评论 -
浏览器获取CA认证流程
首先说说证书的签发过程: 服务方 S 向第三方机构CA提交公钥、组织信息、个人信息(域名)等信息并申请认证; CA 通过线上、线下等多种手段验证申请者提供信息的真实性,如组织是否存在、企业是否合法,是否拥有域名的所有权等; 如信息审核通过,CA 会向申请者签发认证文件-证书。 证书包含以下信息:申请者公钥、申请者的组织信息和个人信息、签发机构 CA 的信息、有效时间...转载 2020-02-29 21:28:58 · 5111 阅读 · 3 评论 -
公钥、私钥和数字签名是什么
鲍勃有两把钥匙,一把是公钥,另一把是私钥。鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果。鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。鲍勃给苏珊回信,决定采用"数字签名"。他写完后先用H...转载 2020-02-29 19:46:07 · 1578 阅读 · 0 评论 -
APP加固技术历程及未来级别方案:虚机源码保护
传统App加固技术,前后经历了四代技术变更,保护级别每一代都有所提升,但其固有的安全缺陷和兼容性问题始终未能得到解决。而下一代加固技术—虚机源码保护,适用代码类型更广泛,App保护级别更高,兼容性更强,堪称未来级别的保护方案。(加固技术发展历程)第一代加固技术—动态加载第一代Android加固技术用于保护应用的逻辑不被逆向与分析,最早普遍在恶意软件中使用,其主要基于Java虚拟机提...转载 2020-02-28 14:48:20 · 675 阅读 · 0 评论 -
Android10获取唯一ID最佳做法
官方文档安卓Q中Google彻底禁止第三发app获取IMEI,获取MAC地址为:02:00:00:00:00:00。1.使用实例 ID 和 GUID对于实例 ID 不实用的情况,您还可以使用自定义全局唯一 ID (GUID) 对应用实例进行唯一标识。最简单的方式是使用以下代码生成您自己的 GUID。1.Kotlin写法var uniqueID = UUID.random...原创 2020-02-25 20:59:08 · 8315 阅读 · 0 评论 -
客户端(https)与服务器交互过程
Https涉及到的主体客户端。通常是浏览器,也可是自己编写的各种语言的客户端程序 服务端。一般指的是支持https的网站 CA(certificate authorites)机构。HTTPS证书签发和管理机构。发明Https的动机1.认证正在访给问的网站。什么是认证网站?比如我们访问支付宝,怎么样确定我们访问的是阿里巴巴官方提供的支付宝而不是假冒的钓鱼网站?保证所传输数据的私密性...转载 2020-02-24 15:00:15 · 3472 阅读 · 0 评论 -
APP的安装过程
APP的安装过程原创 2020-01-19 17:36:06 · 1957 阅读 · 0 评论 -
Android应用加固原理
一、前言Android开发者常常面临的一个问题就是防破解、 防二次打包。现如今安全问题越来越重要,越来越多的Android开发者也开始寻求安全的保护方案。请看一下下面的几张图片:1.1u=2065152164,360269629&fm=173&s=D19EA0725C3578880C719942030030F5&w=639&h=342&img...转载 2019-12-18 23:11:44 · 3404 阅读 · 0 评论 -
Mac安装jadx查看dex文件
方式一:# brew install jadx方式二:# git clone https://github.com/skylot/jadx.git# cd jadx# ./gradlew dist# ./Users/xxx/jadx/build/jadx/bin/jadx-gui注意:可使用emacs创建一个软链接...原创 2019-11-30 22:51:12 · 1486 阅读 · 0 评论 -
IDA保存修改的寄存器值
1.修改寄存器--->Hex View --->右键选择:Edit --->修改后:Apply Changed2.保存--->Edit --->Patch Program --->Apply patches to intput files //选择OK即可 **************************************...原创 2019-11-30 14:29:27 · 3422 阅读 · 0 评论 -
Mac IDA debug android exec program
1.在设备上运行android_server64(Android设备必须root)# cp /Applications/IDA\ Pro\ 7.0/dbgsrv/android_server64 .# adb push android_server64 /system/bin# adb shell android_server64# adb forward tcp:23946 tcp:...原创 2019-10-21 22:39:03 · 398 阅读 · 0 评论 -
Mac上IDA报错/:Permission denied Please specify another file path for the database
解决:# cd /Applications/IDA Pro 7.0/ida64.app/Contents/MacOS# sudo ./ida64原创 2019-10-21 22:21:10 · 2588 阅读 · 1 评论 -
Mac IDA单步调试本地程序
1.运行mac_server64监听attach上的程序# cp /Applications/IDA\ Pro\ 7.0/dbgsrv/mac_server64 .# ./mac_server64//android远程调试的需要执行# adb forward tcp:23946 tcp:239462.IDA单步调试,打开需要调试的可执行文件F12:下断点--->Debug...原创 2019-09-27 00:50:17 · 2386 阅读 · 0 评论 -
Mac ndk编译for Android
1.下载ndk20 for machttps://developer.android.google.cn/ndk/downloads/index.html2.配置ndk环境# emacs /etc/profile ...原创 2019-09-21 18:51:34 · 433 阅读 · 0 评论 -
解决:/system/bin/sh: /system/bin/test-ndk: not executable: magic 7F45报错
在夜神模拟器运行arm编译器编译出来的可执行文件,结果报错:/system/bin/sh: /system/bin/test-ndk: not executable: magic 7F45查了一下,原来模拟器是x86架构的,所以换回x86架构的可执行程序就OK了。...原创 2019-09-21 18:26:54 · 4502 阅读 · 0 评论 -
Mac安装IDA后各版本android_server
# tree /Applications/IDA Pro 7.0/dbgsrv.├── android_server├── android_server64├── android_server_nonpie├── android_x64_server├── android_x86_server├── armlinux_server├── armuclinux_server├──...原创 2019-09-21 17:28:34 · 1015 阅读 · 0 评论