實用圖書管理系統1.1

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

軟體名稱:實用圖書管理軟體v1.1版
下栽地址:
http://count.skycn.com/softdown.php?id=13993&url=http://on165-http.skycn.net:8181/down/bokMger0828.rar
作者:譚志勇
破解工具:ollydbg,w32Dasm ver10;hiew;fi;
破解者:   mejy
破解步驟:1、安裝該軟體!為什麼要提這個呢?呵呵!!看看作者的理想:
            為振興中華軟體業而奮鬥!:)
          2、我們的動作開始了!先執行一下該軟體,試著註冊一下,
            試練碼:123456;註冊碼:654321   看見“註冊碼不對,註冊
            不成功”,記下這句話。
(先來看看爆破)3、Fi出場,檢測加殼否。結果:三無產品!!Delphi編寫!!
          4、快樂中。。。。。
           5、用W32Dasm反之。用“字串參考”----〉“註冊不成功。”
              雙擊,來到
:0051F271 803D048F520000          cmp byte ptr [00528F04], 00
:0051F278 0F84CE000000            je 0051F34C
:0051F27E 8D45F0                  lea eaxdword ptr [ebp-10]
:0051F281 E87655EEFF              call 004047FC
:0051F286 8D55F8                  lea edxdword ptr [ebp-08]
:0051F289 8B8600030000            mov eaxdword ptr [esi+00000300]
:0051F28F E83C99F2FF              call 00448BD0
:0051F294 8D55F4                  lea edxdword ptr [ebp-0C]
:0051F297 8B8604030000            mov eaxdword ptr [esi+00000304]       
:0051F29D E82E99F2FF              call 00448BD0     //可在此附近設斷
:0051F2A2 8D4DF0                  lea ecxdword ptr [ebp-10]
:0051F2A5 8B55F8                  mov edxdword ptr [ebp-08]
:0051F2A8 A1008F5200              mov eaxdword ptr [00528F00]    //使用者申請碼
:0051F2AD E8FEFBFFFF              call 0051EEB0              //此處為計算注
                                       冊碼的演算法,我們f8跟進很快找到!
:0051F2B2 8B55F0                  mov edxdword ptr [ebp-10]
:0051F2B5 8B45F4                  mov eaxdword ptr [ebp-0C]
:0051F2B8 E82B9BEEFF              call 00408DE8              //可見此處為
                                             比較註冊碼的關鍵的call
:0051F2BD 85C0                    test eaxeax
:0051F2BF 740C                    je 0051F2CD        //跳則成功,不跳玩完。
                                              爆破時必改!---〉jne
* Possible StringData Ref from Code Obj ->"註冊碼不對,註冊不成功!"
                                  |
:0051F2C1 B8B0F35100              mov eax, 0051F3B0
:0051F2C6 E8E12AF2FF              call 00441DAC
:0051F2CB EB7F                    jmp 0051F34C

對如爆破軟體每次啟動都檢測登錄檔,所以每次都得註冊一下,很煩!不過還好未註冊版沒功能限制,只有次數限制。
改完後你就能成功註冊!不過下次啟動又變成了未註冊版!別急!!!
再來看看解除它的次數限制。同樣用串試參考---〉“軟體使用次數已到!“雙擊之
來到這0051F10D B8E8F15100              mov eax, 0051F1E8
我們從這往上看,來到一下地點:
* Possible StringData Ref from Code Obj ->"軟體沒註冊!還有"
                                  |
:0051F0CA 68BCF15100              push 0051F1BC
:0051F0CF 8D55E8                  lea edxdword ptr [ebp-18]
:0051F0D2 A1088F5200              mov eaxdword ptr [00528F08]
:0051F0D7 E8D0A1EEFF              call 004092AC
:0051F0DC FF75E8                  push [ebp-18]

* Possible StringData Ref from Code Obj ->"次使用機會!"     //顯而易見此處是計算使用次數的,我改了幾次都提示記憶體出錯,沒成功!不過沒關係,往下看:(若誰知道怎麼改這的次數請補充)
:0051F0DF 68D4F15100              push 0051F1D4
:0051F0E4 8D45EC                  lea eaxdword ptr [ebp-14]
:0051F0E7 BA03000000              mov edx, 00000003
:0051F0EC E8835AEEFF              call 00404B74
:0051F0F1 8B55EC                  mov edxdword ptr [ebp-14]
:0051F0F4 A1008F5200              mov eaxdword ptr [00528F00]
:0051F0F9 8B8008030000            mov eaxdword ptr [eax+00000308]
:0051F0FF E8FC9AF2FF              call 00448C00
:0051F104 833D088F520000          cmp dword ptr [00528F08], 00000000
:0051F10B 7F16                    jg 0051F123             //來到這,呵熟悉的面孔!如果超過試用次數往下執行,死悄悄,這兒很好改,jmp,管你超不超過我都跳走,不向下執行。呵呵!你執行10的n次方次都沒問題!;〉

* Possible StringData Ref from Code Obj ->"軟體使用次數已到!"    
                                  |
:0051F10D B8E8F15100              mov eax, 0051F1E8
:0051F112 E8952CF2FF              call 00441DAC
:0051F117 A1B0755200              mov eaxdword ptr [005275B0]
:0051F11C 8B00                    mov eaxdword ptr [eax]
:0051F11E E8F19FF4FF              call 00469114

其註冊資訊儲存在
* Possible StringData Ref from Code Obj ->"Software egbook emark"   //註冊碼的儲存鍵,將此主鍵下的值全部刪去,你的註冊版又變成了未註冊版!呵呵!可多次研究!
                                  |
:0051F2EA BAD0F35100              mov edx, 0051F3D0
:0051F2EF E8A055EEFF              call 00404894
:0051F2F4 B101                    mov cl, 01
:0051F2F6 8B55FC                  mov edxdword ptr [ebp-04]


:0051F330 C605048F520000          mov byte ptr [00528F04], 00
:0051F337 A1008F5200              mov eaxdword ptr [00528F00]
:0051F33C 8B8008030000            mov eaxdword ptr [eax+00000308]

* Possible StringData Ref from Code Obj ->"軟體已註冊"

以上就是爆破:總結一下 1、改0051F2BF 740C      je為jne(可註冊成功)
                                   2、改0051F10B 7F16      jg 為jmp(可解除限制)
用什麼工具就不用說啦!;)
下面看看註冊碼演算法:
上面已標出關鍵位置,下面看看註冊碼的計算方法:
0051F2AD E8FEFBFFFF              call 0051EEB0  //跟進f7鍵
來到
0051EEB0  /$ 55             PUSH EBP
0051EEB1  |. 8BEC           MOV EBP,ESP
0051EEB3  |. 83C4 F0        ADD ESP,-10
0051EEB6  |. 53             PUSH EBX
0051EEB7  |. 56             PUSH ESI
0051EEB8  |. 57             PUSH EDI
0051EEB9  |. 33DB           XOR EBX,EBX
0051EEBB  |. 895D F0        MOV DWORD PTR SS:[EBP-10],EBX
0051EEBE  |. 895D F4        MOV DWORD PTR SS:[EBP-C],EBX
0051EEC1  |. 894D F8        MOV DWORD PTR SS:[EBP-8],ECX
0051EEC4  |. 8955 FC        MOV DWORD PTR SS:[EBP-4],EDX
0051EEC7  |. 8B45 FC        MOV EAX,DWORD PTR SS:[EBP-4]
0051EECA  |. E8 CD5DEEFF    CALL 實用圖書.00404C9CSS:[
0051EECF  |. 33C0           XOR EAX,EAX
0051EED1  |. 55             PUSH EBP
0051EED2  |. 68 6AEF5100    PUSH 實用圖書.0051EF6A
0051EED7  |. 64:FF30        PUSH DWORD PTR FS:[EAX]
0051EEDA  |. 64:8920        MOV DWORD PTR FS:[EAX],ESP
0051EEDD  |. 8D45 F4        LEA EAX,DWORD PTR SS:[EBP-C]
0051EEE0  |. E8 1759EEFF    CALL 實用圖書.004047FCSS:[
0051EEE5  |. 8B45 FC        MOV EAX,DWORD PTR SS:[EBP-4]
0051EEE8  |. E8 C75BEEFF    CALL 實用圖書.00404AB4SS:[
0051EEED  |. 8BF0           MOV ESI,EAX              //esi為使用者申請碼長度
0051EEEF  |. 85F6           TEST ESI,ESI
0051EEF1  |. 7E 49          JLE SHORT 實用圖書.0051EF3C
0051EEF3  |. BB 01000000    MOV EBX,1                 //ebx為計數器,即為申請碼各個字元的位序,設為i;
0051EEF8  |> 8BCB           /MOV ECX,EBX           //ecx=ebx第一次是1,第二次是2……i=1,2,3…..
0051EEFA  |. 0FAFCB         |IMUL ECX,EBX           //ecx=i*i,  i的平方
0051EEFD  |. 8BC1           |MOV EAX,ECX           //將ecx賦給eax,下面的除法要用到作為分子。
0051EEFF  |. F7EB           |IMUL EBX               //計算i的立方
0051EF01  |. F7EB           |IMUL EBX                //計算i的四次方
0051EF03  |. 8D53 1E        |LEA EDX,DWORD PTR DS:[EBX+1E]          //將i+1EH賦值給edx
0051EF06  |. 8BFA           |MOV EDI,EDX                             //將edx賦給edi,作為除數即分母
0051EF08  |. 99             |CDQ
0051EF09  |. F7FF           |IDIV EDI                        //  計算 eax/edi 商為eax,餘數為edx 
0051EF0B  |. 8BFA           |MOV EDI,EDX              //將餘數存到 edi中,下面要用到
0051EF0D  |. 8BC1           |MOV EAX,ECX            //將i*i,賦給eax作為被除數;
0051EF0F  |. 8D53 14        |LEA EDX,DWORD PTR DS:[EBX+14]   //將(i+14H)賦值給 edx
0051EF12  |. 8BCA           |MOV ECX,EDX             //ecx=edx;作為分母;即除數
0051EF14  |. 99             |CDQ
0051EF15  |. F7F9           |IDIV ECX                    //除法運算  eax為商;edx為餘數

0051EF17  |. 03FA           |ADD EDI,EDX               //將edi=第一次的餘數與第二次的餘數相加
0051EF19  |. 03FB           |ADD EDI,EBX          //將edi=edi+i;
0051EF1B  |. 8D45 F0        |LEA EAX,DWORD PTR SS:[EBP-10]    //
0051EF1E  |. 8B55 FC        |MOV EDX,DWORD PTR SS:[EBP-4]      
0051EF21  |. 0FB6541A FF    |MOVZX EDX,BYTE PTR DS:[EDX+EBX-1]   //得到申請碼的第i為字元的ascii碼
0051EF26  |. 03D7           |ADD EDX,EDI              //將第i位的ascii碼值+上面求得的edi ;即為改為對應的註冊碼
0051EF28  |. E8 AF5AEEFF    |CALL 實用圖書.004049DC
0051EF2D  |. 8B55 F0        |MOV EDX,DWORD PTR SS:[EBP-10]
0051EF30  |. 8D45 F4        |LEA EAX,DWORD PTR SS:[EBP-C]
0051EF33  |. E8 845BEEFF    |CALL 實用圖書.00404ABCSS:[
0051EF38  |. 43             |INC EBX         
0051EF39  |. 4E             |DEC ESI                    //申請註冊碼的長度,沒算完一次減1
0051EF3A  |.^75 BC          JNZ SHORT 實用圖書.0051EEF8
算完了!簡單吧!
我的123456-----〉4HNZXF
我的第一篇破文,寫得不好,技術也有限,讓大家見笑了!!
序號產生器vc編寫
#include <iostream.h>
void main()
{
  char a[10];int len=0;
  int i,j,k,x,y,m;
  cin>>a;
  for(i=0;a[i]!=' ';i++)
         len++;
  for(i=0;i<len;i++)
  {    k=(i+1)*(i+1);
        j=k*k;
      m=i+1+30;
      x=j%m;
      y=k%(i+1+20);
      x=x+y+1+i;
      a[i]+=x;
  }
  for(i=0;i<len;i++)
    cout<<a[i];
  cout<<endl;
}


相關文章