Android
文章平均质量分 94
kernweak
日子越来越有判头了
展开
-
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 · 2299 阅读 · 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 · 343 阅读 · 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 · 1097 阅读 · 1 评论 -
Xpose学习笔记
Xpose原理控制zygote进程,通过替换/system/bin/app_precess程序控制zygote进程,使它在系统启动过程中加载Xposed framework的一个jar文件即XposedBridge.jar,从而完成对Zygote进程及创建的Dalvik/ART虚拟机的劫持,并且能够允许开发者独立替代任何class,例如framework本身,系统UI或者随意一个app。控制程序两种方式,通过attach之后ptrace调试器,通过定制rom。Xpose安装Android5.0以后:原创 2021-06-04 14:58:38 · 1929 阅读 · 0 评论 -
《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 · 239 阅读 · 0 评论 -
《Android软件安全权威指南》(ARM)阅读笔记
Android arm EABI每种CPU与指令集的组合都有自己的应用二进制接口(Application Binary Interface ABI)。ABI可以精确定义应用的机器代码在运行时如何与系统进行交互。嵌入式设备ABI称为嵌入式应用二进制接口(EABI):机器代码的CPU指令集。运行时内存存储和加载的字节顺序。可执行二进制文件(列如共享库)的格式,以及他们支持的内容类型。解析内容与系统之间数据的各种约定。包括对齐限制,如何使用堆栈等。运行时可以用于机器代码的函数符号列表。基于ARM的原创 2020-09-09 00:36:35 · 219 阅读 · 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 · 319 阅读 · 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 · 692 阅读 · 0 评论 -
《第一行代码笔记》目录与日志
andorid大致分为:Linux内核层,系统运行库层,应用框架层,应用层。Linux内核层为硬件提供底层驱动系统运行库层为android提供主要特性支持如数据库支持等,这层还有Android运行时库,另外还有虚拟机也在这层。应用框架层提供了构建应用程序用到的各种API。andorid四大组件:Activity,Service,Broadcast Receiver,Content ...原创 2020-01-01 22:25:57 · 211 阅读 · 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 · 832 阅读 · 0 评论 -
Android进程注入
Android平台的进程注入和linux平台的注入技术类似,采用ptrace机制来实现ptrace在执行系统调用之前,内核会先检查当前进程是否处于被“跟踪”(traced)的状态。如果是的话,内核暂停当前进程并将控制权交给跟踪进程,使跟踪进程得以察看或者修改被跟踪进程的寄存器。ptrace()是一个系统调用,它允许一个进程控制另外一个进程的执行.不仅如此,我们还可以借助于ptrace修改某...原创 2019-06-27 22:57:44 · 2966 阅读 · 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 · 1245 阅读 · 0 评论 -
smali语法复习
特点Smali汇编指令特点:参数操作从目标到源的顺序(类似x86汇编)根据字节码的类型和大小,添加后缀消除歧义64位常规字节码添加-wide特殊字节码添加具体类型基于寄存器操作,不存在传统汇编的栈操作,没有pop,push每个寄存器均为32位,64位数据类型用连续两个寄存器存储表示基本类型V void (只能用于返回值类型)Z booleanB byteS sho...原创 2019-06-19 00:22:07 · 1200 阅读 · 0 评论 -
ARM汇编笔记
简介现阶段ARM已存在64位体系架构即armv8,指令体系分为:AARCH_64和AARCH_32Armv7a以及之前的架构使用的arm指令称为A32(ARM)和T32(Thumb),armv8使用的64位指令成为A64,兼容32位(ABI级并不兼容,两种执行模型)体系处理器模式:用户模式(User):ARM处理器正常的程序执行状态(相当于intelR3)快速中断模式(FIQ):...原创 2019-06-19 16:59:19 · 861 阅读 · 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 · 2313 阅读 · 0 评论 -
NDK开发JNI动态注册与静态注册
下面联系就是ndk开发联系,为了熟悉java和C/C++交互。首先Native方法的注册方式有两种:静态声明,即隐式注册函数格式要求:Java_包名_类名_方法名动态注册,即显式注册JNI_OnLoad函数注册然后我使用的是动态注册,然后遇到的坑是初学ndk开发,忘记把自己的函数添加进数组里,就是下面的gMethods[] ,然后一直报错No implementation foun...原创 2019-06-18 03:43:23 · 389 阅读 · 0 评论 -
添加宏操作到鼠标右键
使用apktool,或者其他打包解包命令,每次都命令行敲一遍,感觉好累,生产效率太低,看到老师添加到了宏命令,然后放到鼠标右键用来实现直接对着apk右键发送到,直接在当前目录解包。然后我就是想知道鼠标选中这个参数在命令里怎么写,然后网上一大堆博客都在总体介绍bat脚本所有语法,其实没必要了解,只要知道%~1 代表鼠标选中的文件即可。比如我这个是打包所以bat里面这个么写java ...原创 2019-06-18 16:13:03 · 2762 阅读 · 0 评论 -
Android简单回顾
Android简单回顾Android runtime包括一些核心库和虚拟机。另外Android的进程间通信通过binder。像一些插件就在application Framework层作文章。组件与applicationActivity:通常一个Activity就是一个单独的屏幕BroadcastReceive:广播接收器没有用户界面Service:具有较长的生命周期,没有用户...原创 2019-06-22 21:38:32 · 147 阅读 · 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 · 370 阅读 · 0 评论 -
elf文件的linker加载流程
ELF格式文件是UNIX系统常见二进制文件格式常见有三种文件类型:可执行文件可重定位文件(就是.o,链接起来就是静态链接库)共享目标文件(.so)ELF文件格式从链接视图角度分为三部分:ELF文件头、节区(section)以及节区表(section table)从装载视图角度也分为三部分:ELF文件头、段区(segment table)表以及段区左边链接视图。右边装载视图...原创 2019-06-27 01:08:08 · 1273 阅读 · 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 · 1180 阅读 · 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 · 780 阅读 · 0 评论