首页
社区
课程
招聘
[原创]对V1进行了修改的Crackme
发表于: 2007-3-17 17:00 5366

[原创]对V1进行了修改的Crackme

2007-3-17 17:00
5366
在做完V1之后,因为V1采用了检测调试重启,对于一般的crackme应该不用这样,可能有点恐怖。。。哈哈
所以今天决定对V1进行修改。。。本次修改为关闭调试器,采用自删除模式
本程序特点:
   1。 算法简单(个人觉得crackme还是应该注重算法,不过本人水平有限,写不出好算法,呵呵)
   2。拥有陷阱设置(看了好多crackme,都采用了陷阱机制)
   3。本程序只是个人看看自己的功底到哪种程度而已。。。最后发现真的不怎么样,哈哈。。。谢谢大家
欢迎大家写出kegen来,并对其进行讨论,谢谢

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 220
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
aicode
30415321
2007-3-17 20:34
0
雪    币: 221
活跃值: (20)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
3
这么厉害。。。竟然这么轻易被解了?
2007-3-17 20:47
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
4
0049721A                 jnz     loc_497356

==>       nop

注册成功

要加密字符,就把全部字符都加密。。。

突然出现加密的字符,太不自然了。。。

在CRACKME里出现提权和TOOLHELP API的调用,也太明显了。。。

我只会爆破
2007-3-17 20:47
0
雪    币: 221
活跃值: (20)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
面壁去,哈哈
2007-3-17 20:54
0
雪    币: 112
活跃值: (16)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
6
最初由 笨笨雄 发布
0049721A jnz loc_497356

==> nop

注册成功
........


怎么让他不出现提权关键字和toolhelp32api的名称.
指点下.
还想问问怎么让一些加密字符串不显示,谢谢兄弟了,!学习!
2007-3-17 21:59
0
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
7
怎会出现如此明显的明码比较,不解

lgjxj
45007005

还有二楼的兄弟好象注册码错误把
上传的附件:
2007-3-17 22:33
0
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
8
前面的我没精力去看了
004086D9  |> /31D2          /XOR EDX,EDX
004086DB  |. |F7F1          |DIV ECX
004086DD  |. |4E            |DEC ESI
004086DE  |. |80C2 30       |ADD DL,30
004086E1  |. |80FA 3A       |CMP DL,3A
004086E4  |. |72 03         |JB SHORT crackme.004086E9
004086E6  |. |80C2 07       |ADD DL,7
004086E9  |> |8816          |MOV BYTE PTR DS:[ESI],DL
004086EB  |. |09C0          |OR EAX,EAX
004086ED  |.^\75 EA         \JNZ SHORT crackme.004086D9
2007-3-17 22:54
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
9
如果我做字符参考的工具,那么我会对比每一个字节,看看它是否在可见字符范围之内。

所以加密字符的时候,应该尽量考虑使用不可见的字符编码。

例如“D”的ASCII码是0x44

可以分解成3个字节保存,0x1F,0x1F,0x02

3个字节加起来就是0x44了

这是一个简单的实现,只要把0x44减0x1F,直到得数少于1f为止。

同样要还原字符也很简单,各字节相加,遇到少于1f的字节为止,然后下一个字符。

也可以用查表(加密表里的字符)的方法得出想要的字符,反正跟注册信息相关的字符1F长度的表应该够用了。

另外,当我们不知道字符的编码格式时,我们会以00或者00,00作为一个字符的终结。IDA中的字符参考功能有一个过滤器,当字符少于某个长度时,就不显示该字符。默认字符长度是5。

也就是说只要我们通过某种加密方法,将第5个字符变成0,就可以骗过IDA了。

以简单的XOR为例,只要将该字符的第5个BYTE作为KEY加密整个字符就可以了(注意XOR自己总是等于0)
2007-3-17 23:07
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
10
使用GETPROCADDREE获取API,可以避免通过IAT了解程序用了什么ANTI DEBUG的方法。但是我们仍然需要字符。

字符参考,或者通过GETPROCADDREE的交叉参考,修改EIP运行到GETPROCADDREE就可以知道你用了什么API了。

所以最好的方法是自己直接读取导出表,通过比较每一个字符的校验值,定位出相关API。
2007-3-17 23:17
0
雪    币: 221
活跃值: (20)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
11
to KAN
   二楼是对的,因为采用了时间,你把系统日期跟时间改为他的发铁时间算出来的结果会跟二楼一样
2007-3-17 23:23
0
雪    币: 221
活跃值: (20)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
12
谢谢版主,又学到了东西,喝喝
2007-3-17 23:26
0
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
13
哦,对,我就粗略的看到了取系统时间的地方,当时没理会,只想出结果,就跟了过去,看到了最终结果生成的地方
2007-3-17 23:29
0
游客
登录 | 注册 方可回帖
返回
//