re 入门

RE入门——初学者常规做题步骤 以一道题来看一下逆向做题的常规步骤 (针对于初学者,比较简略,如有错误,敬请指正) 例题为BUU的刮开有奖,题目描述如下 第一步 查壳 拿到题目先看一下文件格式和有无壳,有壳则脱壳,无壳就可以根据文件格式直接静态分析了。 使用工具:DetectItEasy 或者 exeinfope 也可以在Linux下使用file命令可以看到是32位的PE文件,编译器和链接器这里能看出是什么语言编写编译的,如果有壳也会出现packer提示,指出是什么壳和壳的版本号。 第二步 查看题目文件 先看一下题目程序的内容和结构(在 阅读详情

总述

逆向一般都是先运行,了解程序大致功能,然后
不同的程序只有在相应的环境下才能运行
题目与工具链接:https://pan.baidu.com/s/1gdX74ko3d6HHt3uMWyrVoQ
提取码:q9hh

linux虚拟机安装

安装教程
https://blog.youkuaiyun.com/stpeace/article/details/78598333

VMware work(linux虚拟机安装所需的文件)

虚拟机
https://pan.baidu.com/s/1tzW2qr3ZQRyPaI7mRom2pA
提取码:e872

ubuntu16.04 iso(linux虚拟机安装所需的文件)

https://pan.baidu.com/s/1P_TPVTIj2aTz63yKke1tdQ
提取码:sru7

gdb-peda(ubuntu虚拟机中安装)

git clone https://github.com/longld/peda.git ~/peda
sudo echo "source ~/peda/peda.py" >> ~/.gdbinit
## andriod

安卓虚拟机下载https://www.yeshen.com/
安装jeb
1、将apk文件先放到虚拟机里面跑一下
安装相应的apk文件
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190913160844215.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01heG1hbGxvYw==,size_16,color_FFFFFF,t_70)
运行apk
![在这里插入图片描述](https://img-blog.csdnimg.cn/2019091316124194.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01heG1hbGxvYw==,size_16,color_FFFFFF,t_70)
大致可以推测出该apk的功能。应该是想要我们输入一个flag,进行判断,只有输入正确的flag才能通过验证。同时确定一个我们逆向时追踪的对象,onclick事件
2、将apk文件放入jeb中
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190913160410471.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01heG1hbGxvYw==,size_16,color_FFFFFF,t_70)
3、打开包窗口
点击左侧框的bytecode,选择相应窗口
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190913161047140.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01heG1hbGxvYw==,size_16,color_FFFFFF,t_70)
点击onclick,将会出现相应的汇编代码

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190913161349782.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01heG1hbGxvYw==,size_16,color_FFFFFF,t_70)
发现相关逻辑,onclick里面有if判断,只有当我们输入正确的flag时,我们才能通过验证
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190913161450710.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01heG1hbGxvYw==,size_16,color_FFFFFF,t_70)
分析check方法(双击check)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190913161639297.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01heG1hbGxvYw==,size_16,color_FFFFFF,t_70)
可以看出算法非常简单,就是将我们的输入与23做一个异或,然后与s做一个比较,所以我们可以写个脚本,倒推出flag的值。
```py
source=[113, 123, 118, 112, 108, 94, 99, 72, 38, 68, 72, 87, 89, 72, 36, 118, 100, 78, 72, 87, 121, 83, 101, 39, 62, 94, 62, 38, 107, 115, 106]

flag=''
for i in range(len(source)):
    t=source[i]^23
    flag+=chr(t)
print(flag)

windows

在windows下一般动态调试用ollydbg,静态用ida(ida被号称为逆向神器,逆天逆地逆空气)
这里我们将两种方法
0、首先先运行一下
在这里插入图片描述
也是让我们输入一个passwd,记住弹出窗口中的Incorrect Password这个字符串,这能帮我们快速定位到相应的关键函数。
1、ida静态分析
将相应的exe文件丢到ida里面
在这里插入图片描述
打开string 窗口
在这里插入图片描述
找到相应字符串
在这里插入图片描述
寻找他的交叉引用
在这里插入图片描述
在这里插入图片描述
按f5进行反编译
在这里插入图片描述
发现函数的关键算法,是个判断语句,只要我们的输入为Ea5yR3versing就能通过验证。至于为什么,这个首先要对函数堆栈有一定的了解。
在这里插入图片描述
可以看出来string、v3、v4、v5在堆栈上是连续的,而 GetDlgItemTextA(hDlg, 1000, &String, 100);这句话将使得我们文本框输入的值存放以string的地址为基地址的空间。
在这里插入图片描述
所以我们可以推测出passwd就是Ea5yR3versing。
在这里插入图片描述
2、当然很多时候我们并不能一下就能分析出函数的关键算法,这个时候就需要我们动态调试了

拿到题目后,发现是一个.exe程序。先放到PEiD里面检测一下,看其是否加壳。
PEiD
发现其是一个无壳的win32程序
先做一些试探,随意写一个密码
试探
抓住弹出的对话框中的关键字incorrect Password
用ollydbg将其打开
3
利用中文搜索
这里写图片描述
找到incorrect Password,点进去,找到相关函数。
这里写图片描述
记住00401135地址,并找到上一级跳转(根据红线往上找)
这里写图片描述
发现有四个条件判断语句的跳转地址为00401135,给他们分别下好断点
这里写图片描述
重新载入程序,并在第一个断点处停止
cmp byte ptr ss:[esp+0x5],0x61此时esp+0x5所指的地方为堆栈19FA75,发现这一块的数据是我们的输入数据12345678的ascii码形式(3132333435363738)
,将我们输入数据的第二个字符**“2”与0x61(‘a’的ascii码)比较,所以第二个字符既是’a’**
这里写图片描述
因为我们输入数据与flag并不相同,所以程序将会跳转,我们可以修改相关标志位使其不要跳转,继续跑下去
这里写图片描述
到第二个断点处,esp+0xA == 19F7D6 ,第三个字符开始的地址,将我们的输入的第三个和第四个字符与**“5y”** 相比较,flag的第三个和第四个字符既是 “5y”
这里写图片描述
到第三个断点处,esp+10==19F7D8 ,是我们输入数据的第五个字符的起始位置,将我们输入数据的第五位往后的字符与**“R3versing”相比较,所以五位往后的字符既是“R3versing”**
这里写图片描述
到第四个断点处,esp+0x4 == 19F7D4,是我们输入数据的第一个字符的位置,将我们输入数据的第一位往后的字符与0x45 既 ‘E’相比较,所以第一位的字符既是’E’
综上所述,我们将上面零散的flag碎片拼凑到一起既是完整的flag–>Ea5yR3versing
这里写图片描述

2021.05.25 XCTF入门RE | CTF - RE 样本编译方式CPython南邮Py.pyc C Python 支持所有Python版本的Pyc反编译工具(在线) 或者下载pyc的反编译工具uncompyle6 南邮Py.pyc 反编译后的源码为: import base64 def encode(message): s = '' for i in message: x = ord(i) ^ 32 x = x + 16 s += chr(x) return base64.b64en 阅读详情

相关推荐

NUCLEO-G474RE+CubeMX入门实操教程

本文使用NUCLEO-G474RE开发板配合CubeMX软件,实现一个点亮led的操作,主要目的是给第一次接触CubeMX这个软件的朋友提供一点点帮助,同时掌握NUCLEO-G474RE基础操作。

2303_77880628的博客 2967

Reversing - Easy Crack

1. od打开,首先右键搜索字符 定位关键字‘congratulation!!’,应该意识到,程序成功运行后,应该会走到这一步,点进去。 2. 向上断点查看,会看到一个call和一个cmp语句, 首先,将一个字符与‘ox61’,即‘a’比较,相等即继续往下走,确定一个字符‘a’,改下面的jnz语句,单步执行,再往下发现字符串‘5y’ ‘5y’与我输入的字符串(12356789)一起出现,可...

宗泽的博客 257

逆向入门——Re题解

前言 又是划水的最近,花了几天时间来入门逆向,二进制师傅是大爷,觉得自己会一点onlydbg和ida啥的,来做一做攻防世界的Re题,发现很多都是要看题解才能完成(tcl没办法),这里碰到两个有意思的题来分析分析 正文 csaw2013reversing2 拖到Exeinfo里看一看发现: 无壳,在拖到PEiD中看看发现: 话不多说,直接ida pro32打开看一看,找到main()函数后一键F5看看伪码: 用我菜的不能再菜的C语言基础分析一下大致就是: 先创建了一个私有堆,然后在这个私有堆上分配了指定

crispr的博客 2507

实验吧CTF逆向题目easycreakme题解

在实验吧看到这道题 题目链接 http://ctf5.shiyanbar.com/reverse/easycreakme/Easy_CrackMe.exe.bak   我是直接用的脱壳后的 https://pan.baidu.com/s/1qYLZaXm      IDA载入很清楚的可以发现先后与a,5y,R3versing,E进行比较 若都

iqiqiya的博客 3900

生成式引擎优化(GEO)标准化操作流程:构建高效AI生成系统的全链路指南

GEO是针对生成式AI的内容优化策略,通过提升内容在AI生成答案中的引用优先级实现品牌传播。相比传统SEO,GEO使内容直接嵌入AI答案,无需用户点击链接。核心流程包括:1)逆向拆解AI问答场景,结构化知识资产;2)生产权威内容(白皮书、专利数据)和算法适配内容(PCOE模板);3)技术实现(数据投喂、模型微调);4)331渠道分发策略;5)效果监控与动态防御。需注意采用结构化数据标记、主动提交训练数据,并避免简单复制SEO策略。2025版强调内容权威性和语义优化,通过AI原生内容工程实现高效曝光。

解锁AI流量新红利!🚀 GEO优化(生成引擎优化)助您掌控AI搜索,让AI成为您的品牌最佳代言人! 1162

从GitHub到海浪模拟:手把手教你配置WAVEWATCHⅢ 6.07.0的完整开发与测试环境

本文详细指导如何在Ubuntu系统中配置WAVEWATCHⅢ 6.07.0的开发与测试环境,涵盖虚拟机设置、依赖安装、源码编译及案例验证的全流程。通过步骤化教程,帮助科研人员快速搭建高效的海浪模拟平台,提升海洋数值模拟的研究效率。

weixin_42568801的博客 324

RE入门题

RE入门题 题目 给了一个附件re 首先用Exeinfope看一下是多少位的 从图片中可以看出它是64位的,之后运行64位的ida 新建一个,将re文件拖进去,找到主函数main 按F5进行反编译,就可以看到该程序的伪代码: int __cdecl main(int argc, const char **argv, const char **envp) { char v4[32]; // [rsp+20h] [rbp-40h] BYREF _DWORD v5[6]; // [rsp+40h

qq_52964803的博客 943

Node框架之NestJS入门学习

文章主要分为三部分:1 NestJS 与Egg对比2 NestJS 基础知识介绍3 使用NestJS快速搭建应用,实现CURD操作e-link文档Egg官网NestJS 官网NestJS中文文档(非官方)

十九万里的博客 4742

【RE】三个入门级RE的writeup

01 re0_0 首先用IDA64位打开文件,F5,发现神秘的judge函数。 judge函数被加密了,转到汇编,是个样子的,无法反编译。 这个时候取消judge的定义【快捷键U】,在IDA的python栏中输入代码如下。 judge=0x600B00 for i in range(182): addr=0x600B00+i byte=get_bytes(addr,1...

weixin_42210074的博客 1216

WSL中使用VMD图形化界面

【代码】WSL中使用VMD图形化界面。

handsome213的博客 840

保姆级教程:用HFSS 2023 R2搞定GPS右旋圆极化微带天线(从建模到优化全流程)

本文提供了一份详细的HFSS 2023 R2教程,指导读者从零开始设计GPS右旋圆极化微带天线。涵盖建模、仿真和优化全流程,特别关注圆极化特性的实现与优化,帮助工程师快速掌握天线设计的关键技术。

weixin_42557830的博客 170

Re库入门

Re(正则表达式)库入门 一:正则表达式的语法 1、正则表达式语法由字符和操作符构成 P ( Y | YT | YTH | YTHO ) ? N 2、正则表达式的常用操作符 操作符 说明 实例 . 表示任何单个字符 [ ] 字符集,对单个字符给出取值范围 [abc]表示a、b、c,[a‐z]表示a到z单个字符 [^ ] 非字符集,对单个字符给出排除范围 [^abc]表示非a或b或c的单个字符 * 前一个字符0次或无限次扩展 abc* 表示 ab、abc、abcc、abccc等

qq_43639438的博客 400

vscode 配置 codeql

vscode 配置 codeql

SHELLCODE_8BIT的博客 1439

RE库入门

一正则表达式的表示类型 raw string(原生字符串类型) re库采用raw string 类型表示正则表达式,表示为 :r’text’ 例如:r’[1-9]\d{5}’ r’\d{3}-\d{8}|\d{4}-\d{7}’ raw string 是不包含转义符的字符串 二RE库主要功能函数 re.search(pattern,string,flags=0) 在一个字符串中搜索匹配正则...

yixin_oh的博客 1249

chembl_webresource_client 包数据接口下载chembl数据库;ZINC数据库下载、simles获取

点击进去https://zinc.docking.org/subclasses/kinase/predictions/,然后下载sdf模式,这里可以转化simles格式,如果下载csv里面没有包含simles。参考:https://github.com/chembl/chembl_webresource_client/blob/master/demo_wrc.ipynb。参考:https://zinc.docking.org/这是网页搜索查看,16条数据。这个数据这下载特别慢。

weixin_42357472的博客 3051

【GitHub项目实战】OpenAvatarChat 搭建实时交互数字人

OpenAvatarChat 项目构建了一个集成语音识别、大语言模型、语音合成、表情驱动和实时通信于一体的虚拟人系统,具备本地优先、模块解耦、快速部署的特点。系统通过配置文件统一管理组件,支持多种组合方案,适用于低资源设备和私有化部署场景。配置逻辑清晰、模块职责明确,能快速启动并实现端到端语音交互流程,为多模态系统学习与实践提供了结构完整的工程参考。

Mr数据杨 2752

2025 SWPU-NSSCTF 秋季招新入门训练赛(RE方向)

本文记录了作者参加NSSCTF2025入门赛的解题过程,共涉及15道题目,包括Xor、Base64、Rc4、UPX脱壳、IDA调试、汇编逆向、Z3求解、Debug调试、虚拟机逆向、Tea/XTea加密、Python逆向、迷宫求解、JS游戏修改等内容。作者通过分析代码逻辑、编写逆向脚本、使用调试工具等方法逐一破解,最终成功获取所有flag。这些题目虽然难度不高,但涵盖了常见的逆向工程技巧,展现了作者在CTF竞赛中的解题思路和技术能力。

dreamwang12的博客 2874

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

python re模块入门

简介 re模块是python独有的匹配字符串的模块,该模块中提供的很多功能是基于正则表达式实现的,正则表达式是所有语言通用的。 pattern 在介绍re模块的方法之前,我们先来介绍一下pattern的概念。 pattern可以理解为一个匹配模式,那么我们怎么获得这个匹配模式呢?很简单,我们需要利用re.compile方法就可以 。例如 pattern = re.compile(r'hello') 使用pattern即能提高代码的清晰度, 又能避免因正则表达式的重复编码而影响代码运行的速度。 flags

gu543684094的博客 270

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

python编程-25:Re(正则表达式)库入门

彭世瑜的博客 958

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

爬虫之Re库入门

学习地址:https://www.icourse163.org/learn/BIT-1001870001?tid=1003245012#/ 正则表达式 正则表达式的常用操作符 匹配IP地址的正则表达式 IP地址分四段,每段0-255 Re库的基本使用 正则表达式的表示类型 raw string类型(原生字符串类型) string类型,更繁琐 Re...

韩明宇 448

python re库使用入门

借鉴:https://blog.youkuaiyun.com/qq_44621510/article/details/90294757 一、re VS 正则表达式 1、正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。 正则表达式,又称规则表达式,通常被用来检索、替换那些符合某个模式(规则)的文本。 2、re模块 使用re模块来使用正则表达式 二、re...

不负韶华,加油! 1015

python爬虫入门(一) - requests库与re库,一个简单的爬虫程序

web请求是指向发送的请求,以此获得服务端提供的资源,或者与服务端进行交互。其中,客户端是的一方,通常指浏览器、移动应用等;服务端是的一方,指运行在服务器上的web应用程序。爬虫属于客户端,通过向服务端发送web请求,获取服务端的数据。

xiaoyuuoo的博客 2422

re正则入门

re模块是Python中的一个内置模块,用于支持正则表达式的操作。正则表达式是一种描述字符串模式的语法,它能够用来匹配、搜索和替换字符串。re模块提供了一系列函数,可以用来执行这些操作,如正则表达式的匹配、查找、替换等。通过re模块,可以更加灵活和高效地处理字符串。re模块经常被用来处理,爬虫中遇到的网站解析后的字符串信息,非常重要和高效。

2401_86120670的博客 675

33.Python从入门到精通—Python3 正则表达式 re.match函数 re.search方法 re.match与re.search的区别

接着使用re.match()函数进行匹配,如果匹配成功,match()函数返回一个匹配对象,否则返回None。在这个例子中,首先定义了一个要匹配的字符串 text,然后使用 re.findall() 函数来匹配所有的单词。在这个例子中,正则表达式 “hello” 匹配字符串 “hello world” 的开头,因此 re.match() 函数返回一个匹配对象。在这个例子中,首先定义了一个要验证的邮箱地址 email,然后定义了一个正则表达式 pattern,用于匹配合法的邮箱地址。函数返回一个匹配对象。

weixin_50804299的博客 6772
上一篇: De1CTF Weapon(IO_2_1_stdout)
下一篇: ctf - Dijkstra
Maxmalloc
博客等级 码龄8年 12粉丝 33原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值