看雪论坛
发新帖
7

Crackme 论坛 FAQ

riijj 2005-3-15 10:42 84367
Crackme 论坛 FAQ

1.        我刚接触破解,不明白甚么是 CrackMe ,还有 KeygenMe , ReverseMe , UnpackMe,他们是甚么  ?
2.        制作一个 crackme 需要甚么 ? 有甚么要注意 ?
3.        为甚么论坛建议 crackme 不加壳 ?
4.        我的设计很独特,我想所有人都来试试,可是没有人理会我,为甚么 ?
5.        为甚么不可以上载档案 ?

-----------

1.        我刚接触破解,不明白甚么是 CrackMe ,还有 KeygenMe , ReverseMe , UnpackMe,他们是甚么  ?

ans:  
他们都是一些公开给别人尝试破解的小程序,制作 crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 cracker,想挑战一下其它 cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破。

KeygenMe是要求别人做出它的 keygen (序号产生器), ReverseMe 要求别人把它的算法做出逆向分析, UnpackMe 是要求别人把它成功脱壳

2.        制作一个 crackme 需要甚么 ? 有甚么要注意 ?

ans:
编写Crackme 的语言没有限制,常见的有 C, C++ , VB, Delphi, ASM 等等,只要写出一个可以给玩家注册的程序,并检查他的注册作出反应便可以。一般 crackme 应可以在 win98, 2k, xp 下运行,如果 crackme需要某一些 dll 或补助?,应该一起提供

Crackme 中可以使用输入序号的方式, keyfile ,或是其它创新的方法来获得注册序号,主要的原则是 Crackme 使用的技巧是可以应用在现实的软件保护,或可用于共享软件的注册程序。如果一个 Crackme 的破解难度高,并且它的技术可以容易实现于现实的软件应用上,这种 Crackme 被视为很有价值的 crackme

3.        为甚么论坛建议 crackme 不加壳 ?

asn:
如果每一个 crackme 制作者都为了提高 crackme 的强度,而使用了一些商业软件的猛壳,我们破解 crackme 便需要花时间精力在脱壳上了。而且,加壳的动机是不利于研究 crackme 的设计和强度,也不利于兄弟们互相交流破解 crackme 的过程和心得。

Crackme 的真正强度在于设计者的原程序,而不是依靠壳,如果一个 crackme 没有加壳也能够把大部份的人难倒,这才是真正的强 crackme

4.        我的设计很独特,我想所有人都来试试,可是没有人理会我,为甚么 ?

ans:
破解 crackme 和破解其它软件一样,是个人的喜好,不可以强迫。如果兄弟们对你的 crackme 感兴趣,便会下载尝试,这是出于自愿的

一些 crackme 的设计是十分普遍,可能提不起一些老手的兴趣,一些新手下载了,却没有成功破解,结果是没有人回复

一些 crackme 的设计比较复杂或特别,可能大家都在观察,等待破解方法公开,没有人愿意花时间亲自研究

5.        为甚么不可以上载档案 ?

ans :
因为看雪的上载权限制了,防止一些陌生人上载有害的东西。当有一定的发帖数或精华帖后便会获得上载权

假如你没有上载权,可以把档案放在自己的网上空间,使用超链接方式来张贴

大家下载外来连结的档案需要加倍小心,提防木马或病毒

--------
关于编程
--------

6. 我想问,怎样使用 C/C++ 来做一些……..   ?

ans :  
在讨论的时候,请记紧一点,C 和 C++ 是两种独立语言,请严格地把他们分别清楚

很多写了很多年程序的程序员,依然是盲目地把 C 和 C++ 混为一谈。在这里我清楚地解释一次,他们是两种拥有非常大分别的独立语言,他们各自拥有自己的国际标准,他们是独立发展,而且 C++ 并不是 C 的甚幺版本,只是 C++ 的作者使用了 C 的一些语法来开发 C++ 。

在 Crackme 论坛,我会严格地把任何对 C 和 C++ 误解的帖子纠正。

7.        怎样使用 VC ,用 C 语言来编写 S EH  ?

ans :  
尝试在 MSDN 寻求  __try  和 __except 的相关说明
最新回复 (60)
7
riijj 2006-6-9 00:00
2
一般的编程技术,大家都可以很轻易地在网上学到,要懂得写一个简单的 dialog 型式程序,可以用直接的 win32 api,也可以用 C++ MFC,甚至 VB,C# 等等,可是 crackme 的源码讨论不多,因为 crackme 里很多的技术,往往是最珍贵,是自己最有价值的知识。

这里放置的,就是大家曾经用心钻研过的 crackme 源码,大家看着自己的编程技术转变,往往会偷偷地笑自己 : “当年的我,写的源码真是很幼嫩,不可以拿出来见人 !”

这里鼓励大家把已经发表的 crackme 源码发上来,这算是对自己的 crackme 的一个最终答案公开,让有意破解的兄弟,可以从最真实的一面看到 crackme 的秘密,也让有兴趣编写 crackme 的兄弟,看到前人的智慧,认识过往的兄弟们干了那些东西。

7
riijj 2006-6-9 00:01
3
名字 : riijj crackme 1
原始连结 : http://bbs.pediy.com/upload/files/1084801702.zip
源码类型 :  VC6 project files
上传的附件:
7
riijj 2006-6-9 00:24
4
名字 : riijj crackme 4
原始连结 : http://bbs.pediy.com/showthread.php?s=&threadid=8541
详解文章 :  http://bbs.pediy.com/showthread.php?s=&threadid=10799
源码类型 :  VC6 project files
Compile 方式 : 这个 crackme 的源码是我最混乱的一个,要进行 4 次 compile,方法是修改源码上方的  #define CM4_L4

#define CM4_L4 生成 Crackme4.exe
#define CM4_L3  生成sub3.ooo
#define CM4_L2  生成 sub2.ooo
#define CM4_L1  生成 sub1.ooo
上传的附件:
7
riijj 2006-6-8 23:47
5
(这个帖是 wiki 帖,欢迎各位兄弟提供新资料,或更新现有的资料)  

【入门术语简介】

(更详尽的资料,请参考看雪论坛精华,或看雪的书籍)

加壳 : 表示程序的 exe 被一层外壳保护,这层外壳是一些软件保护公司 (或一些高手) 设计出来的,可以把 exe包裹起来,在 exe 执行时提供保护,对抗破解者

爆破 : 意思是透过修改程序,来达到破解目的,主要方法包括,修改重要跳转指令 (jmp, jz, jnz, 等等)

花指令 : (junk code) 意思是程序中有一些指令,由设计者特别构思,希望使反汇编的时候出错,让破解者无法清楚正确地反汇编程序的内容,迷失方向。经典的是一些跳转指令,目标位置是另一条指令的中间,这样在反汇编的时候便会出现混乱。花指令有可能利用各种 jmp, call, ret, 一些堆栈技巧,位置运算,等等

SMC : (self-modifying code) 意思是自我修改的代码,使程序在运行时自我修改,用途包括:
- 使一些重要的跳转位置爆破无效化 (以 smc 对重要位置进行覆写)
- 使一些重要代码隐藏 (在必要时才实时产生重要代码段,防止程序被人静态分析,也防止一些透过搜寻的破解方法)

自校验程序 : 意思是这些程序会检查自己有没有被修改,如果发现被修改的话,便会离开或进行其它动作。基本的校检方法包括 checksum, 检查大小, 检查跳转代码,等等

自调试程序 : 意思是这些程序会扮演调试器的角色,调试自己重要的部份,让破解者无法用调试器进行破解 (因为一个程序只可以被一个程序调试)

SEH : (structured exception handling) 是一种处理程序异常的机制,当程序异常 (例如除零异常,非法存取异常,等等) 发生的时候,系统便会把执行位置切换到thread 的 exception handler。一些程序会透过 SetUnhandledExceptionFilter( ) 来设定 thread 的最高层异常处理 (代替 windows 提供的那一个错误信息),再制造异常,来达到扰乱调试的效果

RSA : 是一套加密技术 (public key infrastructure),它被广泛应用于各种层面,由一对密钥 (public key 和 private key) 的组合,提供安全的资料加密

Symmetric encryption : 对称加密,意思是加密和解密的 secret key 是相同的,例如 DES, AES, Blowfish

Asymmetric encryption : 非对称加密,是Symmetric encryption 的相反,例如 RSA

PE format : (Portable Executable) 意思是指 Windows 中 exe 的格式

IAT : (Import Address Table),是 PE 结构里重要的一部份,用途是存放 API 位置,让程序中的呼叫可以透过它的位置来使用各个系统API 和 dll 的 export functions。一个 exe 的 IAT 里是并没有实际位置的,这些位置由系统加载 exe 的时候实时填上

RVA : (Relative Virtual Addresses) 在 PE 格式中,有很多不同的区块需要定位,但是不可以指明一个绝对位置,所以 PE 里使用了 RVA。RVA 是一个相对于 Base address (基底位置) 的值,例如一个 PE 被载入到 0x400000,这个 PE 有一个区块的RVA 是 0x1000,那么这个区块在内存的实际位置便是 0x401000

VA : (Virtual Address) 内存虚拟空间中的一个位置,在 PE 描述中的意思是 : PE 被载入后,区块在内存的确实位置

Offset : 意思是偏移值,通常用于指明一个位置,它的用法是把一个基底位置加上 offset 值 (offset 可以是负数)。 例如我们说 : 一个资料结构在内存中的位置是 0x125000,它的 offset 0x10 处是用户名字, offset 0x14 是用户序号。在 PE 结构中, offset 通常用于指明在 exe 档案中的实际位置

dump : 意思是把内存中正在运行的 PE 整个抄下来,储存成另一个 exe file。这种做法可以把程序执行的某一刻保留,例如在 IAT 建立完成后。dump 是脱壳的一个基本步骤
wuqin 2006-11-22 08:18
6
感谢 楼主,其实这个帖子应该是新人必看的东东
freeguan 2007-3-12 09:30
7
刚来的新手看一看这个帖子能少问许多问题。
iszsf 2007-4-3 01:07
8
感谢楼主,学习学习
星竹 2007-4-6 20:49
9
收到!!!
谢了
会好好研究的
2
saga 2007-5-19 11:34
10
又了解了一些知识,谢谢楼主!
hehliang 2007-5-24 12:21
11
谢谢 楼主
月之精灵 2007-5-29 13:26
12
有收获,谢谢了
堆栈 2007-6-1 09:10
13
确实不错,适合新手学习。
1
yaleond 2007-6-2 09:02
14
汗一把.
弄这么久才到这里来看看.好多概念只是在心里有一个大概...不是很清晰,现在完全清晰了...
10
王仁军 2007-6-12 09:01
15
学习一下。。。。。。。
Ajampie 2007-6-28 13:26
16
搂主写得好东西啊??
oreec 2007-7-18 17:01
17
好好学习天天向上!
dashengyue 2007-8-10 12:44
18
懂的加深印象了!
不懂的变懂了!
当然还有些不懂的还是不懂!
谢谢了!
souloyu 2007-9-19 20:24
19
我晕啊 什么都看不懂啊!!受不了了!!1
Leesan 2007-10-5 18:47
20
crackme

破解过程,再详细点好吗??我已经很努力了!!可还没看见进步
escript 2007-11-9 08:03
21
好东东,嘿嘿...新人知道的少
shane 2007-11-23 22:04
22
主管这个主题,正在努力学习。
jdyang 2007-12-8 22:53
23
不错啊
好东西  谢谢楼主哦
学习了!!!!!!!!11
ygreat 2007-12-19 04:58
24
GOOD 3Q  VERY  MUCH
1
wsyzyddd 2007-12-23 00:14
25
谢谢了 。。。
很多东西都清楚了..
suchen 2008-2-23 23:39
26
说实话,我看着也就有些感性认识....我会努力把它们装进大脑的^_^,谢谢楼主!
白木 2008-4-15 22:32
27
学习破解很有趣啊,要努力了。
panyi 2008-4-21 18:58
28
谢谢楼主!学习中
cgm 2008-6-15 16:43
29
好好学习 楼主
cgm 2008-6-15 16:48
30
弄这么久才到这里来看看.好多概念只是在心里有一个大概...不是很清晰,
yamu 2008-8-21 15:02
31
好东西 谢谢。
spkiller 2008-9-1 02:56
32
好东西,谢谢
xiaojiu张 2008-10-24 00:32
33
非常值得学习
飘渺之恋 2008-11-9 09:49
34
额.  原来大牛也是这样过来的啊.这是楼主刚接触破解的时候发的贴么?
咋都是05年起步的哦.
falconjack 2009-2-16 22:22
35
对我这个新手很实用啊
yelo 2009-2-24 03:04
36
菜鸟一只 不会编程 看不懂 不过肯定是好东西 哈哈
sbppp 2009-2-25 20:50
37
我才开始学习发现C语言很不容易理解啊
maxm 2009-3-15 20:54
38
偶还在学16位汇编。
完了再研究32位的。
等着我 ^^
zwffairy 2009-3-23 23:22
39
支持支持~
2
cnhnyu 2009-4-30 09:00
40
Thanks very much.
zousf 2009-5-28 19:37
41
学习了,总算有点清楚了。
幻影之仔 2009-8-27 20:44
42
LZ,辛苦啦
wdww 2009-11-18 19:24
43
谢谢lz了
windclouds 2009-12-8 01:54
44
转了一圈,好多名词不懂,到这儿弄明白了一些!
luckyao 2010-1-26 21:43
45
好久没来看雪了,继续学习!
breakan 2010-4-18 21:31
46
学习一下下。。。。。。。。
xxw 2010-5-9 22:07
47
学习学习
catry 2010-7-25 08:07
48
学习啦·~··
hackqf 2010-11-27 21:25
49
标记一下自己来过!
叶军 2011-6-23 22:11
50
概念定义十分准确,学习了,以前似懂非懂的概念也懂了,谢谢楼主。。。
返回



©2000-2017 看雪学院 | Based on Xiuno BBS | 知道创宇带宽支持 | 微信公众号:ikanxue
Time: 0.015, SQL: 9 / 京ICP备10040895号-17