协议介绍

HTTP协议的全称是超文本传输协议,是一种请求与响应模式的、无状态的应用层协议,基于TCP/IP通信协议来传递数据。

URL

网址,又称为统一资源定位符,互连网上的每个文件都有一个唯一的 URL。

URL基本格式

scheme://[username:password@]hostname[:port][/path][;parameters][?query][#fragment]

HTTP协议格式

HTTP请求格式

HTTP响应格式

HTTP 状态码分类

GET /MyHTML HTTP/1.1
Host: 123.249.45.6:81

accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.7
accept-encoding: gzip, deflate, br, zstd
accept-language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
priority: u=0, i
sec-ch-ua: “Chromium”;v=”128”, “Not;A=Brand”;v=”24”, “Microsoft Edge”;v=”128”
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: “Windows”
sec-fetch-dest: document
sec-fetch-mode: navigate
sec-fetch-site: none
sec-fetch-user: ?1
upgrade-insecure-requests: 1
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 Edg/128.0.0.0

关于ELF

  可执行与可链接格式(Executable and Linkable Format,ELF),常被称为 ELF格式,是一种用于可执行文件、目标代码、共享库和核心转储(core dump)的标准文件格式。

阅读全文 »

frida对象

spawn(“PackageName”)

以挂起的方式启动进程

  • 需要传入参数,App包名
  • 返回一个进程pid

attach(target)

附加到已存在的进程

  • 传入的参数target可以是App包名,也可以是进程pid
  • 返回一个Session对象

resume(target)

恢复进程

kill(target)

杀死进程

get_usb_device()

获取device信息

  • 返回一个Device对象

get_device_manager()

获取设备管理器

  • 返回一个DeviceManager对象

DeviceManager对象

get_usb_device()

获取device信息

  • 返回一个Device对象

add_remote_device(location)

添加一个新的设备

  • 返回一个Device对象

Device对象

属性

  • id = device.id
  • name = device.name
  • icon = device.icon
  • type = device.type

spawn(“PackageName”)

以挂起的方式启动进程

  • 需要传入参数,App包名
  • 返回一个进程pid

attach(target)

附加到已存在的进程

  • 传入的参数target可以是App包名,也可以是进程pid
  • 返回一个Session对象

resume(target)

恢复进程

kill(target)

杀死进程

Session对象

create_script(script_name)

创建脚本文件

  • 返回一个Script对象

Script对象

load()

加载脚本

on(‘message’,callback)

如果第一个参数是'message',会调用callback函数。
把js中的数据发送到python来处理
与脚本中的send()配合使用

callback(message,data)

第一个参数接收send发送的数据
第二个参数未知

1
2
3
4
5
def callback(message,data):
if message["type"] == 'send':
print(u"[*] {0}".format(message['payload']))
else:
print(message)

post()

把python中的数据返回给js
与脚本中的recv配合使用
recv(func)

exports.rpcfunc(args)

通过python调用js脚本中的方法
与rpc配合使用

1
2
3
rpc.exports = {
rpcfunc: test
}

NewString

  • jstring NewString(JNIEnv *env, const jchar *unicodeChars,jsize len);
    从Unicode字符数组构造一个新的java.lang.String对象。

NewStringUTF

  • jstring NewStringUTF(JNIEnv *env, const char *bytes);
    用于从UTF-8编码的字符串常量中创建一个java.lang.String对象。(把C字符串转换为Java字符串)。

GetStringChars

  • const jchar* GetStringChars(JNIEnv *env, jstring string, jboolean *isCopy);
    返回指向字符串Unicode字符数组的指针。这个指针在调用ReleaseStringChars()之前一直有效。
    如果isCopy不是NULL,则将*isCopy设置为JNI_TRUE,如果进行了复制;或者设置为JNI_FALSE,如果没有进行复制。

pthread_create

  • int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
    void *(*start_routine)(void *), void *arg);
    • pthread_t *thread:
      指向 pthread_t 类型的指针,用于存储新创建线程的线程 ID。
    • const pthread_attr_t *attr:
      指向线程属性对象的指针,可以是 NULL,表示使用默认属性。
    • void *(*start_routine)(void *):
      线程的起始函数,这是一个函数指针,它指向一个函数,该函数接收一个 void * 类型的参数,并返回一个 void * 类型的值。
    • void *arg:
      传递给起始函数的参数。
    • 返回值
      成功返回0,否则返回错误码。

打开终端

win+R输入cmd,然后回车即可

Terminal 面板快捷键

  • Ctrl + Shift + d/t
    打开新的终端窗口
  • Ctrl + Shift + w
    关闭当前窗口
  • Alt + Shift + d
    划分窗格
  • Alt + Shift + 方向键
    调整窗口
  • Alt + 方向键
    窗口切换

终端命令

winver

查看系统版本

net share

管理共享资源,使网络用户可以使用某一服务器上的资源。

net user

1
2
3
4
5
6
7
net user

>>>
-------------------------------------------------------------------------------
Administrator blt DefaultAccount
Guest WDAGUtilityAccount
命令成功完成。
  • Administrator 这是Windows系统中的内置管理员账户,具有对计算机的完全控制权限
  • blt 这可能是一个普通用户账户或服务账户,具体取决于您的系统设置和用途。
  • DefaultAccount 这个账户可能是一个默认的用户账户,通常用于演示或测试目的。
  • Guest 这是Windows系统中的内置访客账户,通常用于临时访问计算机,权限有限。
  • WDAGUtilityAccount 这是Windows Defender Application Guard(Windows Defender应用程序防护)使用的账户,用于隔离浏览器中的活动,保护系统安全。

ipconfig

用于显示当前的TCP/IP配置的设置值。

PING

测试主机之间网络的连通性。
参数

  • -t:持续发送回显请求直到手动停止。
  • -n:指定发送回显请求的次数。
  • -l:指定发送数据包的大小。
  • -w:设置等待回显响应的超时时间。

nslookup

查询域名系统(DNS)以获取域名与IP地址之间的映射关系。

certutil

校验和
使用Windows下shell中集成的专门的工具来校验文件的MD5值、SHA1值、SHA256值
命令如下

certutil -hashfile filename MD5
certutil -hashfile filename SHA1
certutil -hashfile filename SHA256

主要用于在运行时进行动态链接和加载共享库。

dlopen

用于打开一个共享库文件,并返回一个句柄以供后续操作。

  • void *dlopen(const char *filename, int flag)
    • filename:共享库的路径(可以是绝对路径或相对路径)。
    • flag:控制加载行为的标志,例如 RTLD_LAZY 或 RTLD_NOW。

dlsym

用于查找并返回共享库中的符号地址,通常用于查找函数或全局变量。

  • void *dlsym(void *handle, const char *symbol)
    • handle:由 dlopen 返回的句柄。
    • symbol:要查找的符号名称。

dlclose

用于关闭由 dlopen 打开的共享库并释放资源。

  • int dlclose(void *handle)
    • handle:由 dlopen 返回的句柄。

dlerror

用于获取最后一个动态链接操作的错误信息。

  • char *dlerror(void)
    返回值:返回一个指向错误信息字符串的指针,如果没有错误则返回 NULL。