首页 > 其他 > 详细

2020/5/30 BUU_[FlareOn4]IgniteMe

时间:2020-05-20 18:20:49      阅读:98      评论:0      收藏:0      [点我收藏+]

技术分享图片

查壳:

技术分享图片

没壳,跑一下看看:

技术分享图片

经典输入处理判断,扔进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

2020/5/30 BUU_[FlareOn4]IgniteMe

原文:https://www.cnblogs.com/DorinXL/p/12924910.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!