首页
社区
课程
招聘
修改现有程序成KEYGEN
发表于: 2004-5-1 12:23 14338

修改现有程序成KEYGEN

2004-5-1 12:23
14338

修改现有程序成KEYGEN
dOsKey[Nuke Group]

    做过KEYGEN的CRACKER可以都遇到过这种情况:生成注册码的算法十分复杂。虽然可以逆向分析出整个算法,但是需要很长时间。而程序内部已经包含了算注册码的函数的时候,我们可以使用程序内部的算码函数来实现我们自己的KEYGEN,以达到四两拨千斤的效果。
    目标程序是某个国产手机写码软件。第一次运行的时候程序要求输入根据机器码得来的用户名和注册码。用FI扫描后得知目标软件无壳,用VC6写的,目前很少国产软件不加壳了,看来我们很幸运,省略了脱壳的步骤。接下来我们用OllyDbg载入目标软件,F9运行。在目标程序中输入用户名“DOSKEY”和注册码U20-111111111111,点OK,弹出有“注册失败!”的提示窗口。不管它,切换回OllyDbg按F12暂停在主线程。然后按CTRL+F12直到OllyDbg状态为“Till return”,切换回目标程序点消息框的确定按钮。目标程序的进程再次被OllyDbg暂停住,一直按CTRL+F12返回到主线程我们就来到这里:

0042675F  /$  55              PUSH    EBP
00426760  |.  8BEC            MOV     EBP, ESP
00426762  |.  E8 91140000     CALL    2210.00427BF8
00426767  |.  8B40 04         MOV     EAX, DWORD PTR DS:[EAX+4]
0042676A  |.  85C0            TEST    EAX, EAX
0042676C  |.  74 15           JE      SHORT 2210.00426783
0042676E  |.  FF75 10         PUSH    DWORD PTR SS:[EBP+10]
00426771  |.  8B10            MOV     EDX, DWORD PTR DS:[EAX]
00426773  |.  8BC8            MOV     ECX, EAX
00426775  |.  FF75 0C         PUSH    DWORD PTR SS:[EBP+C]
00426778  |.  FF75 08         PUSH    DWORD PTR SS:[EBP+8]
0042677B  |.  FF92 8C000000   CALL    DWORD PTR DS:[EDX+8C]
00426781  |.  EB 10           JMP     SHORT 2210.00426793          <= 返回到这里,上面就是调用MessageBox显示消息框的CALL
00426783  |>  FF75 10         PUSH    DWORD PTR SS:[EBP+10]                                    ; /Arg3
00426786  |.  33C9            XOR     ECX, ECX                                                 ; |
00426788  |.  FF75 0C         PUSH    DWORD PTR SS:[EBP+C]                                     ; |Arg2
0042678B  |.  FF75 08         PUSH    DWORD PTR SS:[EBP+8]                                     ; |Arg1
0042678E  |.  E8 E5FEFFFF     CALL    2210.00426678                                            ; \2210.00426678
00426793  |>  5D              POP     EBP
00426794  \.  C2 0C00         RETN    0C
00403815   >  6A 00           PUSH    0                                                        ; /Arg3 = 00000000
00403817   .  6A 00           PUSH    0                                                        ; |Arg2 = 00000000
00403819   .  68 14844300     PUSH    2210.00438414                                            ; |Arg1 = 00438414
0040381E   .  E8 3C2F0200     CALL    2210.0042675F                                            ; \2210.0042675F
00403823   .  8BCD            MOV     ECX, EBP
00403825   .  E8 36000000     CALL    2210.00403860
0040382A   >  8BCD            MOV     ECX, EBP             <= 返回到这里
0040382C   .  E8 9AC40100     CALL    2210.0041FCCB
00403831   .  8D4C24 10       LEA     ECX, DWORD PTR SS:[ESP+10]
004037DB   .  E8 5AFB0100     CALL    2210.0042333A
004037E0   .  84DB            TEST    BL, BL
004037E2   .  74 31           JE      SHORT 2210.00403815    <= 把这里NOP掉就爆破了

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

收藏
免费 11
支持
分享
最新回复 (21)
雪    币: 329
活跃值: (343)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
2
格式好难控制.....
2004-5-1 12:30
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
3
辛苦   :D
2004-5-1 12:36
0
雪    币: 403
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
收藏,学习中...
2004-5-1 16:05
0
雪    币: 329
活跃值: (343)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
5
讲得太详细了还是讲得太简单了?好像大家对这种题材不是很感兴趣....
2004-5-1 21:29
0
雪    币: 291
活跃值: (400)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
6
最初由 doskey 发布
讲得太详细了还是讲得太简单了?好像大家对这种题材不是很感兴趣....


好象《论坛精华4》有一篇类似的,是winzip的
2004-5-1 23:19
0
雪    币: 329
活跃值: (343)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
7
哦哦。这样啊。没仔细看。:p
2004-5-1 23:20
0
雪    币: 250
活跃值: (105)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
想要你的软件啊~  嘿嘿。。。
2004-5-2 01:07
0
雪    币: 228
活跃值: (130)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
顶顶顶
2004-5-3 16:39
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
我一般叫它"Self Keygen" :D
2004-5-3 17:44
0
雪    币: 295
活跃值: (506)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
对VC程序可以用RESHACKER获得编辑框的CONTROL ID,但好象BCB写的程序却得不到?
2004-5-7 19:08
0
雪    币: 332
活跃值: (479)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
12
最初由 fengxu 发布
对VC程序可以用RESHACKER获得编辑框的CONTROL ID,但好象BCB写的程序却得不到?

用Restorator 或干脆用 dede试试,
2004-5-7 20:10
0
雪    币: 116
活跃值: (220)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
13
最初由 doskey 发布
讲得太详细了还是讲得太简单了?好像大家对这种题材不是很感兴趣....


不错。。。希望多多看到你的大作。。。
2004-5-7 20:14
0
雪    币: 250
活跃值: (160)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zdd
14
有创意,佩服!
2004-5-7 20:49
0
雪    币: 295
活跃值: (506)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
15
最初由 laoqian 发布

用Restorator 或干脆用 dede试试,


好像BCB的资源文件里根本就没有Control ID?
2004-5-8 14:28
0
雪    币: 217
活跃值: (15)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
16
不错,很详细!:)
我喜欢,收藏!:)
2004-5-9 12:44
0
雪    币: 329
活跃值: (343)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
17
DELPHI程序可以用MessageBoxA来直接显示,我还没有想到其他很好的办法来处理DELPHI程序。
2004-5-9 18:07
0
雪    币:
能力值: (RANK: )
在线值:
发帖
回帖
粉丝
18
挺有意思啊,谢谢了。
2004-5-11 15:26
0
雪    币: 207
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
如果两边采用的算法不一样就麻烦了
2004-5-12 16:34
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
:D
2004-5-12 22:35
0
雪    币: 329
活跃值: (343)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
21
最初由 isfun 发布
如果两边采用的算法不一样就麻烦了


你说的两边算法不一样是指算注册码里面将明码注册码变形的代码吗?如果这个地方不一样也好搞,跟过去知道大概地方就可以了。另外,这篇文章对明码比较的软件应该是通用的,稍微修改一下就可以显示注册码了,具体怎么改,就是见仁见智了。:D
2004-5-13 22:09
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
强!偶不懂汇编,不过还是顶了
2004-5-13 23:51
0
游客
登录 | 注册 方可回帖
返回
//