首页
社区
课程
招聘
捡个便宜:HappyTown的crackme_0025分析
2006-10-23 23:03 6171

捡个便宜:HappyTown的crackme_0025分析

2006-10-23 23:03
6171
Crackme:HappyTown的crackme_0025
工具:Ollydbg,PEiD

在Crackme的发布贴(http://bbs.pediy.com/showthread.php?s=&threadid=33406)里,这个Crackme已经被讨论的差不多了,我就捡个便宜些个注册机好了。
用HorstStein在Crackme24的分析中使用的方法(http://bbs.pediy.com/showthread.php?s=&threadid=33448),IDA载入,使用Cryptolib.sig分析后导出map文件,再用Olldbg动态调试:

0040130A  |. 8D4424 10      LEA EAX,DWORD PTR SS:[ESP+10]
0040130E  |. 8D4C24 2C      LEA ECX,DWORD PTR SS:[ESP+2C]
00401312  |. 50             PUSH EAX
00401313  |. 8D5424 24      LEA EDX,DWORD PTR SS:[ESP+24]
00401317  |. 51             PUSH ECX
00401318  |. 52             PUSH EDX
00401319  |. E8 F2000000    CALL <CrackMe_.sub_401410>               ; KANAL
0040131E  |. 6A 00          PUSH 0
00401320  |. C785 34020000 >MOV DWORD PTR SS:[EBP+234],10
0040132A  |. E8 B1060000    CALL <CrackMe_._mirvar>
0040132F  |. 6A 00          PUSH 0
00401331  |. 8BF0           MOV ESI,EAX
00401333  |. E8 A8060000    CALL <CrackMe_._mirvar>
00401338  |. 6A 00          PUSH 0
0040133A  |. 8BF8           MOV EDI,EAX
0040133C  |. E8 9F060000    CALL <CrackMe_._mirvar>
00401341  |. 6A 00          PUSH 0
00401343  |. 8BD8           MOV EBX,EAX
00401345  |. E8 96060000    CALL <CrackMe_._mirvar>
0040134A  |. 68 18D14000    PUSH CrackMe_.0040D118                   ;  ASCII "16EDE8A1E238448FCFB017368DC4DC026F44BD6C5A531286267C16B9B6DC6EE0"
0040134F  |. 57             PUSH EDI
00401350  |. 8BE8           MOV EBP,EAX
00401352  |. E8 A9280000    CALL <CrackMe_._cinstr>
00401357  |. 68 D4D04000    PUSH CrackMe_.0040D0D4                   ;  ASCII "E7D47A8E307241130434E06254CE6561B4AF1790119DCB4B4544081A60B0A1BB"
0040135C  |. 55             PUSH EBP
0040135D  |. E8 9E280000    CALL <CrackMe_._cinstr>
00401362  |. 8B4424 54      MOV EAX,DWORD PTR SS:[ESP+54]
00401366  |. 8D8C24 2001000>LEA ECX,DWORD PTR SS:[ESP+120]
0040136D  |. 51             PUSH ECX
0040136E  |. 53             PUSH EBX
0040136F  |. C780 34020000 >MOV DWORD PTR DS:[EAX+234],100
00401379  |. E8 82280000    CALL <CrackMe_._cinstr>
0040137E  |. 8B5424 5C      MOV EDX,DWORD PTR SS:[ESP+5C]
00401382  |. 56             PUSH ESI                                 ;  ret
00401383  |. 55             PUSH EBP                                 ;  p=E7D4...
00401384  |. 53             PUSH EBX                                 ;  x=name
00401385  |. 57             PUSH EDI                                 ;  a=16ED...
00401386  |. C782 34020000 >MOV DWORD PTR DS:[EDX+234],10
00401390  |. E8 3B220000    CALL <CrackMe_._powmod>
00401395  |. 83C4 44        ADD ESP,44
00401398  |. 56             PUSH ESI                                 ;  ret
00401399  |. 55             PUSH EBP                                 ;  p=E7D4...
0040139A  |. 56             PUSH ESI                                 ;  x=ret
0040139B  |. 57             PUSH EDI                                 ;  a=16ED...
0040139C  |. E8 2F220000    CALL <CrackMe_._powmod>
004013A1  |. 8D8424 CC01000>LEA EAX,DWORD PTR SS:[ESP+1CC]
004013A8  |. 6A 00          PUSH 0
004013AA  |. 50             PUSH EAX
004013AB  |. 56             PUSH ESI
004013AC  |. 6A 00          PUSH 0
004013AE  |. E8 CD1F0000    CALL <CrackMe_._big_to_bytes>
004013B3  |. 56             PUSH ESI
004013B4  |. E8 F70F0000    CALL <CrackMe_._mirkill>
004013B9  |. 55             PUSH EBP
004013BA  |. E8 F10F0000    CALL <CrackMe_._mirkill>
004013BF  |. 57             PUSH EDI
004013C0  |. E8 EB0F0000    CALL <CrackMe_._mirkill>
004013C5  |. 53             PUSH EBX
004013C6  |. E8 E50F0000    CALL <CrackMe_._mirkill>
004013CB  |. 83C4 30        ADD ESP,30
004013CE  |. E8 FD0F0000    CALL <CrackMe_.sub_4023D0>
004013D3  |. B9 02000000    MOV ECX,2
004013D8  |. 8DBC24 BC01000>LEA EDI,DWORD PTR SS:[ESP+1BC]
004013DF  |. 8D7424 20      LEA ESI,DWORD PTR SS:[ESP+20]
004013E3  |. 33D2           XOR EDX,EDX
004013E5  |. F3:A7          REPE CMPS DWORD PTR ES:[EDI],DWORD PTR D>
004013E7  |. 5F             POP EDI
004013E8  |. 8BC2           MOV EAX,EDX
004013EA  |. 5E             POP ESI
004013EB  |. 5D             POP EBP
004013EC  |. 0F94C0         SETE AL
004013EF  |. 5B             POP EBX
004013F0  |. 81C4 74020000  ADD ESP,274
004013F6  |. C3             RETN

很明了:
x1=tea(serial,key)
powmod(a,x,p,ret);
x2=powmod(a,ret,p,ret);
x1=x2就成功!

keygen去了13楼,呵!

[培训]科锐软件逆向50期预科班报名即将截止,速来!!! 50期正式班报名火爆招生中!!!

收藏
免费 7
打赏
分享
最新回复 (12)
雪    币: 443
活跃值: (200)
能力值: ( LV9,RANK:1140 )
在线值:
发帖
回帖
粉丝
冷血书生 28 2006-10-23 23:22
2
0
捡个沙发坐坐~~~真厉害!
雪    币: 313
活跃值: (250)
能力值: ( LV9,RANK:650 )
在线值:
发帖
回帖
粉丝
hbqjxhw 16 2006-10-24 09:12
3
0
终于看到aalloverred把HappyTown的crackme_0025贴出,厉害厉害。
miracl.lib由于没有这个,程序无法跑起来。谁有请传一封。
雪    币: 370
活跃值: (78)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
Ryosuke 24 2006-10-24 09:35
4
0
这里唯一的一点玄机就是Happy的TEA用了little_endian,而标准的TEA是big_endian的
雪    币: 405
活跃值: (10)
能力值: ( LV9,RANK:1130 )
在线值:
发帖
回帖
粉丝
binbinbin 28 2006-10-24 10:47
5
0
我考!!!这个25我也弄了好久,终于有人搞定了。

下面准备做注册机
雪    币: 342
活跃值: (318)
能力值: ( LV12,RANK:740 )
在线值:
发帖
回帖
粉丝
aalloverred 18 2006-10-24 12:58
6
0
发帖仓促,澄清两点:
00401319  |. E8 F2000000    CALL <CrackMe_.sub_401410>               ; KANAL
使用PEiD里的插件KANAL分析知道是TEAN算法。

0040136F  |. C780 34020000 >MOV DWORD PTR DS:[EAX+234],100
00401379  |. E8 82280000    CALL <CrackMe_._cinstr>
是指将输入的用户名作为256进制的数处理。试出来的。
to冷血书生:powmod(a,x,p,ret)意思是ret=a^x mod p,其中^是指幂运算(比如:2^3=8),mod是指取余(比如:7 mod 5=2)。BTW:严重鄙视装嫩和笑话人

to hbqjxhw:不太理解你说的什么意思。我的keygen是10.23日写的。源代码文件也没整理太好,实际上我用的就是miracl库里带的那个ms32.lib,去miracl的网站上下载一个就行。

to Ryosuke:多谢指点。

to binbinbin:只是小打小闹,高手们懒得做这些体力活而已,共同学习,共同努力共同进步!
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yitianjian 2006-10-24 15:35
7
0
新手,学习一下
雪    币: 313
活跃值: (250)
能力值: ( LV9,RANK:650 )
在线值:
发帖
回帖
粉丝
hbqjxhw 16 2006-10-24 19:03
8
0
#pragma comment(lib,"ms32.lib")
#pragma comment(lib,"comctl32.lib")
extern "C"
{
#include <miracl.h>
}
#pragma comment(lib,"miracl.lib")

我的VC++总是出现连接错误。
LINK : fatal error LNK1104: cannot open file "miracl.lib"
雪    币: 11705
活跃值: (966)
能力值: ( LV12,RANK:779 )
在线值:
发帖
回帖
粉丝
readyu 12 2006-10-25 01:01
9
0
miracl.lib没放在连接路径下?

最初由 hbqjxhw 发布
#pragma comment(lib,"ms32.lib")
#pragma comment(lib,"comctl32.lib")
extern "C"
{
#include <miracl.h>
........
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
鹏翔 2006-10-25 09:51
10
0
太难懂了,我还得加强学习啊!!
雪    币: 313
活跃值: (250)
能力值: ( LV9,RANK:650 )
在线值:
发帖
回帖
粉丝
hbqjxhw 16 2006-10-25 12:39
11
0
最初由 readyu 发布
miracl.lib没放在连接路径下?

不是没放在连接路径下,我是搜索了我所有的文件,都没有找到此文件。
雪    币: 370
活跃值: (78)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
Ryosuke 24 2006-10-25 13:03
12
0
最初由 hbqjxhw 发布
不是没放在连接路径下,我是搜索了我所有的文件,都没有找到此文件。


是ms32.lib文件,自己add files一下就可以了。
雪    币: 342
活跃值: (318)
能力值: ( LV12,RANK:740 )
在线值:
发帖
回帖
粉丝
aalloverred 18 2006-10-25 13:10
13
0
最初由 hbqjxhw 发布
不是没放在连接路径下,我是搜索了我所有的文件,都没有找到此文件。


不好意思,上次没整理好,这次重新上传。
是ms32.lib文件,去http://indigo.ie/~mscott/下载一个miracl库的压缩包,里面有。
上传的附件:
游客
登录 | 注册 方可回帖
返回