首页
社区
课程
招聘
[讨论]慵懒的午后 组CRACKME思路及源码(添加注册机及源码)
发表于: 2009-9-9 17:16 26133

[讨论]慵懒的午后 组CRACKME思路及源码(添加注册机及源码)

2009-9-9 17:16
26133

不知道有没有人提交破文,不然可以对照着看,可能印象会深些。

注册机直接在原代码中添上,可以打开exe文件直接测试..呵呵..图更改方便

程序的整体思路和大概流程如下:
1,在用户鼠标离开name对话框时启动一线程,把输入的name 用代码注入的方式进行初步变换,其目的是实现用户名在代码 中的隐藏。在测试过程中发现,很多很防火墙都对系统进程的注入实行了限制,导致注入失败,因此更改为注入到   notepad.exe,workpad.exe等系统自带软件中,若用户有打开以上软件,则直接注入,否则,用隐藏方式打开以上软件,在 注入返回结果后再关闭。
2,经过代码注入转换后的name设为name-covert,在程序中限制为32位,把name-covert分为四个部分,每部分均为8个字节, 设为namepart1, namepart2, namepart3, namepart4.
3,点击“注册”按钮后进行验证。namepart1部分的验证,我构架了两个256  BYTE的小表,算法非常简单,使其两表对8个byte有互质功能即可,即:p== B_table [A_table

]或p== A_table [B_table


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

上传的附件:
收藏
免费 7
支持
分享
最新回复 (72)
雪    币: 366
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
2009-9-9 17:22
0
雪    币: 418
活跃值: (63)
能力值: ( LV12,RANK:260 )
在线值:
发帖
回帖
粉丝
3
哎哟。。排版怎么变成这样子,不懂的怎么排。。
2009-9-9 17:23
0
雪    币: 461
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
先占位,再欣赏!
2009-9-9 17:25
0
雪    币: 222
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
呵呵,终于发源码了,等好久了。
2009-9-9 17:27
0
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
6
看不懂。有keygen吗?
2009-9-9 17:40
0
雪    币: 47147
活跃值: (20450)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
7
在记事本里排好版,然后复制粘贴上来。格式基本一致的。
2009-9-9 17:45
0
雪    币: 101
活跃值: (88)
能力值: ( LV2,RANK:140 )
在线值:
发帖
回帖
粉丝
8
牛啊, 貌似经过大S调教~~~
2009-9-9 17:45
0
雪    币: 418
活跃值: (63)
能力值: ( LV12,RANK:260 )
在线值:
发帖
回帖
粉丝
9
注册机部分也在源码里,没有抽出来重写,我用#if 0括起来了,先将就吧,呵呵~
在progress_Anti_CheckNamePart2和TestMatchBox函数中
2009-9-9 17:46
0
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
10
太强了。原来key是在一段cm永远执行不到的地方啊。。

那么以后cm是不是可以把smc的key写到数据区的某个位置呢?不懂
2009-9-9 18:00
0
雪    币: 418
活跃值: (63)
能力值: ( LV12,RANK:260 )
在线值:
发帖
回帖
粉丝
11
SMC的KEY吗? 不是的,#if 0括住的只是我调试时候需要用的地方,并不是SMC 的KEY,你没仔细看代码哦。。
2009-9-9 18:03
0
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
12
那SMC的key在哪?

我就是想看看完整的keygen的代码
2009-9-9 18:04
0
雪    币: 8209
活跃值: (4518)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
13
namepart3也可以不是ach4DLJ8吧
这样的话smc解码的key就不是直接能确定的了
2009-9-9 18:06
0
雪    币: 418
活跃值: (63)
能力值: ( LV12,RANK:260 )
在线值:
发帖
回帖
粉丝
14
只能是那个值。。我有经过碰撞试验。
2009-9-9 18:06
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
15
全是 zenghw 自己的思路
他是由平常放出的 CrackMe 一直做改进, 精神值得学习.
不过好像还是出了问题.
2009-9-9 18:07
0
雪    币: 418
活跃值: (63)
能力值: ( LV12,RANK:260 )
在线值:
发帖
回帖
粉丝
16
progress_Anti_CheckNamePart1,progress_Anti_CheckNamePart3,progress_Anti_CheckNamePart4是确定KEY的函数。
2009-9-9 18:07
0
雪    币: 8209
活跃值: (4518)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
17
progress_Anti_CheckNamePart3是不成立的
checkresulterror最后结果为1
2009-9-9 18:10
0
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
18
太复杂了,放弃学习
2009-9-9 18:12
0
雪    币: 8209
活跃值: (4518)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
19
不开调试器直接跑,progress_Anti_CheckNamePart3中应该就是个虚假检查,不影响结果的
无法认定namepart3一定是ach4DLJ8
2009-9-9 18:13
0
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
20
LZ应该给一个keygen成品+源码

大赛要求,对于任意合法的注册名,必须有对应的序列号

我觉得,LZ在讲解这个cm的时候,应该首先解释一下,如何保证这一点的,也就是
key = f(name);这个函数,如何保证name在定义域内,都有对应的key
2009-9-9 18:27
0
雪    币: 8209
活跃值: (4518)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
21
据官方说:没有有对应序列号的注册名,不是合法的注册名
不要讨论这个了,没意义
2009-9-9 18:57
0
雪    币: 420
活跃值: (77)
能力值: ( LV13,RANK:500 )
在线值:
发帖
回帖
粉丝
22
到此为止,,看小S。。。
2009-9-9 19:21
0
雪    币: 418
活跃值: (63)
能力值: ( LV12,RANK:260 )
在线值:
发帖
回帖
粉丝
23
ccfer兄,你是用文件直接编译的吗?
因为你对代码没做SMC,因此在CRC校验时候出错,跳到另一个分支,会影响m_lsecondcount的结果,因此在progress_Anti_CheckNamePart3函数中,       
namepart3key[15]='z' + wndProgress->m_lsecondcount/3;
这里产生的key值就出错了!
你再跟踪我发放的那个SMC过的代码,这里应该是好的!  刚刚下班去吃了下饭,回答得晚了些,不好意思,我马上做相应注册机。
2009-9-9 19:37
0
雪    币: 418
活跃值: (63)
能力值: ( LV12,RANK:260 )
在线值:
发帖
回帖
粉丝
24
小S是哪位大侠?
2009-9-9 19:38
0
雪    币: 8209
活跃值: (4518)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
25
你最后检查是checkresulterror>1时候才不通过
所以checkresulterror=1情况也是可以满足注册的
2009-9-9 19:45
0
游客
登录 | 注册 方可回帖
返回
//