自由英语 XP v1.00算法分析

时间:2005-12-20 来源: 作者: 点击:
trw2000 bpx hmemcpy g f12 7次 f10达到 call 005267FC (f8进入) 0177:005267FC PUSH EBP 0177:005267FD MOV EBP,ESP 0177:005267FF PUSH ECX 0177:00526800 MOV ECX,06 0177:00526805 PUSH BYTE +00 0177:00526807 PUSH BYTE +00 0177:00526809 DEC ECX 0177:0052680A
  trw2000 bpx hmemcpy   g
       f12 7次
     f10达到 call 005267FC (f8进入)
       

0177:005267FC  PUSH     EBP
0177:005267FD  MOV      EBP,ESP
0177:005267FF  PUSH     ECX
0177:00526800  MOV      ECX,06
0177:00526805  PUSH     BYTE +00
0177:00526807  PUSH     BYTE +00
0177:00526809  DEC      ECX
0177:0052680A  JNZ      00526805
0177:0052680C  PUSH     ECX
0177:0052680D  XCHG     ECX,[EBP-04]
0177:00526810  PUSH     EBX
0177:00526811  PUSH     ESI
0177:00526812  PUSH     EDI
0177:00526813  MOV      [EBP-0C],ECX
0177:00526816  MOV      [EBP-08],EDX
0177:00526819  MOV      [EBP-04],EAX
0177:0052681C  MOV      EAX,[EBP-04]
0177:0052681F  CALL     00405034
0177:00526824  MOV      EAX,[EBP-08]
0177:00526827  CALL     00405034
0177:0052682C  MOV      EAX,[EBP-0C]
0177:0052682F  CALL     00405034
0177:00526834  MOV      EAX,[EBP+0C]
0177:00526837  CALL     00405034
0177:0052683C  MOV      EAX,[EBP+08]
0177:0052683F  CALL     00405034
0177:00526844  XOR      EAX,EAX
0177:00526846  PUSH     EBP
0177:00526847  PUSH     DWORD 00526B00
0177:0052684C  PUSH     DWORD [FS:EAX]
0177:0052684F  MOV      [FS:EAX],ESP
0177:00526852  XOR      EAX,EAX
0177:00526854  MOV      [EBP-10],EAX
0177:00526857  XOR      EBX,EBX
0177:00526859  MOV      ESI,01
0177:0052685E  MOV      EAX,[EBP-04]
0177:00526861  ADD      BL,[EAX+ESI-01]  第一框的每一位相加得到a1
0177:00526865  INC      ESI
0177:00526866  CMP      ESI,BYTE +06
0177:00526869  JNZ      0052685E
0177:0052686B  MOV      ESI,01
0177:00526870  MOV      EAX,[EBP-08]
0177:00526873  ADD      BL,[EAX+ESI-01]  a1舆第二框的每一位相加得到a2
0177:00526877  INC      ESI
0177:00526878  CMP      ESI,BYTE +06
0177:0052687B  JNZ      00526870
0177:0052687D  MOV      ESI,01
0177:00526882  MOV      EAX,[EBP-0C]
0177:00526885  ADD      BL,[EAX+ESI-01]   a2舆第三框的每一位相加得到a3
0177:00526889  INC      ESI
0177:0052688A  CMP      ESI,BYTE +06
0177:0052688D  JNZ      00526882
0177:0052688F  MOV      ESI,01
0177:00526894  MOV      EAX,[EBP+0C]
0177:00526897  ADD      BL,[EAX+ESI-01]  a3舆第四框的每一位相加得到a4
0177:0052689B  INC      ESI
0177:0052689C  CMP      ESI,BYTE +06
0177:0052689F  JNZ      00526894
0177:005268A1  MOV      ESI,01
0177:005268A6  MOV      EAX,[EBP+08]
0177:005268A9  ADD      BL,[EAX+ESI-01]   a3舆第五框的每一位(只相加前四位)相加得到a5
0177:005268AD  INC      ESI
0177:005268AE  CMP      ESI,BYTE +05
0177:005268B1  JNZ      005268A6
0177:005268B3  MOV      EAX,EBX
0177:005268B5  CALL     00525914
0177:005268BA  MOV      EDX,[EBP+08]
0177:005268BD  CMP      AL,[EDX+04]     第五框的最后一位
0177:005268C0  JNZ      NEAR 00526ACB    (下x fl z,不能jump)  第五框的最后一位舆a5比较
0177:005268C6  MOV      DWORD [EBP-10],1E61
0177:005268CD  LEA      EAX,[EBP-18]
0177:005268D0  CALL     00404B78
0177:005268D5  MOV      ESI,01
0177:005268DA  MOV      EAX,[EBP-04]
0177:005268DD  MOV      BL,[EAX+ESI-01]  取第一框的每一位c1
0177:005268E1  MOV      EAX,[EBP-08]      
0177:005268E4  MOV      AL,[EAX+ESI-01]    取第二框的每一位c2
0177:005268E8  MOV      [EBP-11],AL        [EBP-11]=第二框的每一位c2
0177:005268EB  MOV      EDI,[00532914]     D EDI(可见软件的运算常数)
0177:005268F1  MOV      AL,[EDI]           [edi]的第一位给AL  C21
0177:005268F3  ADD      AL,BL               C21+C1=AL
0177:005268F5  XOR      AL,[EDI+01]         AL XOR [edi+01]的第二位=AL
0177:005268F8  MOV      DL,[EDI+02]         [edi+02]的第一位给DL
0177:005268FB  CALL     00477BA8            AL ROR DL (AL移位DL次)=AL  (注意是循环右移)
0177:00526900  MOV      DL,[EDI+03]         [edi+03]的第一位给DL
0177:00526903  ADD      DL,[EBP-11]         DL=DL+C2(取第二框的每一位c2)
0177:00526906  XOR      AL,DL               AL=AL XOR DL   
0177:00526908  CALL     00525914             (AL MOD 24=AL ,IF AL<A THEN   IF AL>A THEN

                                                            AL+30=AL       AL+57=AL
0177:0052690D  MOV      EDX,EAX
0177:0052690F  LEA      EAX,[EBP-1C]
0177:00526912  CALL     00404D58             把得到的AL转换成数字或字母
0177:00526917  MOV      EDX,[EBP-1C]
0177:0052691A  LEA      EAX,[EBP-18]
0177:0052691D  CALL     00404E54
0177:00526922  INC      ESI
0177:00526923  CMP      ESI,BYTE +06    (开始循环)
0177:00526926  JNZ      005268DA      
0177:00526928  MOV      EAX,[EBP-18]
0177:0052692B  MOV      EDX,[EBP-0C]
0177:0052692E  CALL     00404F90       (比较得到的五位AL转换成数字或字母舆第三个框数字比较)
0177:00526933  JNZ      NEAR 00526ACB  (下x fl z,不能jump)
0177:00526939  LEA      EAX,[EBP-18]
0177:0052693C  CALL     00404B78
0177:00526941  MOV      ESI,01
0177:00526946  MOV      EAX,[EBP-04]
0177:00526949  MOV      BL,[EAX+ESI-01]
0177:0052694D  MOV      EAX,[EBP-08]
0177:00526950  MOV      AL,[EAX+ESI-01]
0177:00526954  MOV      [EBP-11],AL
0177:00526957  MOV      EDI,[00532824]
0177:0052695D  MOV      AL,[EBP-11]
0177:00526960  XOR      AL,BL
0177:00526962  SUB      AL,[EDI+02]
0177:00526965  ADD      AL,[EDI+01]
0177:00526968  MOV      DL,[EDI+03]
0177:0052696B  CALL     00477BA8      AL ROR DL (AL移位DL次)=AL
0177:00526970  XOR      AL,[EDI]
0177:00526972  XOR      AL,BL
0177:00526974  CALL     00525914      (AL MOD 24=AL ,IF AL<A THEN   IF AL>A THEN

                                                            AL+30=AL       AL+57=AL
0177:00526979  MOV      EDX,EAX
0177:0052697B  LEA      EAX,[EBP-20]
0177:0052697E  CALL     00404D58         把得到的AL转换成数字或字母
0177:00526983  MOV      EDX,[EBP-20]
0177:00526986  LEA      EAX,[EBP-18]
0177:00526989  CALL     00404E54
0177:0052698E  INC      ESI
0177:0052698F  CMP      ESI,BYTE +06
0177:00526992  JNZ      00526946
0177:00526994  MOV      EAX,[EBP-18]
0177:00526997  MOV      EDX,[EBP+0C]
0177:0052699A  CALL     00404F90      (比较得到的五位AL转换成数字或字母舆第四个框数字比较)
0177:0052699F  JNZ      NEAR 00526ACB   (下x fl z,不能jump)
0177:005269A5  LEA      EAX,[EBP-18]
0177:005269A8  CALL     00404B78
0177:005269AD  MOV      ESI,01
0177:005269B2  MOV      EAX,[EBP-04]
0177:005269B5  MOV      BL,[EAX+ESI-01]
0177:005269B9  MOV      EAX,[EBP-08]
0177:005269BC  MOV      AL,[EAX+ESI-01]
0177:005269C0  MOV      [EBP-11],AL
0177:005269C3  MOV      EDI,[00532950]
0177:005269C9  MOV      AL,[EBP-11]
0177:005269CC  ADD      AL,BL
0177:005269CE  ADD      AL,[EDI+03]
0177:005269D1  SUB      AL,[EDI+02]
0177:005269D4  ADD      AL,[EDI]
0177:005269D6  MOV      DL,[EBP-11]
0177:005269D9  CALL     00477BB0     (AL ROL B1(第二框的每一位数字))(注意是循环左移)
0177:005269DE  MOV      DL,[EDI+01]
0177:005269E1  SUB      DL,BL
0177:005269E3  XOR      AL,DL
0177:005269E5  CALL     00525914    (AL MOD 24=AL ,IF AL<A THEN   IF AL>A THEN

                                                            AL+30=AL       AL+57=AL
0177:005269EA  MOV      EDX,EAX
0177:005269EC  LEA      EAX,[EBP-24]
0177:005269EF  CALL     00404D58    把得到的AL转换成数字或字母 
0177:005269F4  MOV      EDX,[EBP-24]
0177:005269F7  LEA      EAX,[EBP-18]
0177:005269FA  CALL     00404E54
0177:005269FF  INC      ESI
0177:00526A00  CMP      ESI,BYTE +05  (注意循环4次)
0177:00526A03  JNZ      005269B2
0177:00526A05  LEA      EAX,[EBP-2C]
0177:00526A08  MOV      EDX,[EBP+08]
0177:00526A0B  MOV      DL,[EDX+04]   第五框的最后一位=DL
0177:00526A0E  CALL     00404D58
0177:00526A13  MOV      ECX,[EBP-2C]
0177:00526A16  LEA      EAX,[EBP-28]
0177:00526A19  MOV      EDX,[EBP-18] (共4位数字或字母)a111
0177:00526A1C  CALL     00404E98
0177:00526A21  MOV      EAX,[EBP-28]
0177:00526A24  MOV      EDX,[EBP+08]
0177:00526A27  CALL     00404F90     (其实是a111舆第五框的前三位比较)
0177:00526A2C  JZ       NEAR 00526AC4    (下x fl z,不能jump)
0177:00526A32  LEA      EAX,[EBP-18]

暴力破戒,只需用trw调试是将上面要跳转的下x fl z不让跳转即可!!

------分隔线----------------------------
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
推荐内容