reverse
文章平均质量分 53
实战相关
术业有专攻,闻道有先后
这个作者很懒,什么都没留下…
展开
-
re学习(38)HGAME2020-re-Level-Week1-maze
可以分析出wasd控制行走,ws每次移动64格,可推断出迷宫每行有64列,ad每次移动4格,所以说每四格有3列无用数据。最开始v5被赋值了&byte_6020C4地址,所以&byte_6020C4就是最开始的起始位置。当v5 == &unk_60243C判断成功,也就是&unk_60243C是终点。这里v5要>= &byte_602080 并且 <= &unk_60247C。可以判断迷宫的地图在这段范围内。而起点是6020C4通过计算器计算,起点是下标为68的元素,我们只要找到起点,终点,迷宫就好了。原创 2023-10-06 16:31:05 · 196 阅读 · 0 评论 -
re学习(37)DASCTF 2023 & 0X401七月暑期挑战赛 controflow
程序通过改变栈里面的返回地址来控制程序的控制流 从而达到混淆的效果。在每个函数开头设置断点 然后观察程序的运行流程。异或 相加 异或 相减 相乘 异或等操作。要注意部分运算的索引是 从[10]开始的。左侧有许多被hook的函数。会发现输入的数据会进行。原创 2023-10-06 12:07:17 · 896 阅读 · 0 评论 -
re学习(36)看雪CTF 2017 -Crackme
刚开始用的是IDA分析,分析了半天也没有看出来什么,然后就在网上搜,还真搜出来了,直接上flag,解决了我的燃眉之急,哈哈,事后又看了看wp,才知道了真正的解法,还是应该总结的,毕竟有的题目是搜不到的......3、取key中第2位值为“5”的十六进制值即0x35,然后减去0x30,0x31-0x30 =5 ,接着就是1除以5得出浮点数0.2。,不相同则“error”这里验证key的值是否都为字符串“0”,如果4位的key又一个为“0”,则直接跳转到“error”弹出框。OD反汇编代码可以着色,比较醒目。原创 2023-09-01 12:00:07 · 242 阅读 · 0 评论 -
re学习(35)攻防世界-no-strings-attached(动调)
fgetws函数是从输入流stdin中获取0x2000个字符给ws,也就是说s2是关键了,s2由decrypt函数得出,decrypt是用户自定义函数,在这里学到了非系统函数的英文名会是题目给的暗示,所以这里是加密操作后与输入的比较,只要输入后与加密后的s2一样就会打印success或access这些字符串,那flag自然也在加密函数中了。其实在这里也是可以看到flag的,一个一个写出来就可以了,但是也可以提取数据,一块弄出来。然后通过eax赋值给[ebp+s2],也就是字符串s2,原创 2023-08-18 19:56:47 · 587 阅读 · 0 评论 -
re学习(34)攻防世界-csaw2013reversing2(修改汇编顺序)
所以我们把这个跳转也给nop掉,继续F8,执行完一个MessageBoxA(弹框)函数后,发现程序此时处于Running状态,弹出一个什么也没有的框,其实这是另外一个弹框函数,真正输出flag的弹框函数是后面那个,在我们之前那个ida的修改之后的汇编图也可以发现,确实是有一个没有被调用的弹框函数,所以我们之前可以那个nop掉的跳转改为跳转到下面那个弹框函数,但既然说了是nop大法,就nop到底。由于运行之后的是乱码,所以可以猜测生成flag的函数没有执行,所以需要跳到生成flag的函数执行,但是前面的。原创 2023-08-17 17:14:21 · 880 阅读 · 0 评论 -
re学习(33)攻防世界-secret-galaxy-300(脑洞题)
思路:题目是secret-galaxy-300,中文引导型暗示——隐藏的星系,运行结果显示了5个星系,而我前面跟踪的数组有6个星系,少了DARK SECRET GALAXY,那么这个就是关键点!IDA远程动态调试,下断点在return处,运行:(PS:运行且调试过IDA了,所以这里的数组名字和我一开始看到的不一样,IDA应该是自己又修改过了)总结:这是一个脑洞题,需要推理,根据运行结果找到隐藏的字符串,再根据隐藏的字符串找到关键代码,然后计算出flag。可执行文件,就分析32位的ELF文件吧。原创 2023-08-16 18:16:03 · 228 阅读 · 0 评论 -
re学习(32)【绿城杯2021】babyvxworks(浅谈花指令)
链接:https://pan.baidu.com/s/1msA5EY_7hoYGBEema7nWwA。wp:首先找不到main函数,然后寻找特殊字符串,主函数在sub_3D9当中,但是IDA分析错了。总结:IDA无法识别函数(F5大法失效原因)操作:与0x22异或,然后再加3。分析错误后,删除函数。原创 2023-08-15 18:55:22 · 315 阅读 · 0 评论 -
re学习(31)BUUCTF-xx(多层加密)
因为用户输入的为19位字符,也就是38位十六进制字符串,而上面生成了40位,所以要去掉最后两位,也就是去掉13。v30,v30+1,v31,v32在栈上存放的位置相连。小端序存放,需将其反过来写。1.如果涉及多字节了,应该考虑字节的顺序,比如这个题,就应该将处理的数据都转换为小端序。2.这个题的加密步骤有多步(3步:xxtea/乱序/异或)为tea系列,进函数内部查看知道为xxtea。四.最后将生成的十六进制数用小端序表示。使用findcrypt插件找到。其中第6部存储的数据为。交叉引用找到关键代码。原创 2023-08-15 17:46:25 · 270 阅读 · 0 评论 -
re学习(30)攻防世界-hackme(代码复原2)
首先载入IDA,Ctrl+F查找main函数,没有找到,然后Shift+F2查找字符串,发现特殊字符串,跟进,然后交叉引用查看字符串位置,寻找flag。思路: 1.输出成功,v26不为0,说明关系式:v21=((unsigned __int8)v24 ^ v20)→2.在汇编代码第37行,输入v16=v20,所以求的值为v20。→5.v24可以由汇编代码40行while计算出来。→3.根据关系式,求的值v20=v21^v24。→4.v21在第汇编代码第36行也可以提取出来。原创 2023-08-08 19:11:37 · 346 阅读 · 0 评论 -
re学习(29)攻防世界-CatFly(复原反汇编)
Windows提供的DLL文件中包含了允许基于 Windows 的程序在 Windows 环境下操作的许多函数和资源。三.C语言编写代码能力的提高,还有那跑了两分钟的代码(第一次见跑这么长时间的,还以为写错了.....)DLL(Dynamic Link Library)文件,即动态链接库,也有人称作应用程序拓展。DLL是一个包含可由多个程序,同时使用的代码和数据的库。发现关键代码如下:(用‘N’键进行了相关的名称修改)找到主要函数:(以及由上面三部分对应的代码部分)原创 2023-08-07 19:36:44 · 1743 阅读 · 1 评论 -
re学习(28)攻防世界 parallel-comparator-200(线程函数)
并且 generated_string[i] = just_a_string[i] 说明 返回值*(char *)result=0。——→*result = (argument[0]+argument[1]) ^ argument[2] 因为a^a=0。因为generated_string[i] = *(char *)result + just_a_string[i]——→随机数+密钥=flag。原创 2023-08-05 16:33:25 · 273 阅读 · 0 评论 -
re学习(27)攻防世界toddler_regs(字符串函数总结+交叉引用)
(2)若出现不相同的字符,则以第一对不相同的字符比较结果为准,比较结果由函数值带回。作用是把两个字符数组中的字符串连接起来,把字符串2连接到字符串1的后面,结果放到字符数组1中。因为字符串不能用等号来比较,所以就用strcmp函数来比较!4.strcpy(字符数组1,字符串2,n)—字符串复制函数。比较规则:(1)如果全部字符相同,则认为两个字符串相等;5.strcmp(字符数组1,字符串2)—字符串比较函数。找不到main()函数,查找字符串,发现特殊字符串。注意:字符串以‘\0’结尾!原创 2023-08-04 18:45:22 · 801 阅读 · 0 评论 -
re学习(26)攻防世界-re-BABYRE(IDA无法分析出函数-代码混淆)
栈帧是函数在执行时在栈上所创建的一块内存区域,用于存储局部变量,函数参数,返回地址等信息。在函数调用过程中,‘rbp‘用于维护栈帧的指针,以便在函数执行结束后能够恢复调用者的上下文。在函数调用过程中,通常会先将返回地址和其他寄存器的值(如’rbx‘,'rdi','rsi','rdx'等)压入栈中,然后将’rbp‘的值压入栈中。一般应对策略:使用按键U,告诉IDA,这是一个数据(通常是一个字节就够了),然后在下一个位置,点击C告诉IDA又可以开始按照代码来解释。原创 2023-08-02 18:50:52 · 373 阅读 · 0 评论 -
re学习(25)i春秋-re-basebasebase(函数构造+堆栈指针问题)
总结:1.flag——→base64加密(自定义)——→与3异或——→加密后数据(对比,相等成功)3.为什么要进行栈指针的调整?那个快捷键进行栈指针调整?自定义base64编码表。加密解密字符串的长度关系。Alt+K键(调整栈指针)4.base64解密。原创 2023-07-26 11:52:36 · 250 阅读 · 0 评论 -
re学习(24)攻防世界 Hello CTF(进制转换)
大致逻辑是将用户输入字符串单个与v13字符串单个进行对比,然后判断是否输入正确。v13对应的字符串是十六进制,直接用python转换过来即可。原创 2023-07-24 21:29:29 · 296 阅读 · 0 评论 -
re学习(23)BUUCTF 刮开有奖(中间变量的获取)
1.在伪代码中,有a1+ 4 * i,a1+4 *result,这样的字符。int占四个字节,所以需要*4.如果是char类型,就不需要.2.我们知道a1+4*i,也就是a1【i】,a1+4 * result,也就是a1【result】。将伪代码的寻址方式改为数组寻址,然后将*(_DWORD*) 删掉,因为这是汇编的表示。(思路:获取中间变量+倒推)所以伪代码变成了C语言代码。(逆向功能:算法分析)上图是主要分析的代码。原创 2023-07-24 17:20:33 · 132 阅读 · 0 评论 -
re学习(22)伪造CTF(谜之操作)
是指批处理文件,是一种可执行文件,由一系列命令构成,其中可以包含对其他程序的调用。该命令提示下输入批处理文件的名称,或者双击该批处理文件,系统就会调用。其他函数(敏感函数) createfileA:将flag放在一个文件中。4.检测import函数时无意发现问题(检测:下断点+远程调试,看看是否运行了。2.导入函数:(Import _scanf )但cmd.exe结尾,有问题 .bat文件 说明调用了一个.bat文件。在网上查找这个函数,看看这个函数有哪些部分组成,以及有什么样的功能。原创 2023-07-23 17:16:50 · 318 阅读 · 0 评论 -
re学习(21)BUUCTF-[GXYCTF]luck_guy1(switch语句)
初始化(case4)+操作(case5)————→flag(s:f1+f2)最后结果:flag{do_not_hate_me}原创 2023-07-22 15:43:56 · 198 阅读 · 0 评论 -
re学习(20) BUUCTF-SimpleRev(枚举思想)
思路:1.剖析加密算法,反着再来一次加密算法 →反。flag——————————————————→加密后的字符串str2(=text)2.枚举,看看哪些数据经过加密算法后得到数据str2(比如:Z3库) →正。思维导图: 加密算法(用到密钥key)最后结果:flag{kldqcudfzo}原创 2023-07-21 19:42:12 · 269 阅读 · 0 评论 -
re学习(19)[ACTF新生赛2020]easyre1(UPX脱壳)
文章链接:参考视频:B站。原创 2023-07-18 21:39:07 · 615 阅读 · 0 评论 -
re学习(18)[ACTF新生赛2020]rome1(Z3库+window远程调试)
看第二个循环,可知是比较result和经过第一个循环得到的v1比较(就是flag经过第一个循环后变成了result(v12))并且可以从开头看出v12=Qsw3sj_lz4_Ujw@l。再看第一个循环,发现是凯撒密码(看了老半天),大写字母平移12位,小写字母平移8位,其他字符不变。其主要内容在两个while循环中(从定义中可知flag位16个字符)。原创 2023-07-17 21:14:41 · 543 阅读 · 0 评论 -
re学习(17)Bugku-re-Tworld(使用DFS解决迷宫问题)
2.如果在本地cmd打开,即使输入正确,也会退出,无法查看;所以选择在pycharm的终端打开。载入IDA后发现有UPX壳,先用工具进行脱壳,然后载入IDA进行分析。注意:word中的第一个字符是大写,要修改成小写才可以成功。但是打开后发现还需要密钥,通过maze(迷宫)找到密钥。注意:1.运行的时候用脱壳前的exe文件,否则运行不了。用获得的第二个密钥,打开word文件,其中有flag。获得第一层密码~~~原创 2023-07-16 10:29:00 · 248 阅读 · 0 评论 -
re学习(16)[网鼎杯 2020 青龙组]singal1(魔法库:angr)
对于angr做法没有必要关注这些过程,我们只要知道我们想要得到puts("good,The answer format is:flag {}");并且不想得到 printf("what a shame..."),找到相应的地址。(刚开始是看这个视频做的,但是有点看不懂,后来发现了可以用angr库做,而且更加方便~)即最终的flag为flag{757515121f3d478}看不懂,转angr~~~进入这个函数里面看看。原创 2023-07-15 10:55:23 · 417 阅读 · 0 评论 -
re学习(15)BUUCTF 2019红帽杯easyRe(寻找数据+xor问题)
虽然带有easy,但是并不是那么easy。CTF偏向于算法,实战偏向于程序逻辑,执行的流程。原创 2023-07-13 19:23:17 · 480 阅读 · 0 评论 -
re 学习 (14)攻防世界-re-Shuffle(so easy)
拓展知识:srand()函数,time()函数,rand()函数。答案可以直接得到(有点不敢相信...)获取题目后,F5反汇编,获得伪代码。题目要求为找到字符串在随机化之前。原创 2023-07-06 18:08:04 · 84 阅读 · 0 评论 -
re 学习 (13)i春秋-re-Nonstandard(Base64,32)
之后再进入sub_401000,看看Base32的密钥是什么。后进入函数sub_401070 ,发现是Base32加密。进入函数sub_401480并且进行分析。也就是一个base32加密,字符集是。原创 2023-07-06 11:35:49 · 271 阅读 · 1 评论 -
re 学习 (12)i春秋-re-crackme(脱壳+xor问题)
比如加了UPX壳的程序在运行的时候,开始运行的就是UPX解压缩的函数,此时它会保存EBP,然后移动ESP,给函数留出足够的栈帧,当所有的解压缩完成后,它需要把所有的栈帧再进行还原,使得ESP恢复为调用函数之前的状态,此时的硬件断点就会断下来,正好为解压缩函数执行完毕的时候,而解压缩完成后,就会进行跳转到OEP,此时我们只需要F8往下跟几步,就能很快的找到OEP了!既然如此,我们就可以对ESP寄存器下一个硬件断点,使得ESP还原为调用函数之前状态的时候断下来,也就是函数执行完毕的时候断下来。原创 2023-07-03 11:15:07 · 137 阅读 · 0 评论 -
re学习 (11)---攻防世界 maze(迷宫问题)
攻防世界原创 2023-07-01 13:55:00 · 306 阅读 · 0 评论 -
re学习(10)BUUCTF - re - [ACTF新生赛2020]Splendid_MineCraft(补写)
12原创 2022-12-27 21:55:07 · 111 阅读 · 0 评论 -
re学习(9)---BUUCTF-re-[FlareOn4]IgniteMe
习题原创 2022-12-23 21:56:56 · 158 阅读 · 1 评论 -
re学习(8)--攻防世界题库logmein
攻防世界原创 2022-11-22 17:05:50 · 320 阅读 · 0 评论 -
re学习(7)--[ACTF新生赛2020]usualCrypt
静态调试与动态调试想结合原创 2022-11-07 22:09:57 · 115 阅读 · 0 评论 -
re学习(6)--BUUCTF re reverse3
题解原创 2022-11-06 22:24:58 · 196 阅读 · 0 评论 -
re学习(5)--rsa加密(BUUCTF rsa)
rsa加密算法原创 2022-10-28 14:03:52 · 616 阅读 · 0 评论 -
re学习(4)--BUUCTF level1题解
level1原创 2022-11-02 10:22:33 · 758 阅读 · 0 评论 -
re学习(3)--BUUCTF-reverse2
reverse2原创 2022-10-31 17:38:15 · 222 阅读 · 1 评论 -
re学习笔记(2)--xor(BUUCTF)
xor原创 2022-10-30 11:48:21 · 371 阅读 · 2 评论 -
re学习笔记(1)-[GWCTF 2019]pyre解法
BUUCTF题解原创 2022-11-05 09:40:00 · 470 阅读 · 0 评论 -
window上64位和32位的区别
32 位和 64 位中的“位”,也叫字长,是 CPU 通用寄存器的数据宽度,是数据传递和处理的基本单位。在电脑上安装系统和软件的时候,经常会出现32位系统和64系统的选项,那么Windows64位系统和32位系统的区别具体在哪里,很多人都是。不过,如果用 64 位的 CPU 运行 32 位的系统,就是杀鸡用牛刀,大马拉小车,并不能很好的发挥出 64 位 CPU 的能力。当然了,32位CPU的地址总线不一定是32位的,也可能是48位,64位的CPU地址总线也不一定是64位,也可能是48位。原创 2023-11-27 19:27:43 · 1333 阅读 · 0 评论 -
PE文件分析
注:时间戳为从1970年1月1日0时0分0秒到开始编译文件的时间间隔。2.找出时间戳,计算出两个文件的生成时间;原创 2023-11-24 17:07:52 · 443 阅读 · 0 评论