一个热爱技术的white hacker. Love Pwn & WEB & Android Reverse
post @ 2025-04-02
1
2
3
sudo apt-get autoremove open-vm-tools
sudo apt-get install open-vm-tools-desktop
sudo reboot

image-20250402143213496

Read More
post @ 2025-03-28

SVC 是ARM 架构中用于触发系统调用的指令。它类似于传统的 syscall 指令,主要用于在用户空间(user mode)和内核空间(kernel mode)之间进行上下文切换
作用:SVC 指令允许用户态程序请求操作系统提供的特权服务,通常是在用户程序需要执行特权操作(例如文件操作、内存分配等)时使用。执行流程:当执行 SVC 指令时,处理器会从用户模式切换到内核模式,操作系统会根据传入的参数和服务号决定执行哪个系统调用。执行完系统调用后,操作系统会返回并将控制权交还给用户程序。而在linux系统里面内存又分为内核态和用户态

SVC与中断

SVC 中断:当 SVC 指令被执行时,CPU 会触发一个中断,切换到内核模式,处理操作系统的服务请求。SVC 会提供一个中断号作为参数,这个参数通常用于指定要执行的系统调用编号(比如打开文件、创建进程等)。

  • 返回机制:操作系统会执行完相应的服务后,将控制权返回给用户程序。在返回时,CPU 会恢复到用户模式。
  • Syscall(系统调用)Syscall(System Call)是用户程序请求操作系统提供服务的一种机制。它是用户空间与内核空间之间的接口。用户程序不能直接访问内核资源,所以需要通过系统调用来向内核请求访问资源、执行特权操作等。
    • 作用:当用户程序需要执行特权操作时(例如访问硬件资源、修改内存保护、创建/删除文件等),它会发起一个系统调用。系统调用通常会由操作系统内核提供一组API来实现。
    • 工作原理:
      • 用户程序通过某种方式(比如调用一个库函数)发起系统调用。
      • 操作系统通过一个受保护的机制(比如通过软件中断或特殊的指令)来进行切换,将执行权从用户空间转移到内核空间。
      • 操作系统完成特定的操作后,返回执行结果并切换回用户空间。

Syscall函数里面的实现实际上就是一段汇编,这里面便是调用了svc这段指令。

image-20250328191344036

它无法被inlinehook Hook,所以会极大的提高安全程度。(update:搜到 svc 指令地址,仍然可以 inlinehook)

1
2
3
4
5
6
7
8
9
10
11
12
13
BTI c
MOV X8, X0
MOV X0, X1
MOV X1, X2
MOV X2, X3
MOV X3, X4
MOV X4, X5
MOV X5, X6
SVC 0
CMN X0, #1,LSL#12
CNEG X0, X0, HI
B.HI __set_errno_internal
RET
Read More

frida-server

image-20250328191117373

image-20250328191004227

frida-gadget.so

image-20250328191136744

image-20250328191143707

image-20250328191148336

frida-inject

image-20250328191213479

Read More

360 VMP 怎么分析?

Android Intent 重定向漏洞具体分析

so层自实现完整双向证书校验绕过?

Read More
post @ 2025-03-20

特殊符号

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
~  ⽤户家⽬录

- 标准输⼊(/dev/stdin)

. 当前⽬录

.. 上层⽬录

.file 隐藏⽂件,需要通过ls -a查看

| 管道符,⽤于联通两个命令,前⼀个的输出作为后⼀个的输⼊

& 出现在命令末尾,代表该命令后台运⾏

$ $VAR是取变量VAR的值,不存在则为空

; 标识⼀条命令的结束(默认是换⾏符标识命令结束)

< > 输⼊/输出重定向

反引号(`): 命令替换,执⾏命令并取出其输出内容

单引号('): 将字符串标记为⼀个词,可包含特殊字符

双引号("): 将字符串标记为⼀个词,可包含特殊字符,但其中的变量替换$VAR和命令替换`cmd`会先⽣效

cat命令

1
2
3
4
5
• -n: 为输出内容添加⾏号
• -v: 显示不可打印字符
• -E: 显示⼀⾏的末尾
• -T: 显示TAB
• -A: 等同于-vET

find

1
2
3
4
5
6
7
8
9
10
11
12
13
14
find [OPTION] [PATH] [-exec cmd]
• 查找指定路径下的⽂件,并调⽤命令进⾏处理
• 提供了极其丰富的过滤条件

• -size: 基于⽂件⼤⼩的过滤
• -perm: 基于⽂件权限的过滤
• -name/-regex: 基于⽂件名的过滤,⽀持通配符/正则
• -user/-group: 基于⽂件所属者的过滤
• -ctime/-atime: 基于⽂件访问/修改时间的过滤

• 默认执⾏的是将⽂件名输出到stdout
• 可通过"-exec <cmd> [OPTION] [{}] ;",为每个找到的⽂件执⾏命令
• {} ⽤来指代find找到的⽂件名
• ; ⽤于标识⼀条命令的结束,实际使⽤时需要转义(思考题:如果不转义,会发⽣什么?)

grep

1
2
3
4
5
• -n: 打印⾏号
• -i: 忽略⼤⼩写
• -o: 只打印匹配的内容(默认是打印整⾏)
• -r: 递归查找全部⼦⽬录中的⽂件
• --exclude/--include: 递归⼦⽬录时,跳过/只查找这些⽂件,⽀持通配符

sort

1
2
3
4
5
• 对给定字段排序:字符串,数字,⽉份
• 经常与uniq组合使⽤
• 先⽤sort对内容排序
• 再⽤uniq提取重复的/唯⼀的内容
• man sort; man uniq
Read More
post @ 2025-03-20

M3U8文件是指UTF-8编码格式的M3U文件。

M3U文件是记录了一个索引纯文本文件,打开它时播放软件并不是播放它,而是根据它的索引找到对应的音视频文件的网络地址进行在线播放。

这个是为了在线播放流视频诞生的,而这种视频最大的特点就是把原来的视频进行切片,所谓切片就是把一个完整的视频比如.mp4格式的切成多段.ts格式视频,然后生成一个对应切片片段视频的索引文件,这个索引文件就是m3u8。

image-20250320163123553

看到这个文件其实就是个索引文件,当然ts切片视频文件和m3u8文件放在同一目录下

.ts也是一种视频格式,其实是可以直接观看的,但是都是一段一段的,如何把这些一段一段视频合成一个完整的mp4就需要依靠m3u8这个视频索引文件了(ffmpeg工具)

image-20250320163154238

这张流程图大致的解释了现在视频网站的工作原理,后台利用工具进行视频切片,然后用户使用设备点播流视频,一边播放一边下载下一个视频切片非常方便。

Read More
post @ 2025-03-19

大一喜欢出一些题目,赚了一些小钱(比不上大厂一个月工资哈哈哈)

买了自己想买的Mac(为了学习捏)

Mac之旅 Android

记录自己买mac后学习

但是现在发现,mac只适合记录学习笔记,真要实战还得Window系统

问题太多了,而且大多数工具都不免费,我是穷逼买不起

Mac好不容易安装成功Android Studio

2023.12.15 第七届强网杯

Read More
post @ 2025-03-19

我记得第一次出校参加比赛叫“数据安全大赛”

郑州网络科技馆,那是我第一次出去住酒店,跟个土包子一样,那时候网安还热火热荼,其实也临近寒冬了。

粘一下当时的比赛成绩,一句话形容:“拼尽全力,无法战胜”

YYDS 中国移动

image-20250319185433705

粘一下当时写的总结

image-20250319185632613

现在大三下,感觉已经老了很多,也不像大一那样对所有比赛充满了热情。

ISCC比赛结果 (2)

2022数据安全大赛

Read More
post @ 2025-03-19

好怀念那时候,大一捏

我擦了啊,不是哥们,我保存的唯一一张排名图,让markdown给我彻底删除了?????

我擦我擦啊啊啊啊啊啊啊啊,

我与oacia师傅同窗啊,他在第4,我在第6,凸(艹皿艹 )罢了

image-20250319183352671

(⊙o⊙)

image-20250319184036937

1、Android

image-20250319184030600

image-20250319184112744

Read More
post @ 2025-03-18

1、Xposed原理介绍

Xposed 框架是一个运行在 Android 操作系统之上的钩子框架,是以模块扩展方式来实现对系统部分功能的修改。

app_process

Xposed 框架 Native 部分,用于替换原生 app_process,并为 XposedBridge 提供 JNI 方法。

XposedBridge
Xposed 框架 Java 部分,编译后会生成一个 jar 包,Xposed 框架的 app_process 会将此加入到系统 class path 中。

android_art
Xposed 框架定制的 Android ART

XposedInstaller
Xposed 框架插件管理 App

XposedTools
用于编译项目的工具集

Android 系统是基于 Linux 的,其第一个由内核启动的用户进程是 init 进程。init 进程随后会创建 zygote 进程,Android 应用程序进程都是由 zygote 进程孵化而来。zygote 所对应的可执行程序是 app_process,xposed 框架通过替换系统的 app_process 可执行文件以及虚拟机动态链接库,让 zygote 在启动应用程序进程时注入框架代码,进而实现对应用程序进程的劫持。

Xposed框架通过替换**/system/bin/app_process**程序来控制Zygote进程

在核心功能启动后,Xposed框架会通过HookZygoteInit类的handleLoadPackage方法,来判断当前进程是否是需要hook的应用程序进程。

如果当前进程需要hook,Xposed框架会开始进行hook操作。在hook操作中,Xposed框架会将Java层函数的指针替换为对应的native函数的指针,并将这些native函数注册为本地JNI方法。

Xposed框架会将Java层函数转换为native函数,并将这些native函数的指针保存在XposedBridge类的sHookedMethodCallbacks静态变量中。

Xposed框架会通过JNI的RegisterNatives方法,将这些native函数注册为本地JNI方法。

当应用程序调用被hook的Java层函数时,实际上会调用对应的native函数,从而实现hook操作。

Read More
⬆︎TOP