• 标 题:Gif Movie Gear3.0
  • 作 者:飞狐
  • 时 间:2002/03/02 09:49pm
  • 链 接:http://bbs.pediy.com

Gif Movie Gear3.0的PJ此软件可能对于大多数人来说不适用。它是一个非常优秀的图片处理工具,是对动态gif压缩效果非常满意,真是一个图片处理的小精灵 、超级动画制作程序.没注册前它的NAG窗口很是烦人。我写上此文的目的是让初学者体会一下注册码的计算方法.这个软件是我昨天下载的。也不知道有没有相关的pj,在这里我现丑了,请不要见笑。
工具:TRW2000
方法:
1、运行TRW2000,装入Gif Movie Gear3.0并运行之,输入NAME:flyingfox 密码:mvg2s9899898后,
按CTRL+N,设中断BPX HMEMCPY,按CTRL+N,再按确定。拦截成功。清中断bpx *
2、此时不要输入PMODULE,否则跳出出错信息。要按F12,连续按9下,再按F10(一下),就会看到如下代码:
请看下面的分析:
0167:00431521 8D9424B4000000   LEA      EDX,[ESP+B4]
0167:00431528 6A64             PUSH     BYTE +64
0167:0043152A 52               PUSH     EDX
0167:0043152B 6850040000       PUSH     DWORD 0450
0167:00431530 56               PUSH     ESI
0167:00431531 FFD7             CALL     EDI
0167:00431533 50               PUSH     EAX
0167:00431534 FFD3             CALL     EBX
0167:00431536 8D8424B4000000   LEA      EAX,[ESP+B4]
0167:0043153D 8D4C2450         LEA      ECX,[ESP+50]
0167:00431541 50               PUSH     EAX  假码
0167:00431542 51               PUSH     ECX  你输入的NAME
0167:00431543 E888FDFFFF       CALL     004312D0 必须按F8进入。见①处。
0167:00431548 83C408           ADD      ESP,BYTE +08
0167:0043154B 85C0             TEST     EAX,EAX
0167:0043154D 0F84AD000000     JZ       NEAR 00431600错误就跳。
下面的代码是成功后的注册处理。
0167:00431553 8D542410         LEA      EDX,[ESP+10]
0167:00431557 8D44240C         LEA      EAX,[ESP+0C]
0167:0043155B 52               PUSH     EDX
0167:0043155C 50               PUSH     EAX
0167:0043155D 6A00             PUSH     BYTE +00
0167:0043155F 683F000F00       PUSH     DWORD 000F003F
0167:00431564 6A00             PUSH     BYTE +00
0167:00431566 68D4EF4400       PUSH     DWORD 0044EFD4
0167:0043156B 6A00             PUSH     BYTE +00
0167:0043156D 68B8B34400       PUSH     DWORD 0044B3B8
0167:00431572 6801000080       PUSH     DWORD 80000001

①*********************************************************
0167:004312D0  PUSH     EBX
0167:004312D1  PUSH     EBP
0167:004312D2  MOV      EBP,[ESP+10] 你输入的密码。
0167:004312D6  PUSH     ESI
0167:004312D7  PUSH     EDI
0167:004312D8  CMP      BYTE [EBP+00],6D 比较第一个是否为m
0167:004312DC  JNZ      NEAR 00431382
0167:004312E2  CMP      BYTE [EBP+01],76 比较第二个是否为v
0167:004312E6  JNZ      NEAR 00431382
0167:004312EC  CMP      BYTE [EBP+02],67 比较第三个是否为g
0167:004312F0  JNZ      NEAR 00431382
0167:004312F6  CMP      BYTE [EBP+03],32 比较第四个是否为2
以上比较的是输入的密码的前四位。也就是正确密码的前四位必须是mvg2
0167:004312FA  JNZ      NEAR 00431382    如果不等于就错
           以下从0167:00431300-0167:0043131B是比较你输入的密码是否是黑名单上的名单上的密码。黑名单上的名单上的密码很多。你可以快按F10。但要注意最后一次比较,也就是0167:00431320  CMP      EBX,0044D57C 二者都是msvg20423396时。请看下面的代码:
0167:00431300  MOV      EBX,0044D4A4  
0167:00431305  MOV      EDX,[EBX]
0167:00431307  OR       ECX,BYTE -01
0167:0043130A  MOV      EDI,EDX
0167:0043130C  XOR      EAX,EAX
0167:0043130E  REPNE SCASB
0167:00431310  NOT      ECX
0167:00431312  DEC      ECX
0167:00431313  MOV      EDI,EDX
0167:00431315  MOV      ESI,EBP
0167:00431317  XOR      EAX,EAX
0167:00431319  REPE CMPSB
0167:0043131B  JZ       00431382  如果是黑名单上的密码就错。如果正确往下执行。
0167:0043131D  ADD      EBX,BYTE +04
0167:00431320  CMP      EBX,0044D57C同上。
0167:00431326  JL       00431305错误就跳。正确继续。
0167:00431328  CMP      BYTE [EBP+04],73比较第五个字符是否为s
0167:0043132C  JNZ      0043132F    如果不是就跳。  
0167:0043132E  INC      EBP 密码的地址加1
也就是说正确的密码的的组合方式是mvg2s*******或mvg2*******
0167:0043132F  ADD      EBP,BYTE +07 加7
0167:00431332  PUSH     EBP EBP是第八位以后或第七位以后的密码。
0167:00431333  CALL     0043F04C此处调用你可以进去看一看。处理第八位以后或第七位以后的密码。如果不进去,按F10,见②处。
②***************************************
以下的代码是处理你输入的名字,是计算后四位密码。你的名字可以是英文也可以是中文。但字符数必须大于或等于七。为什么?看下面的代码你就知道了。
0167:00431338  MOV      EDX,[ESP+18] 你输入的名字
0167:0043133C  ADD      ESP,BYTE +04
0167:0043133F  MOV      EDI,EDX
0167:00431341  XOR      ECX,ECX
0167:00431343  MOV      DL,[EDX]第一个字母赋值给DL
0167:00431345  MOV      ESI,06FE
0167:0043134A  TEST     DL,DL是否为空
0167:0043134C  JZ       00431374是,就处理完毕,跳到下面进行比较。
0167:0043134E  MOVSX    EDX,DL
0167:00431351  INC      ECX
0167:00431352  IMUL     EDX,ECX相乘。
0167:00431355  ADD      ESI,EDX
0167:00431357  CMP      ESI,0DFD
0167:0043135D  JNG      00431365
0167:0043135F  SUB      ESI,0DFD
0167:00431365  CMP      ECX,BYTE +0A比较是否为A,它就是你输入的NAME的字符数。
0167:00431368  JNG      0043136C
0167:0043136A  XOR      ECX,ECX
0167:0043136C  MOV      DL,[EDI+01]
0167:0043136F  INC      EDI
0167:00431370  TEST     DL,DL
0167:00431372  JNZ      0043134E没测试完,继续循环。测试完毕就进行比较
0167:00431374  CMP      ESI,EAX ? ESI是真正密码的后四位,? EAX是假码。此时注册码计算完毕。
0167:00431376  JNZ      00431382不相等就跳
0167:00431378  POP      EDI
0167:00431379  POP      ESI
0167:0043137A  POP      EBP
0167:0043137B  MOV      EAX,01 赋值为1,是成功标志。
0167:00431380  POP      EBX
              ret
*******************************************************************************************
总结:1、不要被黑名单上的名字所迷惑,那可能版本pj者的密码。我当时看到时是欣喜若狂,可惜是错的。
   2、输入的名字的字符数必须大于6位数。中、英文随便。
   3、密码的组合方式有两种:
    ①、前五位是mvg2s时的密码是:mvg2s***@@@@。3个*号可以是3个任意的数字,后四位是通过你的姓名计算出来的数字。
       ②mvg2***@@@@。3个*号可以是3个任意的数字,后四位是通过你的姓名计算出来的数字。
   如:flyingfox:mvg20003160.后面的3160也可能是2552。我忘记了(记的时候不仔细)