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...
初识TCP
TCP一、TCP特点 面向连接的协议,在传输数据前需要建立一条可靠连接 流式协议,TCP将数据看作字节流。传输过程中数据是可以被分割为多个数据包在接收端重新组装的。 TCP通过校验和\序列号和确认应答来确保数据的可靠传输,出错回重新传输。 服务器被动连接,客户端主动连接。 二、TCP编程server端1.创建套接字socket()123456789101112131415161718192021#include <sys/types.h>#include <sys/socket.h>int socket(int domain, int type, int protocol); 功能: 创建一个套接字,返回一个文件描述符参数: domain:通信域,协议族 AF_UNIX 本地通信 AF_INET ipv4网络协议 AF_INET6 ipv6网络协议 AF_PACKET 底层接口 type:套接字的类型 SOCK_STREAM 流式套接字(tcp) SOCK_DGRAM...
X86汇编&内联汇编
X86汇编学习一、基础知识1.CPUCPU控制整个计算机运作和运算。要想让CPU工作,就需要向它提供指令和数据。 2.指令(1).汇编指令直接被CPU执行的指令 (2).伪指令指导汇编器工作的指令,不生成机械码。 段定义指令:如SEGMENT、ENDS,用于定义和结束一个段。 数据定义指令:如DB、DW,用于定义字节或字数据。 常量定义指令:如EQU,用于定义常量。 (3).符号指令用于标识变量、常量、代码段等,在汇编过程中被替换为具体的地址或值。它们没有对应的机器码。 标签:用于标识代码中的位置。 1LABEL: ; 定义一个标签LABEL 宏定义:如MACRO,用于定义宏,简化代码编写。 1MYMACRO MACRO ; 宏定义内容...