餅乾Flash播放器 V1.92-演算法+序號產生器原始碼

看雪資料發表於2015-11-15

破解者:HMILY[CCG][BCG]
軟體名稱:餅乾Flash播放器 V1.92
該軟體是用asprotect v1.23加的殼,是重啟驗證註冊碼
脫殼後反彙編有以下內容:
有兩部分機器碼,在此設第一部分為x1,第二部分為x2

* Possible StringData Ref from Code Obj ->"Code"
                                 |
:0048D38C B9A0D54800              mov ecx, 0048D5A0

* Possible StringData Ref from Code Obj ->"Registy"
                                 |
:0048D391 BAB0D54800              mov edx, 0048D5B0
:0048D396 8B18                    mov ebx, dword ptr [eax]
:0048D398 FF13                    call dword ptr [ebx]
:0048D39A 8B9550FFFFFF            mov edx, dword ptr [ebp+FFFFFF50]
:0048D3A0 8B860C030000            mov eax, dword ptr [esi+0000030C]
:0048D3A6 E8A1F0FAFF              call 0043C44C
:0048D3AB 8D954CFFFFFF            lea edx, dword ptr [ebp+FFFFFF4C]
:0048D3B1 8B860C030000            mov eax, dword ptr [esi+0000030C]
:0048D3B7 E860F0FAFF              call 0043C41C
:0048D3BC 8B854CFFFFFF            mov eax, dword ptr [ebp+FFFFFF4C]
:0048D3C2 50                      push eax
:0048D3C3 8D9544FFFFFF            lea edx, dword ptr [ebp+FFFFFF44]
:0048D3C9 8B8604030000            mov eax, dword ptr [esi+00000304]
:0048D3CF E848F0FAFF              call 0043C41C
:0048D3D4 8B8544FFFFFF            mov eax, dword ptr [ebp+FFFFFF44]
:0048D3DA E851B7F7FF              call 00408B30 ->把x1轉換為十六進位制
:0048D3DF 8BD8                    mov ebx, eax  ->儲存x1到ebx
:0048D3E1 C1E305                  shl ebx, 05   ->ebx=ebx<<5
:0048D3E4 2BD8                    sub ebx, eax  ->ebx=ebx-x1
:0048D3E6 81EB41010000            sub ebx, 00000141 ->ebx=ebx-0x141
:0048D3EC 8D9540FFFFFF            lea edx, dword ptr [ebp+FFFFFF40]
:0048D3F2 8B8604030000            mov eax, dword ptr [esi+00000304]
:0048D3F8 E81FF0FAFF              call 0043C41C
:0048D3FD 8B8540FFFFFF            mov eax, dword ptr [ebp+FFFFFF40]
:0048D403 E828B7F7FF              call 00408B30 ->再取一次x1到eax
:0048D408 03D8                    add ebx, eax  ->ebx=ebx+eax
:0048D40A 8D953CFFFFFF            lea edx, dword ptr [ebp+FFFFFF3C]
:0048D410 8B8608030000            mov eax, dword ptr [esi+00000308]
:0048D416 E801F0FAFF              call 0043C41C ->取x2
:0048D41B 8B853CFFFFFF            mov eax, dword ptr [ebp+FFFFFF3C] ->x2傳入eax
:0048D421 E80AB7F7FF              call 00408B30                     ->轉換x2為十六進位制
:0048D426 C1E002                  shl eax, 02                       ->eax=x2<<2
:0048D429 03D8                    add ebx, eax                      ->累加 ebx=ebx+eax
:0048D42B 8D9538FFFFFF            lea edx, dword ptr [ebp+FFFFFF38]
:0048D431 8B8608030000            mov eax, dword ptr [esi+00000308]
:0048D437 E8E0EFFAFF              call 0043C41C
:0048D43C 8B8538FFFFFF            mov eax, dword ptr [ebp+FFFFFF38] ->再取一次x2
:0048D442 E8E9B6F7FF              call 00408B30                     ->轉換x2為十六進位制
:0048D447 8D0480                  lea eax, dword ptr [eax+4*eax] ->取eax+eax*4的地址到eax
:0048D44A 2D86000000              sub eax, 00000086              ->eax=eax-0x86
:0048D44F 03D8                    add ebx, eax              ->ebx的值一直是累加 ebx=ebx+eax
:0048D451 8D045B                  lea eax, dword ptr [ebx+2*ebx] ->取ebx+ebx*2的地址到eax
:0048D454 2DE74D0000              sub eax, 00004DE7 ->eax=eax-0x4de7 過這裡下 ? eax得真碼
:0048D459 8D9548FFFFFF            lea edx, dword ptr [ebp+FFFFFF48]
:0048D45F E868B6F7FF              call 00408ACC
:0048D464 8B9548FFFFFF            mov edx, dword ptr [ebp+FFFFFF48] ->真碼進edx
:0048D46A 58                      pop eax                           ->假碼棧
:0048D46B E8CC75F7FF              call 00404A3C                     ->比較註冊碼
:0048D470 754F                    jne 0048D4C1                      ->不相等跳
:0048D472 A168B94900              mov eax, dword ptr [0049B968]
:0048D477 8B00                    mov eax, dword ptr [eax]
:0048D479 8B80D4030000            mov eax, dword ptr [eax+000003D4]
:0048D47F B201                    mov dl, 01
:0048D481 8B08                    mov ecx, dword ptr [eax]
:0048D483 FF51FC                  call [ecx-04]
:0048D486 C70560CD490001000000    mov dword ptr [0049CD60], 00000001 ->註冊標記
:0048D490 A190BC4900              mov eax, dword ptr [0049BC90]
:0048D495 8B00                    mov eax, dword ptr [eax]
:0048D497 8B80F8020000            mov eax, dword ptr [eax+000002F8]

* Possible StringData Ref from Code Obj ->"已註冊版本"
                                 |
:0048D49D BAC0D54800              mov edx, 0048D5C0
:0048D4A2 E8A5EFFAFF              call 0043C44C
:0048D4A7 A190BC4900              mov eax, dword ptr [0049BC90]
:0048D4AC 8B00                    mov eax, dword ptr [eax]
:0048D4AE 8B80F8020000            mov eax, dword ptr [eax+000002F8]
:0048D4B4 8B4068                  mov eax, dword ptr [eax+68]
:0048D4B7 BA00800000              mov edx, 00008000
:0048D4BC E8B73EF9FF              call 00421378

該軟體是用:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion
下的:RegisteredOwner值做為機器碼的計算基數,即你計算機的安裝名稱!
註冊碼儲存到BGFplayer.ini下的[Registy]
                            Code=884947

序號產生器原始碼:
//---------------------------------------------------------------------------
void __fastcall Tform1::OKBtnClick(TObject *Sender)
{
int a1=0,a2=0;unsigned long e=0,f=0,g=0,h=0;
if(UEdit->Text!=""&&UEdit1->Text!="")
  {
   a1=StrToInt(UEdit->Text);a2=StrToInt(UEdit1->Text);
   e=(a1<<5)-a1-0x141+a1;
   f=(a2<<2)+e;
   g=a2+a2*4-0x86+f;
   h=g+g*2-0x4de7;
   CEdit->Text=h;
  }
}

相關文章