- UID
- 8370
注册时间2006-2-21
阅读权限20
最后登录1970-1-1
以武会友
![Rank: 3](template/lewei_blue/images/star_level2.gif) ![Rank: 3](template/lewei_blue/images/star_level1.gif)
TA的每日心情![](source/plugin/dsu_paulsign/img/emot/ch.gif) | 擦汗 2024-10-29 12:21 |
---|
签到天数: 12 天 [LV.3]偶尔看看II
|
【破文标题】菜鸟maomaoma的算法练习破文二
【破文作者】maomaoma
【作者邮箱】
【作者主页】无
【破解工具】OD、PEiD
【破解平台】winxp
【软件名称】AD Sound Recorder 2.5
【软件大小】820KB
【原版下载】http://86516.onlinedown.net/soft/49157.htm
【保护方式】无
【软件简介】AD Sound Recorder 是一款音频录音工具,它可以录制由麦克风、CD、互联网,以及由媒体播放软件播放的音频。它可以即时捕捉正在播放的声音并把音频录制为 WAV/MP3 文件。支持 WAV、MP3 或 WMA 回放的功能,可编辑 MP3 文件的 ID3 标记。
【破解声明】我是菜鸟,学写破文,还请大侠多多指教:)
------------------------------------------------------------------------
【破解过程】
1、PEiD查主程序无壳(暗自高兴:)),Borland Delphi 6.0 - 7.0编译
2、OD载入,根据注册错误提示字符串“incorrect code!”下断点
3、F9运行,输入注册码:1234 5678908576,OD断下
4、具体分析过程及代码注释如下:
0049C970 /. 55 push ebp ; OD断在此处
0049C971 |. 8BEC mov ebp, esp
0049C973 |. 33C9 xor ecx, ecx
0049C975 |. 51 push ecx
0049C976 |. 51 push ecx
0049C977 |. 51 push ecx
0049C978 |. 51 push ecx
0049C979 |. 51 push ecx
0049C97A |. 51 push ecx
0049C97B |. 51 push ecx
0049C97C |. 53 push ebx
0049C97D |. 56 push esi
0049C97E |. 57 push edi
0049C97F |. 8945 FC mov [ebp-4], eax
0049C982 |. 33C0 xor eax, eax
0049C984 |. 55 push ebp
0049C985 |. 68 CACA4900 push 0049CACA
0049C98A |. 64:FF30 push dword ptr fs:[eax]
0049C98D |. 64:8920 mov fs:[eax], esp
0049C990 |. 68 C8000000 push 0C8 ; /Timeout = 200. ms
0049C995 |. E8 4A11F7FF call <jmp.&kernel32.Sleep> ; \Sleep
0049C99A |. C745 F8 32000>mov dword ptr [ebp-8], 32
0049C9A1 |. BF 28354A00 mov edi, 004A3528 ; ASCII 04,"1297" 真码第一部分表入口
0049C9A6 |> 8D55 F0 /lea edx, [ebp-10]
0049C9A9 |. 8B45 FC |mov eax, [ebp-4]
0049C9AC |. 8B80 14030000 |mov eax, [eax+314]
0049C9B2 |. E8 49E4FBFF |call 0045AE00 ; 获取假码第一部分
0049C9B7 |. 8B45 F0 |mov eax, [ebp-10]
0049C9BA |. 50 |push eax
0049C9BB |. 8D45 EC |lea eax, [ebp-14]
0049C9BE |. 8BD7 |mov edx, edi
0049C9C0 |. E8 F77EF6FF |call 004048BC : 注册码第一部分查表
0049C9C5 |. 8B55 EC |mov edx, [ebp-14]
0049C9C8 |. 58 |pop eax
0049C9C9 |. E8 9680F6FF |call 00404A64 ; 注册码第一部分比较call
0049C9CE |. 0F85 92000000 |jnz 0049CA66 ; 不等则跳
0049C9D4 |. BE 32000000 |mov esi, 32
0049C9D9 |. BB 24364A00 |mov ebx, 004A3624 ; 真码第二部分表入口\n1157717132\n1275215397\n1566343884\n2565740578\n2662106601\n2691296134\n2891286439\n2976152334\n3129671956\n3215798652\n3310760636\n3408623238\n3613335510\n3613792109\n3682429757\n4137188610\n4342271231\n4576195302\n4794974223\n4866392884\n5488323045 ..
0049C9DE |> 8D55 E8 |/lea edx, [ebp-18]
0049C9E1 |. 8B45 FC ||mov eax, [ebp-4]
0049C9E4 |. 8B80 18030000 ||mov eax, [eax+318]
0049C9EA |. E8 11E4FBFF ||call 0045AE00 ; 获取假码第二部分
0049C9EF |. 8B45 E8 ||mov eax, [ebp-18]
0049C9F2 |. 50 ||push eax
0049C9F3 |. 8D45 E4 ||lea eax, [ebp-1C]
0049C9F6 |. 8BD3 ||mov edx, ebx
0049C9F8 |. E8 BF7EF6FF ||call 004048BC ;
0049C9FD |. 8B55 E4 ||mov edx, [ebp-1C]
0049CA00 |. 58 ||pop eax
0049CA01 |. E8 5E80F6FF ||call 00404A64 ; 注册码第二部分比较call
0049CA06 |. 75 54 ||jnz short 0049CA5C ; 不等则跳
0049CA08 |. A1 D0384A00 ||mov eax, [4A38D0]
0049CA0D |. C600 01 ||mov byte ptr [eax], 1
0049CA10 |. A1 DC3A4A00 ||mov eax, [4A3ADC]
0049CA15 |. C700 F6750100 ||mov dword ptr [eax], 175F6
0049CA1B |. 8D45 F4 ||lea eax, [ebp-C]
0049CA1E |. 50 ||push eax ; /pHandle
0049CA1F |. 68 06000200 ||push 20006 ; |Access = KEY_WRITE
0049CA24 |. 6A 00 ||push 0 ; |Reserved = 0
0049CA26 |. 68 D8CA4900 ||push 0049CAD8 ; |software\adrosoft\ad sound recorder
0049CA2B |. 68 01000080 ||push 80000001 ; |hKey = HKEY_CURRENT_USER
0049CA30 |. E8 C79EF6FF ||call <jmp.&advapi32.RegOpenKeyExA> ; \RegOpenKeyExA
0049CA35 |. 85C0 ||test eax, eax
0049CA37 |. 75 63 ||jnz short 0049CA9C
0049CA39 |. 6A 04 ||push 4 ; /BufSize = 4
0049CA3B |. A1 DC3A4A00 ||mov eax, [4A3ADC] ; |
0049CA40 |. 50 ||push eax ; |Buffer => adsrecor.004A569C
0049CA41 |. 6A 04 ||push 4 ; |ValueType = REG_DWORD
0049CA43 |. 6A 00 ||push 0 ; |Reserved = 0
0049CA45 |. 68 FCCA4900 ||push 0049CAFC ; |control1
0049CA4A |. 8B45 F4 ||mov eax, [ebp-C] ; |
0049CA4D |. 50 ||push eax ; |hKey
0049CA4E |. E8 B99EF6FF ||call <jmp.&advapi32.RegSetValueExA> ; \RegSetValueExA
0049CA53 |. 8B45 F4 ||mov eax, [ebp-C]
0049CA56 |. 50 ||push eax ; /hKey
0049CA57 |. E8 989EF6FF ||call <jmp.&advapi32.RegCloseKey> ; \RegCloseKey
0049CA5C |> 83C3 0B ||add ebx, 0B
0049CA5F |. 4E ||dec esi
0049CA60 |.^ 0F85 78FFFFFF |\jnz 0049C9DE
0049CA66 |> 83C7 05 |add edi, 5
0049CA69 |. FF4D F8 |dec dword ptr [ebp-8]
0049CA6C |.^ 0F85 34FFFFFF \jnz 0049C9A6
0049CA72 |. A1 D0384A00 mov eax, [4A38D0]
0049CA77 |. 8038 00 cmp byte ptr [eax], 0
0049CA7A |. 75 0C jnz short 0049CA88
0049CA7C |. B8 10CB4900 mov eax, 0049CB10 ; incorrect code!
0049CA81 |. E8 3645F9FF call 00430FBC
0049CA86 |. EB 14 jmp short 0049CA9C
0049CA88 |> B8 28CB4900 mov eax, 0049CB28 ; thank you for using our product!\nyou have registered ad sound recorder!
0049CA8D |. E8 2A45F9FF call 00430FBC
0049CA92 |. A1 A0684A00 mov eax, [4A68A0]
0049CA97 |. E8 34AAFDFF call 004774D0
0049CA9C |> 33C0 xor eax, eax
0049CA9E |. 5A pop edx
0049CA9F |. 59 pop ecx
0049CAA0 |. 59 pop ecx
0049CAA1 |. 64:8910 mov fs:[eax], edx
0049CAA4 |. 68 D1CA4900 push 0049CAD1
0049CAA9 |> 8D45 E4 lea eax, [ebp-1C]
0049CAAC |. E8 A77BF6FF call 00404658
0049CAB1 |. 8D45 E8 lea eax, [ebp-18]
0049CAB4 |. E8 9F7BF6FF call 00404658
0049CAB9 |. 8D45 EC lea eax, [ebp-14]
0049CABC |. E8 977BF6FF call 00404658
0049CAC1 |. 8D45 F0 lea eax, [ebp-10]
0049CAC4 |. E8 8F7BF6FF call 00404658
0049CAC9 \. C3 retn
0049CACA .^ E9 0975F6FF jmp 00403FD8
0049CACF .^ EB D8 jmp short 0049CAA9
0049CAD1 . 5F pop edi
0049CAD2 . 5E pop esi
0049CAD3 . 5B pop ebx
0049CAD4 . 8BE5 mov esp, ebp
0049CAD6 . 5D pop ebp
0049CAD7 . C3 retn
内存中注册码表:
004A3528 04 31 32 39 37 04 31 33 39 37 04 31 34 36 31 04 129713971461 真码第一部分表
004A3538 31 35 35 36 04 31 36 31 32 04 32 34 30 37 04 32 1556161224072
004A3548 34 33 34 04 32 35 30 33 04 32 39 37 36 04 33 31 4342503297631
004A3558 35 36 04 33 33 34 37 04 33 34 38 37 04 33 36 30 5633473487360
004A3568 31 04 33 39 33 30 04 34 31 30 35 04 34 31 31 38 1393041054118
004A3578 04 34 33 35 36 04 34 33 36 33 04 34 34 30 31 04 435643634401
004A3588 34 35 34 33 04 34 35 35 38 04 34 38 35 32 04 34 4543455848524
004A3598 39 38 32 04 34 39 39 33 04 35 31 38 36 04 35 33 9824993518653
004A35A8 37 37 04 35 36 35 34 04 35 36 39 31 04 35 37 39 7756545691579
004A35B8 37 04 35 38 39 37 04 35 39 37 31 04 36 31 33 30 7589759716130
004A35C8 04 36 33 31 37 04 36 33 32 33 04 36 33 38 31 04 631763236381
004A35D8 36 35 35 36 04 36 36 39 37 04 36 37 35 30 04 37 6556669767507
004A35E8 33 38 33 04 37 36 30 39 04 37 37 31 35 04 37 38 3837609771578
004A35F8 34 36 04 37 39 32 39 04 38 31 36 30 04 38 38 36 4679298160886
004A3608 37 04 38 39 38 35 04 39 32 38 37 04 39 33 37 37 7898592879377
004A3618 04 39 37 34 30 04 39 39 38 32 8B C0 0A 31 31 35 97409982嬂.115 真码第二部分表
004A3628 37 37 31 37 31 33 32 0A 31 32 37 35 32 31 35 33 7717132.12752153
004A3638 39 37 0A 31 35 36 36 33 34 33 38 38 34 0A 32 35 97.1566343884.25
004A3648 36 35 37 34 30 35 37 38 0A 32 36 36 32 31 30 36 65740578.2662106
004A3658 36 30 31 0A 32 36 39 31 32 39 36 31 33 34 0A 32 601.2691296134.2
004A3668 38 39 31 32 38 36 34 33 39 0A 32 39 37 36 31 35 891286439.297615
004A3678 32 33 33 34 0A 33 31 32 39 36 37 31 39 35 36 0A 2334.3129671956.
004A3688 33 32 31 35 37 39 38 36 35 32 0A 33 33 31 30 37 3215798652.33107
004A3698 36 30 36 33 36 0A 33 34 30 38 36 32 33 32 33 38 60636.3408623238
004A36A8 0A 33 36 31 33 33 33 35 35 31 30 0A 33 36 31 33 .3613335510.3613
004A36B8 37 39 32 31 30 39 0A 33 36 38 32 34 32 39 37 35 792109.368242975
004A36C8 37 0A 34 31 33 37 31 38 38 36 31 30 0A 34 33 34 7.4137188610.434
004A36D8 32 32 37 31 32 33 31 0A 34 35 37 36 31 39 35 33 2271231.45761953
004A36E8 30 32 0A 34 37 39 34 39 37 34 32 32 33 0A 34 38 02.4794974223.48
004A36F8 36 36 33 39 32 38 38 34 0A 35 34 38 38 33 32 33 66392884.5488323
004A3708 30 34 35 0A 35 35 37 36 36 34 39 35 33 31 0A 35 045.5576649531.5
004A3718 37 30 35 39 31 34 39 38 36 0A 35 37 34 32 37 39 705914986.574279
004A3728 33 36 33 38 0A 35 38 34 33 32 39 36 32 38 30 0A 3638.5843296280.
004A3738 35 39 31 36 38 35 34 36 36 36 0A 35 39 32 38 37 5916854666.59287
004A3748 37 37 37 38 32 0A 36 32 33 39 37 33 33 39 35 31 77782.6239733951
004A3758 0A 36 33 35 34 34 39 33 30 36 32 0A 36 34 34 37 .6354493062.6447
004A3768 33 34 38 37 38 35 0A 36 34 37 30 36 34 39 36 38 348785.647064968
004A3778 35 0A 36 38 34 33 30 38 36 31 36 39 0A 37 31 33 5.6843086169.713
004A3788 37 39 38 32 30 35 30 0A 37 34 30 38 36 38 39 35 7982050.74086895
004A3798 31 33 0A 37 35 39 30 31 30 30 38 33 31 0A 37 37 13.7590100831.77
004A37A8 31 32 33 30 32 37 31 32 0A 37 38 30 33 36 35 39 12302712.7803659
004A37B8 34 35 34 0A 37 38 33 38 33 39 34 33 30 38 0A 37 454.7838394308.7
004A37C8 38 37 33 32 30 33 34 30 36 0A 38 31 30 30 36 38 873203406.810068
004A37D8 34 34 30 39 0A 38 35 35 32 30 38 31 30 39 37 0A 4409.8552081097.
004A37E8 38 35 37 35 31 32 33 34 33 38 0A 38 36 39 32 39 8575123438.86929
004A37F8 37 33 32 38 38 0A 38 37 32 38 37 30 36 31 32 36 73288.8728706126
004A3808 0A 39 32 31 31 31 32 33 33 34 38 0A 39 33 37 34 .9211123348.9374
004A3818 31 30 39 34 30 36 0A 39 35 30 37 33 36 32 39 39 109406.950736299
004A3828 31 0A 39 36 33 33 37 36 39 31 39 36 0A 39 37 35 1.9633769196.975
004A3838 35 30 36 36 35 34 34 0A 39 39 33 32 35 37 39 33 5066544.99325793
004A3848 39 38 98
------------------------------------------------------------------------
【破解总结】
1、注册码以表的形式储存于内存中
2、明码比较
3、两表中注册码任意两两组合即可得到一组可用注册码
一组可用注册码:
注册码第一部分:1297
注册码第二部分:1157717132
------------------------------------------------------------------------
【版权声明】本文系作者原创, 转载请注明作者并保持文章的完整, 谢谢! |
|