首页
社区
课程
招聘
[原创][我的代码传]更改FastStoneCapture使用期限
发表于: 2020-11-5 23:47 4862

[原创][我的代码传]更改FastStoneCapture使用期限

2020-11-5 23:47
4862

依稀还记得那段在记忆中逐渐模糊的大学时光:那天是某个月的周四晚上。
“哎呀,明天就得交实验课作业的,交报告就算了怎么报告还要截图。”我满脸疑问的说着。
“是啊,太诡异,明明有原件还要搞个复印件,这是搞个球。”舍友一边赶着报告一边附和着。
“话说这报告怎么截,我三页子呢,就算按PtrSc也只能...”还没等我说完,一个煞笔舍友说了:“用FastStone啊,滚动截图。”
“这么神奇还滚动截图,你赶紧发过来给我试试...不是啊,你怎么发的怎么还是正版的,大哥。”
“管他呢,你点试用不就好了,你写个报告要30天那么久?用完就泄啦。”

就这样在说不出具体的日期里,FastSone的滚动截图深深的留在我的脑海里,以至于我毕业设计的报告也是使用的它...

如今也毕业两年了,直到最近看到有人发的FastStone的注册码分析过程我才又回想起来,我开始反思既然我那么深爱着这个软件,我能为它做点什么呢?

看着试用期30天剩余日期一天天的减少,就像当时数着倒计时高考以及大学毕业一样,心中倍感交加,于是对于正在学习逆向工程的我,下定了决心要把时间倒流。

说是要倒流试用时间,可谈何容易呢?该不会右下角更改系统时间就好了吧...我对自己这种忽然袭来的惊为天人的想法感到可笑和难堪,心想不应该这么容易吧...

草,成了,原本做好面对重重困难的心里准备的我,突然感到一丝难过,我的帖子是不是就这么终结了呢?

既然这样,我就改它的安装时间好了,这样应该会显得更加的“高级”一点,于是我又重新振奋了起来,屁颠屁颠地查了壳并打开了x32dbg,随手搜了30。

万万没想到又直接出来了,很好,非常好,很有精神,然后我们直接来到提示语附近的汇编代码,轻轻往上滑,一个刺眼的跳转出现在了眼前:

这也太直接了吧,我甚至一看到1E就知道这里肯定就是关键跳了。因为1E的十进制就是30,试用期期限的30,那很明显,eax肯定就是一个当前第几天的计数值了,也就是天数差(当前日期减去安装日期)。

我长叹一口气,用着工地英语说道:“Thats so great!”我开始搞不懂我自己了,难道简单快速的解决问题不好吗?我为什么还要对没有如期而至的困难感到难过呢?这不就是吃饱了撑着吗?

这一刻我释怀了,我吹着口哨,网抑云不再抑郁。随后经过一番过于简单的运行,我找到了时间差值来源的call:

在进去之前,为了防止有大量的未被识别的系统函数,我轻快地点开了IDA,并把delphi的相关符号加载,这样Faststone就会显得越来越亲切,对,就像妈一样。

在x32dbg里跟进了call,习惯性的滚动了滚轮,一看,哎呀我的妈,它糊了!

从开始的更改系统时间,查壳,字符串搜索都那么顺利,为什么要这里就糊了。我仔细思考着这些诡异的过程,缓缓说出了一个让我自己也感到充满水平的四字成语:欲盖弥彰。

这里其实就是一个简单的花指令,其实我们不要动滚轮就行了,亦或者把前面的垃圾数据改成0:

当然,我们也可以在IDA里看,这样也是十分清楚的。我们得清楚自己不能被一时的花招所扰乱,遵循自己的原则,先把这层的call都跑过一次,看能不能得出什么信息。

这次结合了IDA,又经过一次算不上困难回溯,发现三个call的功能也十分明显:

注意时间的返回会记录在浮点寄存器中,第一个call返回的便是安装的时间。可以说在使用了IDA并加载对应的符号文件后真的是事倍功倍唷。

整个过程其实就是跟踪值来源,分析call功能,跟踪值来源...这样一个反复且颇有枯燥的过程,继续跟进第一个call,使用上述的方法我们最后到达了一个call里:

此时的我粗略一看,哎呀妈呀全是shr,and位运算心里突然起了毛。可冷静下来仔细一想,有什么加密是全得位运算的,运算类型的单一不就是暗示了什么吗?

经过一顿分析,我得出了答案:这里其实是拿取eax的高16位,通过位运算得出ax年,dx月,cx日,也就是说,这个高16位eax存储了年月日,并通过位移的方法提取出来。

那事情就很简单的,就拿例中eax的高16位为5163h来说,他的二进制是‭‭101 0001 0110 0011‬‬,根据算法,前6位(101000)再加上7BC(1980标准校对时间)就是年,后4位是月,再后面是日:

当我分析出来的时候,无不为自己的聪明才智所折服。天哪,这么简单我怎么看了那么久...

接下来的事情显而易见了,只要找到这个eax高16位的来源就可以了,最后通过层层回溯我们来到了一个神秘的地方:

当然,得通过IDA和x32dbg共同调试才能看清很多函数...话说回来,当我看到这个长得那么像路径的字符串的时候,我已经猜测十有八九的这个安装日期是不是藏在里面:

果然是这样,我拍着桌子大声的呐喊,不知情的人以为我都疯了。这看上去似乎是个配置文件,我也搜到了目标值(这里被我改了)。

到这里,我长叹了一口气,看来是到了结束的时候呢。无论上学的时光多么美好,该来的还是得来了。

小时候渴望成为大人,想买什么就买什么。大学的时候渴望早点毕业,期盼甩开作业,无限期暑假的那一天的到来。如今我只想回到过去,在那充满欢声笑语煞笔舍友的宿舍里,哈哈大笑。

锵锵锵,问题来了,不想手动修改文件怎么办呢?这时候我诞生了一个惊奇的想法,用一个工具修改成当前天数,这样时间就会永远定格在30天。于是我打开了vs较为顺畅的写下了些代码:

毕竟都知道数据格式了,位运算即可,最后盛上源码和成品:
点击我进入到gayhub.com
成品:
https://share.weiyun.com/CHS2PWGq

使用方法:找到C:\Users\用户名\AppData\Local\FastStone\FSC目录,将该exe放在下面并运行即可。

ps:使用前请自行备份fsc.db

 
 
 

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 1
支持
分享
最新回复 (7)
雪    币: 7998
活跃值: (3714)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2

有没有试一下把这个图里的0x6EC221, 0x6EC243和0x6EC266三个0x1E都改成其它值比如0x64,可惜0x6EC243那里最大值也只能是0xFF

最后于 2020-11-6 01:48 被arab编辑 ,原因:
2020-11-6 00:44
0
雪    币: 7998
活跃值: (3714)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
顺便说一句,那个日期格式我们以前叫 DOSDate
2020-11-6 00:47
0
雪    币: 3523
活跃值: (3454)
能力值: ( LV9,RANK:150 )
在线值:
发帖
回帖
粉丝
4
arab 顺便说一句,那个日期格式我们以前叫 DOSDate
原来是一种储存格式,受教了。使用日期增加没试过改,待会儿试试
2020-11-6 16:24
0
雪    币: 26785
活跃值: (63217)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
5
楼主文笔风趣~
2020-11-10 17:21
0
雪    币: 3523
活跃值: (3454)
能力值: ( LV9,RANK:150 )
在线值:
发帖
回帖
粉丝
6
Editor 楼主文笔风趣~
哈哈哈,谢谢版主兄dei的赞许
2020-11-10 18:17
0
雪    币: 35579
活跃值: (7155)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7

其实只要是有心总结,制造各种一招必杀技破敌都是很轻松的。
例如,已知注册码21位这就是道命题:cmp eax,21一招定位, Ctrl+A,Ctrl-返头返1,爆破成功。

最后于 2020-12-7 17:20 被ninebell编辑 ,原因:
2020-12-7 17:13
1
雪    币: 35579
活跃值: (7155)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
又比如某软件费劲爆破各种功能限制,改了一大通。
后来得知记号源于注册表键值,那就简单了,瞄准定位就不让你写键。一分钟爆破,天下太平。
2020-12-7 17:15
0
游客
登录 | 注册 方可回帖
返回
//