随笔分类 -  CTF

逆向的基本要求
摘要:#查壳 ##发现是upx的一个壳 ##得脱壳,不然找不到flag,不信的可以自己拖进IDA中看看能不能找到flag ###我用的是OD绕过了它的壳 ###比较快的是脱壳软件直接脱壳,然后拖进IDA中就有flag了 ##我先讲怎么用OD绕壳 ####运行程序 ####发现它让我们输入一个正确的flag 阅读全文
posted @ 2023-05-01 10:13 TFOREVERY 阅读(73) 评论(0) 推荐(0)
摘要:#查壳 ##进IDA ####没见目标,shift+F12 --> ctrl+F ####进来就看见一个段:DBAPP{49d3c93df25caad81232130f3d2ebfad}(盲猜一手,不是flag,也跟flag有关) #####~~~把这个交上去了发现直接过了(真的是flag)~~~ 阅读全文
posted @ 2023-05-01 09:52 TFOREVERY 阅读(26) 评论(0) 推荐(0)
摘要:#查壳(查位数) ##64位,拖进IDA ####方法依旧,F5看伪代码 int __cdecl main(int argc, const char **argv, const char **envp) { int result; // eax int stat_loc; // [rsp+4h] [ 阅读全文
posted @ 2023-05-01 09:37 TFOREVERY 阅读(28) 评论(0) 推荐(0)
摘要:#依旧先查壳(看几位) ####没壳64位 ##考虑IDA或者OD都行(看个人习惯,OD需要很大的功底)建议先从IDA开始 ##拖入IDA看看 ####发现没有想要的东西 --> shift+F12 -->(可以ctrl+F) --> 也可一个个找关键字flag ####发现right flag - 阅读全文
posted @ 2023-05-01 09:19 TFOREVERY 阅读(43) 评论(0) 推荐(0)
摘要:#很简单的一个小练手 #这里习惯性的先查壳(养成习惯)(也可以查是几位的) ####无壳 ##不管是进OD还是IDA都是直接出答案 ###拖入OD如图 ###拖入IDA ####很明显flag{this_Is_a_EaSyRe} #####不需要动什么脑子,会拖入就行 阅读全文
posted @ 2023-05-01 08:58 TFOREVERY 阅读(26) 评论(0) 推荐(0)
摘要:#flag寄存器(16位) ##flag的1.3.5.12.13.14.15在8086CPU中没有使用,不具有任何意义 #CF(flag的第0位)进位标志位 ###有进位/借位 CF = 1 ###没有进位/借位 CF = 0 #PF(flag的第2位)奇偶标志位 ###如果结果为偶数,PF = 1 阅读全文
posted @ 2023-04-24 19:26 TFOREVERY 阅读(81) 评论(0) 推荐(0)
摘要:#call 和 ret 指令都是转移指令,都是修改IP,或者同时修改 CS 和 IP #ret指令 ##利用栈中的数据,修改IP的内容,从而实现近转移 ##格式 ret(即可) ###注意,在使用ret指令后,sp的值会改变,相当于说 pop 掉了一个数据,IP的值是直接被栈中的数据覆盖的。(指向哪 阅读全文
posted @ 2023-04-16 16:15 TFOREVERY 阅读(141) 评论(0) 推荐(0)
摘要:#转移指令有如下: ##1.无条件转移指令(如:jmp) ##2.条件转移指令 ##3.循环指令(如:loop) ##4.过程 ##5.中断 #操作符offset(取得标号的偏移地址) #jmp指令 --> 可以只修改IP ,也可以同时修改 CS 和 IP(实际是根据位移来转移的指令) ##怎么计算 阅读全文
posted @ 2023-04-15 11:23 TFOREVERY 阅读(223) 评论(0) 推荐(0)
摘要:#显存段为 B800 ~ BFFF #低位存放所要显示的文字,高位存放属性 #以一个字节来记录属性(八位的二进制) #第 1 位为 是否闪烁 #第 2~4 位为 背景颜色 :(2对应的是R:红色,3对应的是:G:绿色,4对应的是B:蓝色) #第 5 位为 是否高亮 #第 6~8 位为 前景颜色 :( 阅读全文
posted @ 2023-04-15 10:00 TFOREVERY 阅读(83) 评论(0) 推荐(0)
摘要:#1. #2. 阅读全文
posted @ 2023-04-14 15:30 TFOREVERY 阅读(10) 评论(0) 推荐(0)
摘要:#bx、si、di、bp 在8086CPU下,只有 bx、si、di、bp 这四个可以用在[...]中进行内存单元的寻址 就好像 [ax] 是错误的,[bx] 是正确的 ##[...]的用法 在[...]中,如上四个寄存器可以单个出现,或者以以下的组合出现,其他的都是不合法的 bx 和 si、bx 阅读全文
posted @ 2023-04-14 13:17 TFOREVERY 阅读(33) 评论(0) 推荐(0)
摘要:#and 和 or 指令(位运算) ##and 指令 --> 逻辑与运算(参考java中的逻辑与 & ) 通过该指令可以将操作对象的相应位设为0,其他位不变 如: 将al的第6位设为0:and al,10111111B 将al的第7位设为0:and al,01111111B 将al的第0位设为0:a 阅读全文
posted @ 2023-04-04 17:02 TFOREVERY 阅读(47) 评论(0) 推荐(0)
摘要:#dw(define word)定义字型数据(每个数据用两个单元存放) dw定义的数据处于代码段的最开始,即偏移地址为0上 #db定义字数据(每个数据用一个单元存放) #栈的使用 #将数据、代码、栈放入不同的段 阅读全文
posted @ 2023-04-03 09:52 TFOREVERY 阅读(17) 评论(0) 推荐(0)
摘要:#在masm编译器中不同于debug的命令 如:在debug中 mov ax,[0] --> 是说将 偏移地址为 0 中的数据送入ax中 而在汇编语言中 mov ax,[0] --> 是说将 0 这个数据送入ax中 #[bx] 表示一个内存单元,它的偏移地址在bx中 ##格式如下: mov ax, 阅读全文
posted @ 2023-03-28 17:14 TFOREVERY 阅读(35) 评论(0) 推荐(0)
摘要:#伪指令 XXX segment XXX ends segment 和 ends 是一对成对使用的伪指令(汇编编程必须用到的) 作用:定义一个段。segment说明一个段开始,ends说明一个段结束 一个段必须有一个名称来标识,使用格式为:段名 segment ###end是汇编程序的结束标志,所有 阅读全文
posted @ 2023-03-28 11:12 TFOREVERY 阅读(89) 评论(0) 推荐(0)
摘要:#栈 (后进先出) 什么叫“后进先出”:就好比一个桶,我们往里边放东西,我们只能先拿最后放进去的东西才能拿到最先开始放的东西。这就叫后进先出 ##指令 push --> 入栈 步骤: (1)SP = SP - 2 (2)向SS:SP指向的字节单元中送入数据 pop --> 出栈 步骤: (1)向SS 阅读全文
posted @ 2023-03-27 21:46 TFOREVERY 阅读(31) 评论(0) 推荐(0)
摘要:#概述 8086CPU有14个寄存器: AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW #通用寄存器 8086CPU所有的寄存器都是16位的,可以存放两个字节(2byte) 通用寄存器:AX、BX、CX、DX(都可以分为两个独立的8位寄存器来使用如:AX --> 阅读全文
posted @ 2023-03-27 16:42 TFOREVERY 阅读(83) 评论(0) 推荐(0)
摘要:#大小写不敏感 #常用指令 R命令 ——> 查看、改变CPU寄存器里的内容 如:r ax --> 对ax中的内容进修改 D命令 ——> 查看内存中的内容 如 d 段地址:偏移地址 或者 d 段地址:偏移地址 数值 --> 表示查看内存中该物理地址几个字节的数据 如图 表示查看内存中 1000: 0 阅读全文
posted @ 2023-03-27 16:42 TFOREVERY 阅读(114) 评论(0) 推荐(0)
摘要:#CPU对存储器的读写(通过地址、控制、数据总线,三线实现) ##地址总线 一个CPU有N根地址线,则可以说这个CPU的地址总线的宽度为N。 可以寻找 2^N^ 个内存单元(一个内存单元 --> 一个字节 --> 1 byte)(寻址能力) N 根地址线 == CPU的地址总线的宽度 == N ## 阅读全文
posted @ 2023-02-14 17:34 TFOREVERY 阅读(13) 评论(0) 推荐(0)