管家婆7.2A輝煌單機版破解技巧 (4千字)

看雪資料發表於2002-12-04


內容:
管家婆7.2A輝煌單機版破解技巧

管家婆7.2A單機版無狗進入時會有提示,說找不到加密狗,透過除錯可以找到關鍵的跳轉,跳過後
點選基本錄入時會提示系統出錯,“XXXXX地址的值FFFFFFF”,而XXXXX地址是在主檔案裡,不在
核心裡。看來這裡程式裡故意設計的陷井,無狗時會把XXXXX地址裡寫入0或者FFFFFFFF,那麼現在
急需要做的就是找到正確的地址,讓它能夠正常執行,先看下面的程式碼分析。

=====PART  A==================================
017F:006254DA  MOV      [EDX],EAX
017F:006254DC  MOV      EAX,[00639820]
017F:006254E1  MOV      DWORD [EAX],12
017F:006254E7  CALL    00628CBB     //這裡會到B部分,它會向[EAX]裡寫入一值。
017F:006254EC  MOV      EBX,EAX
017F:006254EE  MOV      EAX,[0064BF84]
017F:006254F3  MOV      EDX,[EAX]
017F:006254F5  CALL    NEAR [EDX+CC]   //這裡提示確定日期,注意從這裡會到D部分。
017F:006254FB  MOV      EDX,ESI
017F:006254FD  MOV      EAX,[0064BF84]
017F:00625502  MOV      EAX,[EAX+02CC]
017F:00625508  CALL    004A75EC
017F:0062550D  TEST    EBX,EBX
017F:0062550F  JNZ      0062551E
017F:00625511  MOV      EAX,[00639854]
017F:00625516  CMP      DWORD [EAX],ED1037FF //[EAX]裡的值很關鍵
017F:0062551C  JZ      00625545       //跳到625545就不會出現找不到加密狗的提示了。


=====PART  B==================================
017F:00627FDC  MOV      EAX,[EBP+FFFFFE3C] //EAX為一個值,這裡隨機從狗裡讀出的。
017F:00627FE2  XOR      EAX,[EBP+FFFFFF10] //EAX與[EBP+FFFFFF10]異或。
017F:00627FE8  MOV      [0063AF60],EAX   //得出的EAX寫入[63AF60]也就是A部分的[EAX]
017F:00627FED  JMP      SHORT 00628014
017F:00627FEF  JMP      SHORT 00627FF2
017F:00627FF1  ADD      DWORD [ECX+FFFE38BD],003000FF
017F:00627FFB  ADD      [ESI+EDX-7F],DH

=====PART  C=================================
017F:00633D23  MOV      DWORD [ECX],01
017F:00633D29  ADD      DWORD [EBP-08],BYTE +04
017F:00633D2D  ADD      EDX,BYTE +04
017F:00633D30  DEC      EAX
017F:00633D31  JNZ      00633D1A
017F:00633D33  MOV      [0064C08C],EDI
017F:00633D39  MOV      EDI,01
017F:00633D3E  MOV      EAX,[006396C8] 
017F:00633D43  MOV      EAX,[EAX]  //執行過這一段後EAX=0,不太正常,然後在下面的CALL
017F:00633D45  SHL      EAX,02    //裡會出錯。看來這裡是關鍵,未執行上段前EAX=46C020
017F:00633D48  CALL    004526FC
017F:00633D4D  MOV      [0064C034],EAX
017F:00633D52  MOV      EAX,[ESI]
017F:00633D54  CALL    00634370
017F:00633D59  DEC      EDI
017F:00633D5A  JNZ      NEAR 00633E06
017F:00633D60  LEA      EAX,[EBP-0C]
46C020裡的值是關鍵,接下來要做的是看看程式在哪裡向46C020寫入0的,下BPM 46C020 W
重新執行軟體,在點選確認日期時會被攔住。
=====PART  D================================
017F:00625736  MOV      EAX,ECX    //此處的EAX=0
017F:00625738  MOV      EBX,2711   //EBX=2711
017F:0062573D  CDQ   
017F:0062573E  IDIV    EBX
017F:00625740  IMUL    EAX,EDX,2710
017F:00625746  SUB      ECX,EAX
017F:00625748  MOV      EAX,ECX
017F:0062574A  ADD      EAX,EAX
017F:0062574C  LEA      EAX,[EAX+EAX*4] //執行過這一段後EAX=0
017F:0062574F  MOV      EDX,[006396C8] //EDX=46C020
017F:00625755  MOV      [EDX],EAX    //EAX寫入46C020,所以是0,那正確的是什麼值呢?
017F:00625757  MOVSX    ECX,WORD [EBP-04] //前面的EBX=2711,而下面也有把EBX賦成2711的
017F:0062575B  MOV      EAX,ECX      //程式碼,看來這部分程式碼分別向關鍵地址裡寫入
017F:0062575D  MOV      EBX,2711     //異常資料,根據推斷應該寫入2711,試著強行寫
017F:00625762  CDQ             //入後程式執行正常。
017F:00625763  IDIV    EBX
017F:00625765  IMUL    EAX,EDX,2710
017F:0062576B  SUB      ECX,EAX
017F:0062576D  MOV      EAX,ECX
017F:0062576F  ADD      EAX,EAX
017F:00625771  LEA      EAX,[EAX+EAX*4]
017F:00625774  MOV      EDX,[006397E0]
017F:0062577A  MOV      [EDX],EAX
017F:0062577C  MOV      BYTE [ESI],01

從這個軟體的破解技巧上來分析,它仍然用的是人為製造非常操作的方法,未找到狗後並不是簡單
的不給你使用,而是寫入一個異常資料,導致後面的程式出錯。即然有寫入異常資料的地方,我想
就一定有一個正常的資料,具體哪個是正常的資料,不僅要有很好的分析能力,還要有好運氣,通
常這個資料都不會太難,和異常資料在一起,經過一個換算後把正常的資料變成不正常的。就是這
麼簡單,關鍵看你怎麼分析了。

                                              羅降神
                                            2002.12.4

相關文章