首页
社区
课程
招聘
[原创]Reverse-伪斐波那契数列 (第九题 智斗邪首设计思路)
发表于: 2025-7-23 14:33 2888

[原创]Reverse-伪斐波那契数列 (第九题 智斗邪首设计思路)

htg 活跃值
6
2025-7-23 14:33
2888

        斐波那契数列(Fibonacci sequence)是以递推方式定义的数列,其数值为0、1、1、2、3、5、8……,每一项等于前两项之和,由意大利数学家莱昂纳多·斐波那契于1202年提出,广泛应用于数学、自然科学等领域。

       递推关系为:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2) (n≥2,n∈N)。

其前几项为0,1,1,2,3,5,8,13,21,34........


       这个递推关系较为简单,我尝试增加一个复杂度,当前数值为前三个数值的线性关系,系数不一定为1。

       递推关系为:F(0)=0,F(1)=1,F(n)=F(n-1)*9+F(n-2) *8+F(n-3) *5(n≥3,n∈N)。

其前几项为0,0,1,9,89,878,8659,85400,842262,8306853,........


       那如何构造一个Reverse题目了?

       将所构造的伪斐波那契数列的每一个数值扩展为一定宽度的字符(前缀补0),然后顺序拼接成一个超长的字符序列,最后在前面添加“0.”,即构成一个有效数位超长的纯小数m。m的倒数为一个超大的实数,其整数部分N有一定的规律性,可以压缩存储为SN。

       当然,此处有一个bug,如果构造出了小数,然后直接运算就可以得到想要的数值。此处,如果将宽度设置为2025,那这个小数的有效数位可能达到数百万级别,是可以计算出来的,但是需要留意,一般的程序语言无法计算,如果用python计算,需要注意计算精度,有可能给出错误结果。

       整体来说,此处的逆向难度偏低,构造出小数后,就可以得到结果。

(不好写MD,直接截图)

读入用户输入序列号SN:SN是一个仅由[0-9]和小写字母l、句号.共12种字符组成的字符串,长度限定[0x1a,0x32] ,可有效避免穷举。 

为了避免直接输入超长的NN,采用压缩算法: 

首位为数字字符,紧接着的字符串为一段数值(10进制),表示字符重复数量;

以l为分割字符串, l之后不能为l或为空;

允许出现.(此为干扰项,后续算法可规避.字符) ;

不允许.后面的数值全为0,也就是说规避整数的不同表现形式;

有且仅有一个.,否则即不是数值的有效表现形式;

在有限的字符数量约束下,很难出现满足要求的其他解,因转换的小数位长度已达到 4,131,000。

       将SN按照上面的压缩算法还原为超大整数,并进行验证: 

能够转换成数值

.个数不能大于1

.后面的数值不能全为0

.不能作为尾字符

比如 NN 有 6075 位,采用压缩算法后,为 Sn=92024l01l92024l11l92024l51,仅 26 位。

      考虑用C#相关大数库,或自设计一个超大整数的乘法及加法运算,运算性能均不够理想,最终考虑内嵌 python 代码实现。

SN长度限定为[0x10,0x20]

SN不能以0和.开头

SN不能以l开头(foreach里面判断)

SN不能出现连续的l

SN不能出现除了数字、字母l、字符.之外的字符

l字符出现时,其已确定了前面的字符及对应的数量,且数量一定为大于0的数值,比如 ...l10000l为错误序列号

不允许.开头

不允许:.出现前,还未完成字符数量的获取...l245.

不允许:.出现前,即还未开始获取字符数量...l2.

约定最后一组不能出现l,即不能以l结尾。

不允许:最后一组字符的数量为0的情况

不允许:在.后面添加多个0

      正确的 name 和 SN。

name:KCTF,“KCTF”经过运算得到一个不大于65的正奇数 27,作为被除数。

SN:21l61l92022l71l51l61l92022l71l81l31l92022l81l61l51

解析为一个超大整数,作为被除数。

题目为附件中的 Crackme.exe,hash 值计算可通过Windows PowerShell 命令  get-filehash filefullpath 获取

       文件的hash为 FCCE23A5A04E0EA58BFF205329074C6CD2D658D3B2BDE30719D14DD117FDBB96, 给定的公开name和sn分别为:

name:FCCE23A5A04E0EA5

SN:51l41l92022l51l01l41l92022l52l92023l71l21l51

源代码及相关文件等已放入分卷压缩文档内。

名称混淆:

IL指令加密:

exe打包:Enigma Virtual Box 将 exe 和dll文件打包成一个 非dotnet程序。

剥离内置的python程序


[培训]Windows内核深度攻防:从Hook技术到Rootkit实战!

最后于 2025-9-2 13:24 被kanxue编辑 ,原因:
上传的附件:
收藏
免费 3
支持
分享
最新回复 (1)
雪    币: 42
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
可以私聊吗
2025-9-27 12:02
0
游客
登录 | 注册 方可回帖
返回