• 标 题:管家婆7.2A辉煌单机版破解技巧 (4千字)
  • 作 者:罗降神
  • 时 间:2002-12-4 22:40:11
  • 链 接:http://bbs.pediy.com


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