0%

运行程序没有提示输入,直接输出Oops wrong path,尝试传参也没任何反应。

main函数就张这个样子,但是反编译一下就可以看到main远没这么简单

阅读全文 »

前置知识

本lab大致的要求就是实现malloc、free、initial函数。initial函数就是要初始化堆。

做这个lab之前,需要对一下知识有一个比较清晰的认知。

  • 组织:如何组织空闲块,也就是如何初始化堆。
  • 放置:如何放置一个新分配的块。
  • 分割:因分配的块放到空闲块之后,如何处理空闲块的剩余部分。
  • 合并:如何处理一个刚刚被释放的块。
阅读全文 »

vm题算是逆向中比较难的一种题型了,就在这里详细的记录一下。

原理

程序运行时通过解释操作码(opcode)选择对应的函数(handle)执行。

vm_init

进行初始化工作。在这个函数里,规定了有几个寄存器,以及有几种不同的操作。

阅读全文 »

虽然现在还没怎么使用过链接,因为小项目往往单个文件即可完美解决,但是当工程量大的时候,多文件操作是不可避免的。链接就是将各种代码和数据片段收集并组合成一个单一文件的过程。

阅读全文 »

一道有意思又有点脑洞的re&pwn题目,第一次接触到这种类型的题目,记录一下。

阅读全文 »

Windows游戏逆向。使用到了unity框架,C#直接使用dnspy查看一下。

阅读全文 »

题目逻辑并不难理解,只是遇到了船新的知识点UnDecorateSymbolName

阅读全文 »

题目:[RoarCTF2019]polyre

去除控制流平坦化

阅读全文 »

题目大致三个步骤

长度检测,置换,对比sha1值。

阅读全文 »

花指令(junk code)是一种专门用来迷惑反编译器的指令片段,这些指令片段不会影响程序的原有功能,但会使得反汇编器的结果出现偏差,从而使破解者分析失败。比较经典的花指令技巧有利用 jmpcallret 指令改变执行流,从而使得反汇编器解析出与运行时不相符的错误代码。

—CTF Wiki

简单来讲花指令分为两大类,一种是会被执行的花指令,另一种是不会被执行的花指令。

花指令出现的意义就是干扰机器进行反汇编,迫使人工进行分析。

阅读全文 »