- 博客(34)
- 收藏
- 关注
原创 python反序列化
序列化:将内存中的不可持久化和传输对象转换为可方便持久化和传输对象的过程。反序列化:将可持久化和传输对象转换为不可持久化和传输对象的过程。Python中提供pickle和json两个模块来实现序列化与反序列化,pickle模块和json模块,其中用于实现序列化,用于实现反序列化。我们在使用 pickler 的时候,我们要序列化的内容,必须经过 Pickle Virtual Machine (PVM)。它是 Python 语言中的一个虚拟机,用于序列化和反序列化 Python 对象。
2025-12-17 15:58:24
402
原创 AFL++测试工具
AFLplusplus/AFLplusplus: The fuzzer afl++ is afl with community patches, qemu 5.1 upgrade, collision-free coverage, enhanced laf-intel & redqueen, AFLfast++ power schedules, MOpt mutators, unicorn_mode, and a lot more!https://github.com/antonio-morales/Fuz
2025-10-17 16:13:37
339
2
原创 网络信息搜集技巧
如果你想知道两种(相当普通的)食物是如何相互比较的,你可以在谷歌上快速搜索,看看它们在卡路里、脂肪、蛋白质、胆固醇、钠、钾和其他营养素上有何不同。这种类型的搜索对于年份(如下所示)、价格或任何您想要提供一系列数字的地方都是有用的。假设你要在搜索中包含一个单词,但是也希望包含相似单词或同义词的结果。如果你只需要查一个电话号码的区号,只要输入三位数的区号,谷歌就会告诉你它的来源。一个术语出现在页面的标题,另一个术语出现在页面的其他地方,如在文本或网址。需要在一个特定的网站上搜索与某个短语相匹配的内容。
2025-10-16 11:46:24
360
原创 TEA系列算法
明文8字节(64位bit)为一组,密钥16字节(128位bit)为一组。绿色是加法,红色是异或。流程1:1、首先TEA加密解密是将原文分组为8字节,所以从两边各自传入四个字节2、将右边传入的这4个字节称呼为M,M进行了三个部分的操作,M左移4位与K[0]相加,M与δ相加,M右移5位与K[1]相加,这三个部分算出的值再异或(ac)3、将左边传入4个字节称呼为N,N=N+M(这里M是异或后的值)流程2:接着就到了下面这个部分,这里的话M和N交换了位置,流程几乎不变。
2025-10-16 11:36:06
501
原创 ctf流量分析
网络中有哪些主机(IP、主机名、操作系统)。传输了哪些文件(图片、文档、可执行文件)。泄露了哪些凭证(明文的用户名和密码)。发送了哪些邮件或消息。访问了哪些网站和域名。
2025-09-28 00:19:03
435
原创 2025长城杯线上初赛wp
发现写入内容是"Z.m.x.h.Z.3.t.k.O.T.g.4.Z.W.I.1.Z.m.N.k.Y.T.E.0.O.D.h.m.Y.T.N.k.M.z.A.y.N.G.E.4.N.z.g.w.Y.m.J.j.Z.H.0.=">fffllagg1.txt。所有模型均通过 torch.save(model.state_dict(), path) 保存权重字典,符合目标系统中 model.load_state_dict 的加载要求,确保上传后能被正确解析。# 修改最后一层的偏置,使其总是输出接近0的值。
2025-09-19 09:07:02
727
原创 c语言中实现线程同步的操作
在多线程 / 多进程并发时,为避免共享资源(如内存变量、硬件设备、文件)被同时修改导致的数据不一致,需要通过 “同步机制” 控制谁能访问资源 ——“获取同步权限” 就是线程 / 进程申请这种访问资格的过程。
2025-09-14 21:34:26
685
1
原创 常用查找算法
广度优先搜索(也称宽度优先搜索,缩写BFS,以下采用广度来描述)是连通图的一种遍历策略。因为它的思想是从一个顶点V0V0开始,辐射状地优先遍历其周围较广的区域,因此得名。一般可以用它做什么呢?一个最直观经典的例子就是走迷宫,我们从起点开始,找出到终点的最短路程,很多最短路径算法就是基于广度优先的思想成立的。哈希表又叫散列表通过其关键字和下标存在映射关系,时间复杂度为O(1),但当关键字变得复杂,还使用恒等关系的映射就不再适合,比如关键字不连续,关键字很大等情况,会造成空间浪费。
2025-09-14 00:09:43
918
原创 寒夜破晓,冬至终章 题目:TreRe
如上面和下面代码,就是又进行了一个异或,然后验证字符,至此逻辑就很简单了,就是我们提取字符M@ASL3MF`uL3ICT2IhUgKSD2IeDsICH7Hd26HhQgKSQhNCX7TVL3UFMeHi2?我们从上往下看,如下,说明str_arry是一个char array数组类型,所以我们重新命名str_arry的类型为char star_arrt[64]从四个*(res-xx),和与0x3F以及base64table的跟进,我们可以推定这个就是base64的换表。如上,我们跟进这个函数。
2025-09-07 14:14:25
297
原创 Base64算法实现
Base64是一种二进制到文本的编码方式,而且编码出的字符串只包含ASCII基础字符。其设计目的是为了解决各系统以及传输协议中二进制不兼容的问题而导致信息丢失的问题。Base64使用到的64个字符: A-Z 26个,a-z 26个,0-9 10个,+ 1个,/ 1个。
2025-08-13 23:54:41
307
原创 游戏资源解包
010打开文件UnityFS 是 Unity 引擎用于存储模型、贴图、动画等数据。示例里能看到 2022.3.44f1 ,是 Unity 编辑器的版本号(2022 系列、3 子版本、44f1 补丁),说明文件由该版本 Unity 生成。使用StudioGUI解包发现无法识别,提示bundle加密常见的加密方式如下:http://Addressables.cn秘钥加密、转存二进制后自定义加密、文件头部添加这个需要对apk进行逆向找到解密逻辑。这里有个得到key后可以进行解密的项目。
2025-08-08 11:45:49
3395
原创 汇编传参和调用约定
原码、反码、补码是表示带符号整数的不同表示方法。原码:直接使用最高位表示数值的正负反码对原码的数值部分(符号位除外)取反表示负数。+5:00000101,正数反码与原码相同,不取反。-5:10000101,取反得到11111010补码正数的补码与原码相同。-5:10000101,先取反11111010,然后加1得到补码11111011。
2025-08-05 09:01:34
1118
原创 攻防世界-Mobile-easyjni
Base64是一种二进制到文本的编码方式,而且编码出的字符串只包含ASCII基础字符。其设计目的是为了解决各系统以及传输协议中二进制不兼容的问题而导致信息丢失的问题。Base64使用到的64个字符: A-Z 26个,a-z 26个,0-9 10个,+ 1个,/ 1个。
2025-08-04 19:25:16
391
原创 c++读取和修改软件内存数据
项目创建完成后,主对话框位置:资源文件->MFCApplication1.rc,双击,MFCApplication1->Dialog->IDD_MFCAPPLICATION1_DIALOG。右键编辑框->添加变量->输入变量名称,类型默认即可。创建项目->MFC应用->应用程序类型:基于对话框->使用MFC:在静态库中使用MFC。使用VS Studio:创建新项目-> c++ ->MFC项目。右键新建的Dialog窗口,添加类,类名不要取中文。CE选择游戏后打开查看内存->工具->注入DLL。
2025-08-04 16:42:49
1021
原创 安卓加固脱壳
AIDL 本质上是一种描述语言,用于定义客户端和服务端之间进行通信的接口。通过 AIDL 定义的接口,一个 Android 应用中的不同进程(例如一个应用中的主进程和后台服务进程)可以相互调用对方提供的方法,就像调用本地方法一样。
2025-08-03 20:11:44
1761
原创 smali基础
1.避免与局部变量冲突:方法内部的局部变量会使用帧中靠前的寄存器,而参数放在尾部,两者在寄存器空间上自然分隔,避免了命名或存储位置的冲突。2.this引用:例如Java代码。
2025-07-31 23:06:03
775
原创 zorropub xctf
程序使用srand(seed)生成伪随机数。我们可以便携python脚本先找到符合条件的seed。然后爆破进程,把seed一个一个尝试。
2025-07-28 09:47:57
310
原创 APK-逆向2--C#Socket编程
domain:即协议域,又称为协议族(family)。常用的协议族有,AF_INET、AF_INET6、AF_LOCAL(或称AF_UNIX,Unix域socket)、AF_ROUTE等等。协议族决定了socket的地址类型,在通信中必须采用对应的地址,如AF_INET决定了要用ipv4地址(32位的)与端口号(16位的)的组合、AF_UNIX决定了要用一个绝对路径名作为地址。type:指定socket类型。
2025-07-27 19:43:04
1424
原创 格式化漏洞利用详解
,空格,-,#,0:在中,a、b、c被称为,其中,而字符串%d %d %d则是。依据C语言函数调用栈的规则,printf会默认首地址为的字是第n个格式化参数。如果想获取首地址为的字的值。我们可以使用100$作为标记,告诉printf此处的占位符需要的参数是第100个格式化参数。如此时计算机发现0xffffcf20是格式化字符,就会自动将其替换为esp+4,esp+8的位置会输出第三个格式化参数c的值。%p会输出栈中的内容,而%s将会把栈中的内容作为地址进行解析,读取对应地址的内容。
2025-07-23 23:01:14
1094
原创 c++面向对象
使用一个变量如cnt,去表示程序已经创建的对象数量,cnt这个数,与类有关,但又不属于他们,这种描述全局,且与对象属性无关的数据,叫做静态成员数据。读取静态成员数据的方法,叫做静态成员函数。
2025-07-23 22:47:18
516
原创 汇编 语言
原码、反码、补码是表示带符号整数的不同表示方法。原码:直接使用最高位表示数值的正负反码对原码的数值部分(符号位除外)取反表示负数。+5:00000101,正数反码与原码相同,不取反。-5:10000101,取反得到11111010补码正数的补码与原码相同。-5:10000101,先取反11111010,然后加1得到补码11111011。
2025-07-23 22:45:01
1058
原创 花指令的实现
JZ(Jump if Zero)和 JNZ(Jump if Not Zero);JMP 是无条件跳转指令。ida会优先反汇编false条件下的汇编指令即不跳转按着顺序来反汇编。利用jz和jnz的互补条件跳转指令来代替jmp。5.call&ret构造花指令。6.汇编指令共用opcode。3.jnx和jx条件跳转。
2025-05-20 18:50:05
254
原创 DyELF+bss段写入+got表修改
程序调用外部函数(如read)时,先跳转到 PLT 表,PLT 包含跳转到 GOT 的指令。是代码片段,用于第一次调用函数时触发动态链接器解析函数地址。: 存储外部函数在内存中的实际地址。首次调用函数时,动态链接器会解析其真实地址并写入 GOT 表。后续调用函数时,直接通过 GOT 表中的地址跳转,无需重复解析。故可后续修改got表实现跳转需要函数,称为got表劫持。现代系统默认启用,libc 的加载基地址每次运行都会变化。但(如system与write的偏移固定)。通过泄露write@got。
2025-03-30 14:17:52
828
原创 msf使用
usr/share/metasploit-framework/modules auxiliary:辅助模块,辅助渗透(端口扫描、登录密码爆破、漏洞验证) evasion:生成免杀的payload exploits:漏洞利用模块,包含主流漏洞利用脚本 payloads:攻击成功后在目标机器执行的代码,比如反弹shell post:后渗透模块,获取meterpreter后向目标发送一些功能性指令,比如提权 nops:调整shellcode前置nop指令的长度4.0msfvenom。
2025-02-04 18:34:23
1027
原创 objection工具实现调用程序activity---linux
laubch_activity:告诉objection要启动一个新的activity。在虚拟机中启动的话需要找wifi地址,198.xxx.xxx:11509。需要用到python3.x,如果有虚拟环境,开启虚拟环境。# 进入 frida-server 目录。frida-ps -R 都可以。名字在最上面加上activity。先在虚拟机linux上安装。端口号是模拟器运行的端口号。# 进行连接,选择一个进程。保留此窗口 shell,# 命令成功输出进程列表。执行完毕后为运行状态。# 修改 文件 权限。
2025-01-15 23:44:42
832
原创 图像隐写知识
一、“Extract Preview”(提取预览)这可能是一个功能的名称,用于从某个数据源中提取数据并生成预览。它允许用户在进行进一步操作之前先查看提取结果的大致情况。三、“Bit Planes”(位平面)在数字图像处理中,位平面是将图像的像素值按照二进制位进行划分得到的平面。例如,对于一个 8 位灰度图像,可以将其像素值拆分为 8 个位平面,每个位平面代表像素值的一个二进制位。这里可能是用于选择或操作图像的位平面。四、“Alpha”“Red Green Blue”(透明度通道、红、绿、蓝通道)
2024-11-05 16:18:05
940
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅