简单算法-韩语小词典2004算法分析
———————————————————————————————————————————
【软件名称】:韩语小词典2004
【文章作者】:仙剑太郎
【网站地址】:中国X黑客小组 www.CnXHacker.com
【软件简介】:类似金山词霸式的查询韩语的词典软件.
【软件限制】:注册码方式
【破解声明】:初学Crack,只是感兴趣,没有其它目的。失误之处敬请诸位大侠赐教!
【破解工具】:Ollydbg
———————————————————————————————————————————
【破解过程】:
应该是比较旧的软件了,现在也停止升级了.新手来看看怎么分析算法,老鸟来个鼓励呵呵~
打开软件有要求注册的提示,我们进去后,在设置那里点注册,弹出的输入注册码的框框中随便输入,确定后有出错提示....-_-
本机机器码:NNRK-81E2-5NMN
试炼注册码:123456
由于是多语言的,所以不好依据提示的内容来确定位置,可以直接下断MessageBoxA,中断后返回来到如下:
0041B706 |. 68 00E00000 push 0E000 ; /Arg1 = 0000E000
0041B70B |. 8D4C24 08 lea ecx,dword ptr ss:[esp+8] ; |
0041B70F |. C74424 14 000>mov dword ptr ss:[esp+14],0 ; |
0041B717 |. E8 35670300 call MultiDic.00451E51 ; \MultiDic.00451E51
0041B71C |. A1 18ED4700 mov eax,dword ptr ds:[47ED18]
0041B721 |. 894424 00 mov dword ptr ss:[esp],eax
0041B725 |. 8B4C24 18 mov ecx,dword ptr ss:[esp+18]
0041B729 |. C64424 10 01 mov byte ptr ss:[esp+10],1
0041B72E |. 51 push ecx ; /Arg1
0041B72F |. 8D4C24 04 lea ecx,dword ptr ss:[esp+4] ; |
0041B733 |. E8 19670300 call MultiDic.00451E51 ; \MultiDic.00451E51
0041B738 |. 8B5424 04 mov edx,dword ptr ss:[esp+4]
0041B73C |. 8B4424 00 mov eax,dword ptr ss:[esp]
0041B740 |. 6A 00 push 0 ; /Style = MB_OK|MB_APPLMODAL
0041B742 |. 52 push edx ; |Title
0041B743 |. 50 push eax ; |Text
0041B744 |. FF15 60754600 call dword ptr ds:[<&USER32.GetFocus>] ; |[GetFocus
0041B74A |. 50 push eax ; |hOwner
0041B74B |. FF15 64754600 call dword ptr ds:[<&USER32.MessageBoxA>] ; \MessageBoxA
0041B751 |. 8D4C24 00 lea ecx,dword ptr ss:[esp] ;返回到这里
向上看,OD有个黑色的框连着这段,看开头,如下:
0041B6E0 /$ 6A FF push -1
0041B6E2 |. 68 50274600 push MultiDic.00462750 ; SE handler installation
0041B6E7 |. 64:A1 0000000>mov eax,dword ptr fs:[0]
0041B6ED |. 50 push eax
0041B6EE |. 64:8925 00000>mov dword ptr fs:[0],esp
显示这是一个CALL的入口,在0041B6E0下断,F9运行,看堆栈窗口
=====================================
0012B18C 0040F2B9 返回到 MultiDic.0040F2B9 来自 MultiDic.0041B6E0
=====================================
说明了有个CALL来自0040F2B9,取消断点后,CTRL+G ,0040F2B9,来到如下:
0040F2A8 . /EB 0F jmp short MultiDic.0040F2B9
0040F2AA > |68 30E00000 push 0E030 ; /Arg1 = 0000E030
0040F2AF . |B9 C0104800 mov ecx,MultiDic.004810C0 ; |
0040F2B4 . |E8 27C40000 call MultiDic.0041B6E0 ; \MultiDic.0041B6E0
0040F2B9 > \8D4C24 10 lea ecx,dword ptr ss:[esp+10] ;来到这里
通过0040F2AA前面的>可以看到,有跳转到这里调用出错提示0040F2B4 ,鼠标点一下0040F2AA所在行,沿着红色的线条向上找,来到这里
0040F230 > \1BC0 sbb eax,eax
0040F232 . 83D8 FF sbb eax,-1
0040F235 > 85C0 test eax,eax
0040F237 75 71 jnz short MultiDic.0040F2AA
很经典的比较方式.在0040F237下断,运行,中断后修改jnz为je,呵,暴破了吧.我们现在要找算法,所以还得继续.继续向上番,看到有几个CALL,呵有眉目了.
0040F1BF . 50 push eax ; /Arg1
0040F1C0 > . C68424 3C0300>mov byte ptr ss:[esp+33C],1
0040F1C8 . E8 43620000 call MultiDic.00415410 ; \MultiDic.00415410
0040F1CD . 8D8C24 300100>lea ecx,dword ptr ss:[esp+130]
0040F1D4 . 8D5424 18 &nb
[1] [2] [3] 下一页