![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
移动安全
文章平均质量分 76
kernweak
日子越来越有判头了
展开
-
移动安全复习笔记
平时看书学习,复习笔记,慢慢加吧原创 2021-08-19 00:17:54 · 186 阅读 · 0 评论 -
linux或者android样本ptrace反调试绕过
linuxlinux 系统gdb等调试器,都是通过ptrace系统调用实现。Android加固中,ptrace自身防止调试器附加是一种常用的反调试手段。调试时一般需要手工在ptrace处下断点,通过修改ptrace返回值过掉反调试。下面提供另一种思路,降低手工操作复杂度:测试代码(反调试程序)#include <stdio.h>#include <stdlib.h>#include <sys/ptrace.h>void a(){ if (ptra原创 2021-06-16 15:03:16 · 1401 阅读 · 2 评论 -
Frida学习笔记
准备工作使用kali时间改成中国时区dpkg-reconfigure tzdata加入中文字体apt upgrde如果报错,解决方法: 下载最新key添加到keylistwget -q -O - https://archive.kali.org/archive-key.asc | apt-key addapt install xfonts-intl-chineseapt install ttf-wqy-microhei可以装一些好用的小工具;htopjnettop安装py环境原创 2021-06-07 11:36:23 · 2226 阅读 · 0 评论 -
NDK开发学习笔记
NDK开发简介ndk代码中特有部分,AS中为JAVA有loadlibrary与native函数public class MainActivity extends AppCompatActivity { // Used to load the 'native-lib' library on application startup. static { System.loadLibrary("native-lib"); } @Override pro原创 2021-06-07 11:35:15 · 320 阅读 · 1 评论 -
安卓加壳与脱壳学习笔记
#grep -Ril "IBM" /tmp递归列出/tmp目录下包含文本字符串"IBM"的文件有时要修复dex文件的前八个字节。ClassLoader和动态加载类加载器Android的虚拟机ART和davilk都是JVM的一种实现,使用寄存器来实现。JVM的类加载器包括3种:Bootstrap ClassLoader(引导类加载器)C/C++代码实现的加载器,用于加载指定的JDK的核心类库,比如java.lang.、java.uti.等这些系统类。Java虚拟机的启动就是通过Bootst原创 2021-06-07 11:33:11 · 1033 阅读 · 1 评论 -
《Android软件安全权威指南》原生程序分析 阅读笔记
工具NDKToolchain是一套工具集,比如elf,READELF -l/-S可以查看Program Header Table与Section Header Table。-e参数为查看elf所有的文件头信息。OBJDUMP -p查看Program Header Table,-x查看所有文件头信息。-d命令用于反汇编ELF并查看汇编代码。-t查看符号表,-r查看重定位。ida的view->open subview->proximity xxx,可以看到函数大致流程比如:...原创 2020-09-09 23:23:23 · 223 阅读 · 0 评论 -
《Android软件安全权威指南》(ARM)阅读笔记
Android arm EABI每种CPU与指令集的组合都有自己的应用二进制接口(Application Binary Interface ABI)。ABI可以精确定义应用的机器代码在运行时如何与系统进行交互。嵌入式设备ABI称为嵌入式应用二进制接口(EABI):机器代码的CPU指令集。运行时内存存储和加载的字节顺序。可执行二进制文件(列如共享库)的格式,以及他们支持的内容类型。解析内容与系统之间数据的各种约定。包括对齐限制,如何使用堆栈等。运行时可以用于机器代码的函数符号列表。基于ARM的原创 2020-09-09 00:36:35 · 203 阅读 · 0 评论 -
《Android软件安全权威指南》原生程序文件格式 阅读笔记
原生程序开发JNIJNI方法都在jni.h中定义(JNINativeInterface),该结构体中保存的是一些列JNI方法的指针,第一个参数为JNIEnv结构体指令,该指令的第一个参数就是一个名为funiction的JNINativeInterface。JNI编程中,所有Java层数据类型都可以用jvalue表示,定义如下:除了jobject,其他所有类型都在原生程序中有对应数据类型。jobject在JNI的实现被定义为C++类,有多个子类,,分类包含jstring,jthrowable原创 2020-09-09 00:35:13 · 304 阅读 · 0 评论 -
《Android软件安全权威指南》(android文件格式)阅读笔记
无符号LEB128实现如下:DEX文件由多个结构体组合而成。如下图,要给DEX由7个部分组成:dex header为Dex文件头,它指定了DEX文件的一些属性并记录了其他数据结构在DEX文件中的物理偏移。string_ids到class_def部分可以理解为“索引结构区”;真实的数据放在data数据区中;link_data为静态链接数据区。Dex由DexFile结构体表示,定义如下:DexOptHeader是ODEX头,DexHeader是DEX文件头部信息。...原创 2020-08-27 16:48:44 · 675 阅读 · 0 评论 -
Android调试反调试概括笔记
adb install -r 重新安装adb pull /data/local/tmp/xxx 下载adb push xxx /data/local/tmp 上传adb shell pm list packages 列举安装的包名aapt dump badging apk 查看包名(区分app的标志)adb shell pm list packages -f com.hell...原创 2019-07-01 02:58:57 · 805 阅读 · 0 评论 -
Android进程注入
Android平台的进程注入和linux平台的注入技术类似,采用ptrace机制来实现ptrace在执行系统调用之前,内核会先检查当前进程是否处于被“跟踪”(traced)的状态。如果是的话,内核暂停当前进程并将控制权交给跟踪进程,使跟踪进程得以察看或者修改被跟踪进程的寄存器。ptrace()是一个系统调用,它允许一个进程控制另外一个进程的执行.不仅如此,我们还可以借助于ptrace修改某...原创 2019-06-27 22:57:44 · 2910 阅读 · 0 评论 -
Android 7.0修改ro属性
因为为了调试程序,需要修改ro.secure 和ro.debuggable,刚开始练习安卓逆向,手里的手机是pixel,最低是7.x的版本,结果按着网上的教程,什么使用setpropex-pie或者修改boot.img永久修改都没起作用,可能是能力有限,有些地方设置错误没有发现,最后再查资料时候,终于找到前辈的解决方法。链接如下https://bbs.pediy.com/thread-2153...原创 2019-06-21 14:12:41 · 2291 阅读 · 0 评论 -
APK调试
源码的情况下,对APK的动态调试主要分为两种:smali汇编动态调试arm汇编动态调试Smali汇编动态调试对smali汇编的动态调试主要分为两种:使用ida进行调试使用IDE + apktool进行调试Eclipse + apktoolAndroid studio + apktoolIdea + apktool…使用jeb2.2以后版本调试IDA 调试smali...原创 2019-06-22 18:08:31 · 6239 阅读 · 0 评论 -
NDK开发JNI动态注册与静态注册
下面联系就是ndk开发联系,为了熟悉java和C/C++交互。首先Native方法的注册方式有两种:静态声明,即隐式注册函数格式要求:Java_包名_类名_方法名动态注册,即显式注册JNI_OnLoad函数注册然后我使用的是动态注册,然后遇到的坑是初学ndk开发,忘记把自己的函数添加进数组里,就是下面的gMethods[] ,然后一直报错No implementation foun...原创 2019-06-18 03:43:23 · 373 阅读 · 0 评论 -
添加宏操作到鼠标右键
使用apktool,或者其他打包解包命令,每次都命令行敲一遍,感觉好累,生产效率太低,看到老师添加到了宏命令,然后放到鼠标右键用来实现直接对着apk右键发送到,直接在当前目录解包。然后我就是想知道鼠标选中这个参数在命令里怎么写,然后网上一大堆博客都在总体介绍bat脚本所有语法,其实没必要了解,只要知道%~1 代表鼠标选中的文件即可。比如我这个是打包所以bat里面这个么写java ...原创 2019-06-18 16:13:03 · 2737 阅读 · 0 评论 -
Android简单回顾
Android简单回顾Android runtime包括一些核心库和虚拟机。另外Android的进程间通信通过binder。像一些插件就在application Framework层作文章。组件与applicationActivity:通常一个Activity就是一个单独的屏幕BroadcastReceive:广播接收器没有用户界面Service:具有较长的生命周期,没有用户...原创 2019-06-22 21:38:32 · 139 阅读 · 0 评论 -
dex文件格式笔记
Dex是Dalvik Executable的简称Dex文件包含了编译java生成的.class文件,由dx工具将java字节码转化为smali字节码apk安装后,对于dalvik第一次运行系统完成dex优化,转化为odex文件,存放在/data/dalvik-cache目录下,执行时加载odex文件到内存,art虚拟机是转成oat文件,都是在前后加些odex优化仅在dex文件之上添加头和数据...原创 2019-06-26 17:57:36 · 348 阅读 · 0 评论 -
elf文件的linker加载流程
ELF格式文件是UNIX系统常见二进制文件格式常见有三种文件类型:可执行文件可重定位文件(就是.o,链接起来就是静态链接库)共享目标文件(.so)ELF文件格式从链接视图角度分为三部分:ELF文件头、节区(section)以及节区表(section table)从装载视图角度也分为三部分:ELF文件头、段区(segment table)表以及段区左边链接视图。右边装载视图...原创 2019-06-27 01:08:08 · 1249 阅读 · 1 评论 -
Android的java的native hook
由于linux操作系统驱动模块加载机制的限制和release版的rom通常未开启模块加载机制,使得我们不能像Windows操作系统编译驱动,在R0层做驱动监控和对抗。Hook的目标就从内核层转到了应用层。Android平台由于分层特点,可将hook分为两种:Java层hook,通过注入一个dex文件,hook java函数Native层hook so注入,hook c函数HOOK函数分三步...原创 2019-06-27 02:34:11 · 1162 阅读 · 0 评论 -
Android的inline hook
arm平台与其他平台的inline hook原理一致,均为函数arm字节码替换由于指令集的特点,arm平台的inline hook较为复杂:1、存在arm指令集和thumb指令集2、无法单纯使用B指令直接跳转,因为b指令跳转范围优先3、存在literal指令,与当前PC值相关,需要对指令进行修正以arm指令集作为hook实例由于arm架构特性,每次修改代码需要刷新cache,因为指令...原创 2019-06-27 18:33:55 · 1219 阅读 · 0 评论 -
JNI Eclipse项目导入到Android Studio详细步骤
学习ndk开发,上课的demo项目是eclipse的,需要将eclipse的项目一直到Android Studio,发现带JNI和so的文件移植起来需要改很多配置,花费了很长的时间,照着网上的文章博客修改,发现很多博客要么就是写了不是很清晰,对于我这种渣渣新手看了仍然很晕,所以自己移植成功后记录一下,加强理解。环境Android Studio是3.2.0。首先用Android Studio...原创 2018-11-23 15:52:16 · 765 阅读 · 0 评论