2020/5/30 BUU_[FlareOn4]IgniteMe

查壳:

没壳,跑一下看看:

经典输入处理判断,扔进IDA看一看:

框架比较简单,但是简单的框架内容可不一定简单。

一些API函数,念着英文就知道什么意思了。看一下读取数据的函数:

中规中矩的,把读入的'\n'和'\r'过滤一下。

看一下处理和判断的函数:

大体逻辑是这样的:

v0是长度,v4是一个给定的数值。循环处理flag,将其倒序与v4亦或的结果保存,替换v4内容,继续下一位。

由于结果已经给出了,我们要做的就是逆向写一遍这个算法。但是我们缺少v4的内容,不知道v4就不知道其他位置的flag。

关于v4的这个函数sub_401000,我们不能立马得到结果:

这是一个没见过的函数,具体处理也不是很懂。

这里其实可以用od看一下运算结果,但是我用不熟od,好歹拖进去看一下:

这里调用了401000函数,然后把al存了起来。

手动计算401000:

Eax和edx存入0x80070057。Ax异或,eax左移4,ax右移1。

这里注意eax是32位而ax是16位,ax取0x0057,rol循环左移不舍弃,shr右移舍弃高位0补足。得到的结果是0x0x700004

然后al是8位,也就是04,所以v4 = 4;(老实说我并不明白这里为什么v4就是al的值)

逆向算法:

结果:

R_y0u_H0t_3n0ugH_t0_1gn1t3@flare-on.com

posted @ 2020-05-20 17:31  DorinXL  阅读(437)  评论(0编辑  收藏  举报
👨‍💼