內容:
管家婆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