常见加密算法整理
TEA家族TEA算法每一次可以操作64bit(8byte),采用128bit(16byte)作为key,算法采用迭代的形式,推荐的迭代轮数是64轮,最少32轮(可以改变)。 TEA系列算法中均使用了一个DELTA常数,但DELTA的值对算法并无什么影响,只是为了避免不良的取值,推荐DELTA的值取为黄金分割数(5√-2)/2与232的乘积,取整后的十六进制值为0x9e3779B9(也可以改变),用于保证每一轮加密都不相同。 XTEA:使用与TEA相同的简单运算,但四个子密钥采取不正规的方式进行混合以阻止密钥表攻击。Block TEA算法可以对32位的任意整数倍长度的变量块进行加解密的操作,该算法将XTEA轮循函数依次应用于块中的每个字,并且将它附加于被应用字的邻字。 XXTEA使用跟Block TEA相似的结构,但在处理块中每个字时利用了相邻字,且用拥有两个输入量的MX函数代替了XTEA轮循函数。上面提到的相邻字其实就是数组中相邻的项。 算法 年代 设计目标 缺点 /...
ollvm_BCF源码阅读
虚假控制流 BCF (Bogus Control Flow)原理: 虚假控制流混淆通过加入包含不透明谓词的条件跳转(永真or永假)和不可达的基本块,来干扰 IDA 的控制流分析和 F5 反汇编。 反混淆:1、将全局变量赋值并将 segment 设为只读。 对于常规的 ollvm 的 bcf 混淆来说,bcf 的不透明谓词都是处于 .bss段 中。 Edit->Segments->Edit segment 将 Write 复选框取消勾选, .bss段 就设为只读 2、d810 3、idapython patch 不透明谓词 源码位置:obfuscator\lib\Transforms\Obfuscation\BogusControlFlow.cpp 源码解析Pass结构与参数12345struct BogusControlFlow : public FunctionPass { static char ID; // Pass identification bool flag; BogusControlFlow() :...
IDA使用技巧
这两天做题的时候同届的pwn师傅sakura来问有没有可以修改IDA局部变量的方法。研究了一下感觉很有意思,于是单独开一篇文章记录我经常用到的IDA小技巧。 修改局部变量IDAIDA有两种实现方式,我在网上查到可以force new variable,但是我一直没成功。 实现效果: 步骤:因为可以观察到都是分开赋值的 我们在var_5那边按U 我们的目标是分出一个char+int,因为我得需求是让v2[0]单独分出来变成char,v2[1]-v2[4]变成四字节的int,所以我们选择1+4 在01的地方按N重命名成i,在05的地方选择建立数组(可以按A)在N成opcode 回到executeBrainfuck按F5 接着来改汇编 因为IDA在反编译的时候,会根据变量的访问方式和指令来推断变量类型 1mov dword ptr [rbp+opcode+1], 0 ; 赋值了 4 个字节 opcode[1]之后是 4 个连续的字节,IDA会推测opcode[5]这样的存储 我们把它nop掉 1、opcode+1字节数显着地4初始化,IDA...
AI_agent_zer0_to_one(二)
AI Agent 架构设计Agent 架构的基本组件AI Agent的架构通常包含以下基本组件:感知模块、推理引擎和行动执行模块。这些组件共同工作,使Agent能够感知环境、做出决策并采取行动。 感知模块:负责从环境中收集信息,并将其转换为Agent可以处理的格式。 关键特点: 多模态感知:处理视觉、听觉、触觉等多种输入。 数据预处理:滤波、归一化、特征提取等。 传感器融合:整合多个传感器的数据。 推理引擎:Agent的”大脑”,负责处理感知到的信息,做出决策,并生成行动计划。 关键特点: 知识表示:存储和组织Agent的知识和信念。 推理机制:基于规则、概率或神经网络的推理。 学习能力:从经验中更新知识和策略。 行动执行模块:将推理引擎的决策转化为具体的行动,并与环境进行交互。 关键特点: 动作映射:将高级决策转换为低级控制命令。 反馈控制:根据执行结果调整行动。 安全机制:确保行动不会危及Agent或环境。 常见的 Agent...
AI_agent_zer0_to_one(一)
AI Agent 概述与理论基础AI Agent 的定义&特点AI Agent:智能代理,一种能够感知环境并在其中采取行动以实现特定目标的计算系统 交互方式: 传统AI系统:通常是被动的,只在接收到输入时才进行处理。 AI Agent:主动与环境交互,持续感知和行动。 决策能力: 传统AI系统:往往基于预定义的规则或模型进行决策。 AI Agent:能够根据环境变化动态调整决策策略。 学习能力: 传统AI系统:学习能力有限,通常需要人工调整。 AI Agent:具有持续学习和自我改进的能力。 目标导向: 传统AI系统:通常专注于解决特定问题。 AI Agent:能够处理多个目标,并在目标之间进行权衡。 适应性: 传统AI系统:对环境变化的适应能力较弱。 AI Agent:能够快速适应新环境和新任务。 AI Agent 的类型与应用领域基于规则的 Agent通过预定义的规则来做出决策和执行操作。 12345678910111213class RuleBasedAgent: def __init__(self): ...
从零开始的大模型搭建之旅
一、搭建开发环境 python3 pytorch 1pip install numpy tqdm matplotlib 依赖库 1pip install numpy tqdm matplotlib vscode / Jupyter 二、准备一个数据集 WikiText OpenWebText anythingelse 1.准备环境(以openwebtext为例)12git clone https://github.com/JCPETERSON/OpenwebText.gitcd OpenwebText python版本得高一点,我用的3.12,3.8不行。 1pip install -r requirements.txt 如果老报错版本问题就直接下(没报错就不改) 1pip install beautifulsoup4 certifi chardet cssselect feedfinder2 feedparser htmlmin idna jieba3k lxml newspaper3k nltk numpy pandas pillow...
Android-课程总结
参考 正己老师的《安卓逆向这档事》 基础知识与手机建立连接模拟器123adb connect 127.0.0.1:端口号adb devicesadb -s 127.0.0.1:端口号 shell 注意:我的是mumu模拟器,每次都要到多开器里面查看adb端口建立连接,但是正常应该可以直接adb devices&adb shell。模拟器是这样的TT 真机手机开开发者版本和USB调试,然后通过数据线连接 有一些数据线只能充电,第一次连接电脑的时候手机上会弹出要求允许 USB 调试访问。确保你点击了“允许”按钮。 如果没弹出就换一根数据线/重启。 12adb devicesadb shell 文件传输传文件进windows123adb -s 127.0.0.1:16384 shell pm list packagesadb -s 127.0.0.1:16384 shell pm path com.chaoxing.mobileadb -s 127.0.0.1:16384 pull...
PE文件结构学习
资料来源:《逆向工程核心原理》和PE文件结构格式详解(完整版)【逆向编程】 (youtube.com) 一、PE文件基础1.可执行文件Windows:PE Linux: elf 2.PE文件特征PE文件指纹 3.PE结构 DOS头 DOS MZ头 IMAGE_DOS_HEADER(64字节) e_magic:4D5A是DOS签名,不可改 e_lfanew:78指向PE头开始位置,要改要一起改。 上面两个是PE指纹,操作系统用来识别是否是PE文件,其他地方可以随便改,因为IMAGE_DOS_HEADER是给16位平台看的,而我们现在的环境大部分是32位或者64位。 MS_DOS Stu,DOS存根,用来给链接器插入数据,随便改 NT头 IMAGE_NT_HEADERS12345typedef struct _IMAGE_NT_HEADERS { DWORD Signature; ``// PE标识 IMAGE_FILE_HEADER FileHeader; ``// 标准PE头 IMAGE_OPTIONAL_HEADER32 OptionalHeader;...
NSSCTF
NSSCTFeasyRE(虚函数表+反调试+内联函数)[SWPU 2019]easyRE | NSSCTF 没做出来,看了佬的wp才理清思路[原创] SWPUCTF 2019 easyRE-CTF对抗-看雪-安全社区|安全招聘|kanxue.com 分析main1234567891011121314151617181920212223int __cdecl main(int argc, const char **argv, const char **envp){ _DWORD v4[30]; // [esp-6Ch] [ebp-F8h] BYREF int v5; // [esp+Ch] [ebp-80h] _DWORD v6[27]; // [esp+10h] [ebp-7Ch] BYREF int v7; // [esp+88h] [ebp-4h] if ( sub_40EF90() ) return 1; // 反调试 sub_4026C0(0x6Cu); ...
IDApython学习
IDApython&IDCIDApython 官方文档:IDAPython | Hex-Rays Docs IDC 官方文档:IDC | Hex-Rays Docs 常用模块1.IDC与 IDA 命令行进行交互的模块,提供了很多 IDA 中指令相关的函数。 idc.get_name(ea):获取地址 ea 处的名称。 idc.get_func_name(ea):获取函数地址处的函数名称。 idc.set_name(ea, name):为地址 ea 设置一个新的名称。 idc.add_entry(ea, name, start, end):在 ea 处添加一个入口点。 idc.get_func(ea):获取 ea 处的函数结构。 2.IDAAPI与 IDA 的核心 API 交互的主要模块。包括了对 IDA 核心对象的访问,涵盖了地址、函数、节等许多底层操作。 idaapi.get_func(ea):返回地址 ea 处的函数对象。 idaapi.get_flags(ea):返回地址 ea...














