• 标 题:不知道谁能把它算法说一下? (17千字)
  • 作 者:peterchen
  • 时 间:2001-5-10 18:09:41
  • 链 接:http://bbs.pediy.com

只会暴力破解它,不知道哪位能追出密码或把算码过程分析一下?
破解人:PeterChen
名称:popfix.zip
URL:http://software.wx88.net/down/popfix.zip
大小: 1023KB
完成时间:Tue May 08 20:32:55 2001
引用页:
注释:软件名称:Popfix
整理日期:2001.1.1
最新版本:1.07
文件大小:1023KB
软件授权:共享软件
使用平台:Win95/98/NT
发布公司:Home Page
软件简介:
  Popfix是一个可以用来清除wav声音文件爆音、杂音的工具,大多数抓好的音轨或录音储存成wav的声音文件大都会有爆音、杂音出现,如果你的音效卡好一点的话是可以听出来的。现在你可以在将wav声音文件转成MP3时先使用Popfix将爆音、杂音清除,而Popfix在处理将wav声音文件爆音、杂音清除时的速度亦相当快,经由Popfix将wav声音文件爆音、杂音清除后所转好的MP3声音品质可以提升不少。


:00409025 B91C824900              mov ecx, 0049821C

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00409023(U)
|
:0040902A 8BF9                    mov edi, ecx
:0040902C 33C0                    xor eax, eax
:0040902E 56                      push esi
:0040902F 83C9FF                  or ecx, FFFFFFFF===>4294967295与ecx做或运算
:00409032 F2                      repnz
:00409033 AE                      scasb
:00409034 F7D1                    not ecx
:00409036 2BF9                    sub edi, ecx---> edi=edi-ecx
:00409038 8DB578FEFFFF            lea esi, dword ptr [ebp+FFFFFE78]
:0040903E 87F7                    xchg edi, esi--->将edi与esi的值互换
:00409040 8BD1                    mov edx, ecx
:00409042 8BC7                    mov eax, edi
:00409044 C1E902                  shr ecx, 02----->ecx的值逻辑右移两位
:00409047 8D45EC                  lea eax, dword ptr [ebp-14]
:0040904A F3                      repz
:0040904B A5                      movsd
:0040904C 8BCA                    mov ecx, edx
:0040904E BA02000000              mov edx, 00000002
:00409053 83E103                  and ecx, 00000003--->ecx=ecx+3
:00409056 F3                      repz
:00409057 A4                      movsb
:00409058 5E                      pop esi
:00409059 FF4DB0                  dec [ebp-50]
:0040905C E8A3AA0800              call 00493B04
:00409061 8D8578FEFFFF            lea eax, dword ptr [ebp+FFFFFE78]
:00409067 E81C370700              call 0047C788
:0040906C 33FF                    xor edi, edi//----->异或,以前不明白现在查汇编手册!
:0040906E 8D9D78FEFFFF            lea ebx, dword ptr [ebp+FFFFFE78] 现知道了当两个值相同就为0!
:00409074 EB18                    jmp 0040908E                      也就是我们常说的清零!

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040909D(C)
|
:00409076 0FBE03                  movsx eax, byte ptr [ebx]\将ebx值输进eax
:00409079 83F831                  cmp eax, 00000031        |eax值与31h=49d=字符1
:0040907C 7503                    jne 00409081            /
:0040907E C60349                  mov byte ptr [ebx], 49----? 是不是最后结果了?
                                                              算密码时要49h=73d=I
                                                              算要时是要十六进制值还是字串I?
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040907C(C)
|
:00409081 0FBE13                  movsx edx, byte ptr [ebx]
:00409084 83FA30                  cmp edx, 00000030 30h=48d=0
:00409087 7503                    jne 0040908C         
:00409089 C6034F                  mov byte ptr [ebx], 4F 4fh=79d=o

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00409087(C)
|
:0040908C 47                      inc edi edi=edi+1
:0040908D 43                      inc ebx ebx=ebx+1

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00409074(U)
|
:0040908E 8D8D78FEFFFF            lea ecx, dword ptr [ebp+FFFFFE78]
:00409094 51                      push ecx
:00409095 E882BF0700              call 0048501C
:0040909A 59                      pop ecx
:0040909B 3BF8                    cmp edi, eax
:0040909D 7CD7                    jl 00409076
:0040909F 8D8578FEFFFF            lea eax, dword ptr [ebp+FFFFFE78]
:004090A5 8B5590                  mov edx, dword ptr [ebp-70]
:004090A8 83C208                  add edx, 00000008

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004090CD(C)
|
:004090AB 8A08                    mov cl, byte ptr [eax]
:004090AD 3A0A                    cmp cl, byte ptr [edx]
:004090AF 0F858F020000            jne 00409344//-------->(1) je->84
:004090B5 84C9                    test cl, cl
:004090B7 7416                    je 004090CF
:004090B9 8A4801                  mov cl, byte ptr [eax+01]
:004090BC 3A4A01                  cmp cl, byte ptr [edx+01]
:004090BF 0F857F020000            jne 00409344//-------->(2) je->84
:004090C5 83C002                  add eax, 00000002 eax=eax+2h
:004090C8 83C202                  add edx, 00000002 edx=edx+2h
:004090CB 84C9                    test cl, cl
:004090CD 75DC                    jne 004090AB

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004090B7(C)
|
:004090CF 0F856F020000            jne 00409344
:004090D5 6804010000              push 00000104
:004090DA 8D858CFEFFFF            lea eax, dword ptr [ebp+FFFFFE8C]
:004090E0 50                      push eax

* Reference To: KERNEL32.GetWindowsDirectoryA, Ord:0000h
                                  |
:004090E1 E86AB10800              Call 00494250
:004090E6 8D9554FEFFFF            lea edx, dword ptr [ebp+FFFFFE54]
:004090EC 52                      push edx
:004090ED 8D8D8CFEFFFF            lea ecx, dword ptr [ebp+FFFFFE8C]
:004090F3 51                      push ecx
:004090F4 E85BD80700              call 00486954
:004090F9 66C745A42C00            mov [ebp-5C], 002C
:004090FF 83C408                  add esp, 00000008

* Possible StringData Ref from Data Obj ->"Software\VKN Electronics\Popfix"
                                  |
:00409102 BA1D824900              mov edx, 0049821D
:00409107 8D45E8                  lea eax, dword ptr [ebp-18]
:0040910A E8F1A80800              call 00493A00
:0040910F FF45B0                  inc [ebp-50]
:00409112 8B08                    mov ecx, dword ptr [eax]
:00409114 B201                    mov dl, 01
:00409116 A1CC644200              mov eax, dword ptr [004264CC]
:0040911B E884E30100              call 004274A4
:00409120 8BD8                    mov ebx, eax
:00409122 FF4DB0                  dec [ebp-50]
:00409125 8D45E8                  lea eax, dword ptr [ebp-18]
:00409128 BA02000000              mov edx, 00000002
:0040912D E8D2A90800              call 00493B04
:00409132 33C9                    xor ecx, ecx
:00409134 894DDC                  mov dword ptr [ebp-24], ecx
:00409137 8D55DC                  lea edx, dword ptr [ebp-24]
:0040913A FF45B0                  inc [ebp-50]
:0040913D 8B86D0020000            mov eax, dword ptr [esi+000002D0]
:00409143 E804930400              call 0045244C
:00409148 8D4DDC                  lea ecx, dword ptr [ebp-24]
:0040914B 8B01                    mov eax, dword ptr [ecx]
:0040914D 50                      push eax

* Possible StringData Ref from Data Obj ->"First Name"
                                  |
:0040914E BA4A824900              mov edx, 0049824A
:00409153 8D45E0                  lea eax, dword ptr [ebp-20]
:00409156 E8A5A80800              call 00493A00
:0040915B FF45B0                  inc [ebp-50]
:0040915E 8B10                    mov edx, dword ptr [eax]
:00409160 8D45E4                  lea eax, dword ptr [ebp-1C]
:00409163 52                      push edx

* Possible StringData Ref from Data Obj ->"Registration"
                                  |
:00409164 BA3D824900              mov edx, 0049823D
:00409169 66C745A43800            mov [ebp-5C], 0038
:0040916F E88CA80800              call 00493A00
:00409174 FF45B0                  inc [ebp-50]
:00409177 8B10                    mov edx, dword ptr [eax]
:00409179 8BC3                    mov eax, ebx
:0040917B 59                      pop ecx
:0040917C E83FE40100              call 004275C0
:00409181 FF4DB0                  dec [ebp-50]
:00409184 8D45DC                  lea eax, dword ptr [ebp-24]
:00409187 BA02000000              mov edx, 00000002
:0040918C E873A90800              call 00493B04
:00409191 FF4DB0                  dec [ebp-50]
:00409194 8D45E0                  lea eax, dword ptr [ebp-20]
:00409197 BA02000000              mov edx, 00000002
:0040919C E863A90800              call 00493B04
:004091A1 FF4DB0                  dec [ebp-50]
:004091A4 8D45E4                  lea eax, dword ptr [ebp-1C]
:004091A7 BA02000000              mov edx, 00000002
:004091AC E853A90800              call 00493B04
:004091B1 33C9                    xor ecx, ecx
:004091B3 894DD0                  mov dword ptr [ebp-30], ecx
:004091B6 8D55D0                  lea edx, dword ptr [ebp-30]
:004091B9 FF45B0                  inc [ebp-50]
:004091BC 8B86D8020000            mov eax, dword ptr [esi+000002D8]
:004091C2 E885920400              call 0045244C
:004091C7 8D4DD0                  lea ecx, dword ptr [ebp-30]
:004091CA 8B01                    mov eax, dword ptr [ecx]
:004091CC 50                      push eax

* Possible StringData Ref from Data Obj ->"Last Name"
                                  |
:004091CD BA62824900              mov edx, 00498262
:004091D2 8D45D4                  lea eax, dword ptr [ebp-2C]
:004091D5 E826A80800              call 00493A00
:004091DA FF45B0                  inc [ebp-50]
:004091DD 8B10                    mov edx, dword ptr [eax]
:004091DF 8D45D8                  lea eax, dword ptr [ebp-28]
:004091E2 52                      push edx

* Possible StringData Ref from Data Obj ->"Registration"
                                  |
:004091E3 BA55824900              mov edx, 00498255
:004091E8 66C745A44400            mov [ebp-5C], 0044
:004091EE E80DA80800              call 00493A00
:004091F3 FF45B0                  inc [ebp-50]
:004091F6 8B10                    mov edx, dword ptr [eax]
:004091F8 8BC3                    mov eax, ebx
:004091FA 59                      pop ecx
:004091FB E8C0E30100              call 004275C0
:00409200 FF4DB0                  dec [ebp-50]
:00409203 8D45D0                  lea eax, dword ptr [ebp-30]
:00409206 BA02000000              mov edx, 00000002
:0040920B E8F4A80800              call 00493B04
:00409210 FF4DB0                  dec [ebp-50]
:00409213 8D45D4                  lea eax, dword ptr [ebp-2C]
:00409216 BA02000000              mov edx, 00000002
:0040921B E8E4A80800              call 00493B04
:00409220 FF4DB0                  dec [ebp-50]
:00409223 8D45D8                  lea eax, dword ptr [ebp-28]
:00409226 BA02000000              mov edx, 00000002
:0040922B E8D4A80800              call 00493B04
:00409230 8B4D90                  mov ecx, dword ptr [ebp-70]
:00409233 8B4104                  mov eax, dword ptr [ecx+04]
:00409236 038572FEFFFF            add eax, dword ptr [ebp+FFFFFE72]
:0040923C 50                      push eax

* Possible StringData Ref from Data Obj ->"Code"
                                  |
:0040923D BA79824900              mov edx, 00498279
:00409242 8D45C8                  lea eax, dword ptr [ebp-38]
:00409245 E8B6A70800              call 00493A00
:0040924A FF45B0                  inc [ebp-50]
:0040924D 8B10                    mov edx, dword ptr [eax]
:0040924F 8D45CC                  lea eax, dword ptr [ebp-34]
:00409252 52                      push edx

* Possible StringData Ref from Data Obj ->"Registration"
                                  |
:00409253 BA6C824900              mov edx, 0049826C
:00409258 66C745A45000            mov [ebp-5C], 0050
:0040925E E89DA70800              call 00493A00
:00409263 FF45B0                  inc [ebp-50]
:00409266 8B10                    mov edx, dword ptr [eax]
:00409268 8BC3                    mov eax, ebx
:0040926A 59                      pop ecx
:0040926B E800E50100              call 00427770
:00409270 FF4DB0                  dec [ebp-50]
:00409273 8D45C8                  lea eax, dword ptr [ebp-38]
:00409276 BA02000000              mov edx, 00000002
:0040927B E884A80800              call 00493B04
:00409280 FF4DB0                  dec [ebp-50]
:00409283 8D45CC                  lea eax, dword ptr [ebp-34]
:00409286 BA02000000              mov edx, 00000002
:0040928B E874A80800              call 00493B04
:00409290 8B4D90                  mov ecx, dword ptr [ebp-70]
:00409293 8B01                    mov eax, dword ptr [ecx]
:00409295 038572FEFFFF            add eax, dword ptr [ebp+FFFFFE72]
:0040929B 50                      push eax

* Possible StringData Ref from Data Obj ->"Key"
                                  |
:0040929C BA8B824900              mov edx, 0049828B
:004092A1 8D45C0                  lea eax, dword ptr [ebp-40]
:004092A4 E857A70800              call 00493A00
:004092A9 FF45B0                  inc [ebp-50]
:004092AC 8B10                    mov edx, dword ptr [eax]
:004092AE 8D45C4                  lea eax, dword ptr [ebp-3C]
:004092B1 52                      push edx

* Possible StringData Ref from Data Obj ->"Registration"
                                  |
:004092B2 BA7E824900              mov edx, 0049827E
:004092B7 66C745A45C00            mov [ebp-5C], 005C
:004092BD E83EA70800              call 00493A00
:004092C2 FF45B0                  inc [ebp-50]
:004092C5 8B10                    mov edx, dword ptr [eax]
:004092C7 8BC3                    mov eax, ebx
:004092C9 59                      pop ecx
:004092CA E8A1E40100              call 00427770
:004092CF FF4DB0                  dec [ebp-50]
:004092D2 8D45C0                  lea eax, dword ptr [ebp-40]
:004092D5 BA02000000              mov edx, 00000002
:004092DA E825A80800              call 00493B04
:004092DF FF4DB0                  dec [ebp-50]
:004092E2 8D45C4                  lea eax, dword ptr [ebp-3C]
:004092E5 BA02000000              mov edx, 00000002
:004092EA E815A80800              call 00493B04
:004092EF A16CF94900              mov eax, dword ptr [0049F96C]
:004092F4 6A00                    push 00000000

* Possible StringData Ref from Data Obj ->"Popfix"
                                  |
:004092F6 B9D4824900              mov ecx, 004982D4

* Possible StringData Ref from Data Obj ->"Your registration was successful.
Thank "
                                        ->"you for registering Popfix."
                                  |
:004092FB BA8F824900              mov edx, 0049828F
:00409300 8B00                    mov eax, dword ptr [eax]
:00409302 E84DA60800              call 00493954
:00409307 8BFB                    mov edi, ebx
:00409309 897DB8                  mov dword ptr [ebp-48], edi
:0040930C 85FF                    test edi, edi
:0040930E 741E                    je 0040932E
:00409310 8B07                    mov eax, dword ptr [edi]
:00409312 8945BC                  mov dword ptr [ebp-44], eax
:00409315 66C745A47400            mov [ebp-5C], 0074
:0040931B BA03000000              mov edx, 00000003
:00409320 8B45B8                  mov eax, dword ptr [ebp-48]
:00409323 8B08                    mov ecx, dword ptr [eax]
:00409325 FF51FC                  call [ecx-04]
:00409328 66C745A46800            mov [ebp-5C], 0068

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040930E(C)
|
:0040932E C7862C02000001000000    mov dword ptr [esi+0000022C], 00000001
:00409338 8B5594                  mov edx, dword ptr [ebp-6C]
:0040933B 64891500000000          mov dword ptr fs:[00000000], edx
:00409342 EB22                    jmp 00409366

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00408F79(C), :004090AF(C), :004090BF(C), :004090CF(C)
|
:00409344 A16CF94900              mov eax, dword ptr [0049F96C]
:00409349 6A10                    push 00000010

* Possible StringData Ref from Data Obj ->"Popfix"
                                  |
:0040934B B91A834900              mov ecx, 0049831A

* Possible StringData Ref from Data Obj ->"Sorry, that registration code "
                                        ->"is not valid.
Please try again."
                                  |
:00409350 BADB824900              mov edx, 004982DB
:00409355 8B00

  • 标 题:大概讲一下,不敢保证全对!还请高手指教!如果哪位可以写出注册机,希望贴出来,大家研究研究! (4千字)
  • 作 者:小球[CCG]
  • 时 间:2001-5-11 14:59:31

大概讲一下,不敢保证全对!还请高手指教!如果哪位可以写出注册机,希望贴出来,大家研究研究!
首先输入如下信息:First name:abcd    
                  Last  name:efghi
                  Registeration code:1234567890(任意)


:00409659 8D8530FFFFFF            lea eax, dword ptr [ebp+FFFFFF30]
:0040965F E824310700              call 0047C788  **小写转大写
:00409664 33F6                    xor esi, esi
:00409666 8D9D30FFFFFF            lea ebx, dword ptr [ebp+FFFFFF30]
:0040966C EB24                    jmp 00409692

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004096A1(C)
|
:0040966E 0FBE03                  movsx eax, byte ptr [ebx]  ***这里是真正开始对你的信息进行计算!
:00409671 99                      cdq
:00409672 52                      push edx
:00409673 50                      push eax
:00409674 8B45F8                  mov eax, dword ptr [ebp-08]
:00409677 8B55FC                  mov edx, dword ptr [ebp-04]
:0040967A E8512B0800              call 0048C1D0  **这里就是了!按F8进入
:0040967F 8945F8                  mov dword ptr [ebp-08], eax
:00409682 8955FC                  mov dword ptr [ebp-04], edx
:00409685 0FBE4301                movsx eax, byte ptr [ebx+01]
:00409689 99                      cdq
:0040968A 0145F8                  add dword ptr [ebp-08], eax
:0040968D 1155FC                  adc dword ptr [ebp-04], edx
:00409690 46                      inc esi
:00409691 43                      inc ebx
:00409692 8D8D30FFFFFF            lea ecx, dword ptr [ebp+FFFFFF30]
:00409698 51                      push ecx
:00409699 E87EB90700              call 0048501C  **计算需要循环的次数,如果没有错的话应该是你first name+last name的长度。
:0040969E 59                      pop ecx
:0040969F 3BF0                    cmp esi, eax
:004096A1 7CCB                    jl 0040966E
计算开始:
* Referenced by a CALL at Addresses:
|:0040967A  , :004889FC 
:0048C1D0 52                      push edx
:0048C1D1 50                      push eax
:0048C1D2 8B442410                mov eax, dword ptr [esp+10]
:0048C1D6 F72424                  mul dword ptr [esp]
:0048C1D9 8BC8                    mov ecx, eax
:0048C1DB 8B442404                mov eax, dword ptr [esp+04]
:0048C1DF F764240C                mul [esp+0C]
:0048C1E3 03C8                    add ecx, eax
:0048C1E5 8B0424                  mov eax, dword ptr [esp]
:0048C1E8 F764240C                mul [esp+0C]
:0048C1EC 03D1                    add edx, ecx
:0048C1EE 59                      pop ecx
:0048C1EF 59                      pop ecx
:0048C1F0 C20800                  ret 0008

对其算法看了一下,也没太看懂,大概过程如下:
如果输入abcd,公式是X=((((a+a)*a+b)*b+c)*c+d)*d,然后对last name计算,这部分好像也是一个公式。
得初的数被24(十六进制)除,余数小于A的加上30,大于的加上F6。如下程序所示:
|:0048C992(C)
|
:0048C976 4B                      dec ebx
:0048C977 8A03                    mov al, byte ptr [ebx]
:0048C979 3C0A                    cmp al, 0A  **比较余数
:0048C97B 7D08                    jge 0048C985
:0048C97D 83C030                  add eax, 00000030  **变成数字
:0048C980 8806                    mov byte ptr [esi], al **当然了这里就是存放注册码的位置了!呵呵....被发现了!
:0048C982 46                      inc esi
:0048C983 EB08                    jmp 0048C98D

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0048C97B(C)
|
:0048C985 02451C                  add al, byte ptr [ebp+1C]
:0048C988 04F6                    add al, F6
:0048C98A 8806                    mov byte ptr [esi], al
:0048C98C 46                      inc esi

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0048C974(U), :0048C983(U)
|
:0048C98D 8D55BC                  lea edx, dword ptr [ebp-44]
:0048C990 3BDA                    cmp ebx, edx 
:0048C992 75E2                    jne 0048C976 **小循环

注意了!程序中有两处这样的程序段,一个是验证我们输入的注册信息是否正确的,一个就是下一次启动时对注册表中的信息进行确定的程序段!键值HKEY_CURRENT_USER\Software\VKN Electronics\Popfix\Registration
好了!谁来写个注册机?在49fdf4处可以看到注册码
我的注册信息:
                  First name: 小球[CCG]    
                  Last  name:china crack group
                  Registeration code:EIV55OQ5R4ZK