【文章标题】: 【原创】某国外软件独立分析过程
【文章作者】: 大色秘密
【作者邮箱】: dasemimi@163.com
【软件名称】: 某AVI Splitter
【软件大小】: 462 KB
【下载地址】: 自己搜索下载
【加壳方式】: 无
【编写语言】: Microsoft Visual C++ 7.0
【使用工具】: OD
【操作平台】: winxp
【软件介绍】: AVI Splitter is an easy-to-use tool for splittin
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  00405730   .  83EC 0C       SUB ESP,0C                               ;  段开头下载断点
  00405733   .  55            PUSH EBP                                 ;  
  00405734   .  56            PUSH ESI
  00405735   .  57            PUSH EDI
  00405736   .  BF 01000000   MOV EDI,1
  0040573B   .  57            PUSH EDI
  0040573C   .  8BF1          MOV ESI,ECX
  0040573E   .  E8 B6A70100   CALL AVISplit.0041FEF9
  00405743   .  8B46 70       MOV EAX,DWORD PTR DS:[ESI+70]            ;  加载假的注册码
  00405746   .  8B68 F4       MOV EBP,DWORD PTR DS:[EAX-C]             ;  加载用户名
  00405749   .  83FD 02       CMP EBP,2                                ;  判断用户名是否大于两位
  0040574C   .  7D 15         JGE SHORT AVISplit.00405763              ;  如果大于则实现跳转
  0040574E   .  6A 00         PUSH 0
  00405750   .  6A 00         PUSH 0
  00405752   .  68 6CD24200   PUSH AVISplit.0042D26C                   ;  please input correct user name!
  00405757   .  E8 AB050200   CALL AVISplit.00425D07
  0040575C   .  5F            POP EDI
  0040575D   .  5E            POP ESI
  0040575E   .  5D            POP EBP
  0040575F   .  83C4 0C       ADD ESP,0C
  00405762   .  C3            RETN
  00405763   >  8B4E 74       MOV ECX,DWORD PTR DS:[ESI+74]
  00405766   .  8379 F4 08    CMP DWORD PTR DS:[ECX-C],8
  
  上面跳转没有实现是,及用户名小于两位则执行下面的关键代码
  00425BCA  /> /55            PUSH EBP
  00425BCB  |. |8DAC24 64FFFF>LEA EBP,DWORD PTR SS:[ESP-9C]
  00425BD2  |. |81EC 1C010000 SUB ESP,11C
  00425BD8  |. |A1 98914300   MOV EAX,DWORD PTR DS:[439198]
  00425BDD  |. |53            PUSH EBX
  00425BDE  |. |56            PUSH ESI
  00425BDF  |. |33C5          XOR EAX,EBP
  00425BE1  |. |57            PUSH EDI
  00425BE2  |. |8985 98000000 MOV DWORD PTR SS:[EBP+98],EAX
  00425BE8  |. |8B85 A4000000 MOV EAX,DWORD PTR SS:[EBP+A4]
  00425BEE  |. |8BF9          MOV EDI,ECX
  00425BF0  |. |33F6          XOR ESI,ESI
  00425BF2  |. |56            PUSH ESI
  00425BF3  |. |897D 88       MOV DWORD PTR SS:[EBP-78],EDI
  00425BF6  |. |8945 80       MOV DWORD PTR SS:[EBP-80],EAX
  00425BF9  |. |E8 01FFFFFF   CALL AVISplit.00425AFF
  00425BFE  |. |8D45 90       LEA EAX,DWORD PTR SS:[EBP-70]
  00425C01  |. |50            PUSH EAX
  00425C02  |. |56            PUSH ESI
  00425C03  |. |E8 24FFFFFF   CALL AVISplit.00425B2C
  00425C08  |. |8BD8          MOV EBX,EAX
  00425C0A  |. |3B5D 90       CMP EBX,DWORD PTR SS:[EBP-70]
  00425C0D  |. |895D 84       MOV DWORD PTR SS:[EBP-7C],EBX
  00425C10  |. |74 09         JE SHORT AVISplit.00425C1B
  00425C12  |. |6A 01         PUSH 1                                   ; /Enable = TRUE
  00425C14  |. |53            PUSH EBX                                 ; |hWnd
  00425C15  |. |FF15 78C54200 CALL DWORD PTR DS:[<&USER32.EnableWindow>; \EnableWindow
  00425C1B  |> |85DB          TEST EBX,EBX
  00425C1D  |. |74 18         JE SHORT AVISplit.00425C37
  00425C1F  |. |6A 00         PUSH 0                                   ; /lParam = 0
  00425C21  |. |6A 00         PUSH 0                                   ; |wParam = 0
  00425C23  |. |68 76030000   PUSH 376                                 ; |Message = MSG(376)
  00425C28  |. |53            PUSH EBX                                 ; |hWnd
  00425C29  |. |FF15 6CC54200 CALL DWORD PTR DS:[<&USER32.SendMessageA>; \SendMessageA
  00425C2F  |. |85C0          TEST EAX,EAX
  00425C31  |. |74 04         JE SHORT AVISplit.00425C37
  00425C33  |. |8BF0          MOV ESI,EAX
  00425C35  |. |EB 07         JMP SHORT AVISplit.00425C3E
  00425C37  |> |85FF          TEST EDI,EDI
  00425C39  |. |74 03         JE SHORT AVISplit.00425C3E
  00425C3B  |. |8D77 74       LEA ESI,DWORD PTR DS:[EDI+74]
  00425C3E  |> |8365 8C 00    AND DWORD PTR SS:[EBP-74],0
  00425C42  |. |85F6          TEST ESI,ESI
  00425C44  |. |74 16         JE SHORT AVISplit.00425C5C
  00425C46  |. |8B06          MOV EAX,DWORD PTR DS:[ESI]
  00425C48  |. |8945 8C       MOV DWORD PTR SS:[EBP-74],EAX
  00425C4B  |. |8B85 AC000000 MOV EAX,DWORD PTR SS:[EBP+AC]
  00425C51  |. |85C0          TEST EAX,EAX
  00425C53  |. |74 07         JE SHORT AVISplit.00425C5C
  00425C55  |. |05 00000300   ADD EAX,30000
  00425C5A  |. |8906          MOV DWORD PTR DS:[ESI],EAX
  00425C5C  |> |F685 A8000000>TEST BYTE PTR SS:[EBP+A8],0F0
  00425C63  |. |75 1F         JNZ SHORT AVISplit.00425C84
  00425C65  |. |8B85 A8000000 MOV EAX,DWORD PTR SS:[EBP+A8]
  00425C6B  |. |83E0 0F       AND EAX,0F
  00425C6E  |. |83F8 01       CMP EAX,1
  00425C71  |. |76 0A         JBE SHORT AVISplit.00425C7D
  00425C73  |. |83F8 02       CMP EAX,2
  00425C76  |. |76 0C         JBE SHORT AVISplit.00425C84
  00425C78  |. |83F8 04       CMP EAX,4
  00425C7B  |. |77 07         JA SHORT AVISplit.00425C84
  00425C7D  |> |838D A8000000>OR DWORD PTR SS:[EBP+A8],30
  00425C84  |> |85FF          TEST EDI,EDI
  00425C86  |. |C645 94 00    MOV BYTE PTR SS:[EBP-6C],0
  00425C8A  |. |74 05         JE SHORT AVISplit.00425C91
  00425C8C  |. |8B5F 4C       MOV EBX,DWORD PTR DS:[EDI+4C]
  00425C8F  |. |EB 22         JMP SHORT AVISplit.00425CB3
  00425C91  |> |8D5D 94       LEA EBX,DWORD PTR SS:[EBP-6C]
  00425C94  |. |BF 04010000   MOV EDI,104
  00425C99  |. |57            PUSH EDI                                 ; /BufSize => 104 (260.)
  00425C9A  |. |8BC3          MOV EAX,EBX                              ; |
  00425C9C  |. |50            PUSH EAX                                 ; |PathBuffer
  00425C9D  |. |6A 00         PUSH 0                                   ; |hModule = NULL
  00425C9F  |. |FF15 98C24200 CALL DWORD PTR DS:[<&KERNEL32.GetModuleF>; \GetModuleFileNameA
  00425CA5  |. |3BC7          CMP EAX,EDI
  00425CA7  |. |8B7D 88       MOV EDI,DWORD PTR SS:[EBP-78]
  00425CAA  |. |75 07         JNZ SHORT AVISplit.00425CB3
  00425CAC  |. |C685 97000000>MOV BYTE PTR SS:[EBP+97],0
  00425CB3  |> |FFB5 A8000000 PUSH DWORD PTR SS:[EBP+A8]               ; /Style
  00425CB9  |. |53            PUSH EBX                                 ; |Title
  00425CBA  |. |FF75 80       PUSH DWORD PTR SS:[EBP-80]               ; |Text
  00425CBD  |. |FF75 84       PUSH DWORD PTR SS:[EBP-7C]               ; |hOwner
  00425CC0  |. |FF15 5CC54200 CALL DWORD PTR DS:[<&USER32.MessageBoxA>>; \MessageBoxA   ///送出消息框,请你输入正确的用户名
  
  
  
  好了,如果用户名大于二的话,还有密码是否大于八位
  
  都大于的话,那么就来到正题
  
  00405781   > \8B46 70       MOV EAX,DWORD PTR DS:[ESI+70]         ;  用户名送入eax
  00405784   .  8B48 F4       MOV ECX,DWORD PTR DS:[EAX-C]          ;  把假注册码送入ecx
  00405787   .  85C9          TEST ECX,ECX                          ;  ecx和假注册码的长度比较 这里ecx的值为6
  00405789   .  7D 0A         JGE SHORT AVISplit.00405795
  0040578B   .  68 57000780   PUSH 80070057
  00405790   .  E8 8BC1FFFF   CALL AVISplit.00401920
  00405795   >  8A10          MOV DL,BYTE PTR DS:[EAX]              ;  用户名第一个字符d送入dl
  00405797   .  8B46 70       MOV EAX,DWORD PTR DS:[ESI+70]
  0040579A   .  3978 F4       CMP DWORD PTR DS:[EAX-C],EDI
  0040579D   .  7D 0A         JGE SHORT AVISplit.004057A9
  0040579F   .  68 57000780   PUSH 80070057
  004057A4   .  E8 77C1FFFF   CALL AVISplit.00401920
  004057A9   >  8A40 01       MOV AL,BYTE PTR DS:[EAX+1]            ;  用户名第二个字符a送入al
  004057AC   .  884424 0E     MOV BYTE PTR SS:[ESP+E],AL
  004057B0   .  8B46 70       MOV EAX,DWORD PTR DS:[ESI+70]         ;  用户名送入eax
  004057B3   .  8B48 F4       MOV ECX,DWORD PTR DS:[EAX-C]
  004057B6   .  85C9          TEST ECX,ECX
  004057B8   .  7D 0A         JGE SHORT AVISplit.004057C4
  004057BA   .  68 57000780   PUSH 80070057
  004057BF   .  E8 5CC1FFFF   CALL AVISplit.00401920
  004057C4   >  8B4E 70       MOV ECX,DWORD PTR DS:[ESI+70]
  004057C7   .  53            PUSH EBX
  004057C8   .  8A18          MOV BL,BYTE PTR DS:[EAX]
  004057CA   .  3979 F4       CMP DWORD PTR DS:[ECX-C],EDI
  004057CD   .  7D 0A         JGE SHORT AVISplit.004057D9
  004057CF   .  68 57000780   PUSH 80070057
  004057D4   .  E8 47C1FFFF   CALL AVISplit.00401920
  004057D9   >  0FB6C2        MOVZX EAX,DL                          ;  把d送入eax然后高位都用零填充
  004057DC   .  83C8 53       OR EAX,53                             ;  64和53or=77
  004057DF   .  99            CDQ
  004057E0   .  BF 0A000000   MOV EDI,0A                            ;  看第一个经验总结
  004057E5   .  F7FF          IDIV EDI
  004057E7   .  0FB64424 12   MOVZX EAX,BYTE PTR SS:[ESP+12]        ;  把a送入eax
  004057EC   .  83C8 41       OR EAX,41                             ;  61和41或
  004057EF   .  885424 16     MOV BYTE PTR SS:[ESP+16],DL
  004057F3   .  99            CDQ
  004057F4   .  F7FF          IDIV EDI
  004057F6   .  0FB6C3        MOVZX EAX,BL                          ;  把d送入eax
  004057F9   .  83C8 56       OR EAX,56                             ;  64和56或
  004057FC   .  885424 12     MOV BYTE PTR SS:[ESP+12],DL           ;  dl 是07
  00405800   .  99            CDQ
  00405801   .  F7FF          IDIV EDI                              ;  再次变为零
  00405803   .  0FB641 01     MOVZX EAX,BYTE PTR DS:[ECX+1]         ;  把a送入eax
  00405807   .  83C8 49       OR EAX,49                             ;  a和49或
  0040580A   .  8BCF          MOV ECX,EDI
  0040580C   .  885424 17     MOV BYTE PTR SS:[ESP+17],DL
  00405810   .  99            CDQ
  00405811   .  F7F9          IDIV ECX
  00405813   .  33C0          XOR EAX,EAX                           ;  eax清零
  00405815   .  33C9          XOR ECX,ECX                           ;  ecx清零
  00405817   .  85ED          TEST EBP,EBP
  00405819   .  885424 18     MOV BYTE PTR SS:[ESP+18],DL
  0040581D   .  7E 20         JLE SHORT AVISplit.0040583F
  0040581F   .  90            NOP
  00405820   >  85C9          TEST ECX,ECX
  00405822   .  0F8C D2000000 JL AVISplit.004058FA
  00405828   .  8B7E 70       MOV EDI,DWORD PTR DS:[ESI+70]         ;  把用户名送入edi
  0040582B   .  3B4F F4       CMP ECX,DWORD PTR DS:[EDI-C]
  0040582E   .  0F8F C6000000 JG AVISplit.004058FA
  00405834   .  0FB6140F      MOVZX EDX,BYTE PTR DS:[EDI+ECX]       ;  把d送入edx,第二次把a送进去
  00405838   .  03C2          ADD EAX,EDX
  0040583A   .  41            INC ECX                               ;  ecx自加1
  0040583B   .  3BCD          CMP ECX,EBP                           ;  ecx和ebp相比EBP为6,而ecx为1,当密码长度为6的时候跳转
  0040583D   .^ 7C E1         JL SHORT AVISplit.00405820
  0040583F   >  8B4E 74       MOV ECX,DWORD PTR DS:[ESI+74]         ;  把密码送入ecx
  00405842   .  8B51 F4       MOV EDX,DWORD PTR DS:[ECX-C]
  00405845   .  85D2          TEST EDX,EDX
  00405847   .  7D 0A         JGE SHORT AVISplit.00405853
  00405849   .  68 57000780   PUSH 80070057
  0040584E   .  E8 CDC0FFFF   CALL AVISplit.00401920
  00405853   >  8A11          MOV DL,BYTE PTR DS:[ECX]              ;  1送入dl
  00405855   .  8B4E 74       MOV ECX,DWORD PTR DS:[ESI+74]
  00405858   .  8379 F4 01    CMP DWORD PTR DS:[ECX-C],1
  0040585C   .  885424 19     MOV BYTE PTR SS:[ESP+19],DL           ;  把1送入栈
  00405860   .  7D 0A         JGE SHORT AVISplit.0040586C
  00405862   .  68 57000780   PUSH 80070057
  00405867   .  E8 B4C0FFFF   CALL AVISplit.00401920
  0040586C   >  8A49 01       MOV CL,BYTE PTR DS:[ECX+1]            ;  把2送入cl
  0040586F   .  8B7E 74       MOV EDI,DWORD PTR DS:[ESI+74]         ;  把密码再次送入edi
  00405872   .  884C24 13     MOV BYTE PTR SS:[ESP+13],CL
  00405876   .  837F F4 02    CMP DWORD PTR DS:[EDI-C],2
  0040587A   .  7D 0A         JGE SHORT AVISplit.00405886
  0040587C   .  68 57000780   PUSH 80070057
  00405881   .  E8 9AC0FFFF   CALL AVISplit.00401920
  00405886   >  8A4F 02       MOV CL,BYTE PTR DS:[EDI+2]            ;  把3送入cl
  00405889   .  8B7E 74       MOV EDI,DWORD PTR DS:[ESI+74]         ;  把密码送入edi
  0040588C   .  884C24 14     MOV BYTE PTR SS:[ESP+14],CL
  00405890   .  837F F4 03    CMP DWORD PTR DS:[EDI-C],3
  00405894   .  7D 0A         JGE SHORT AVISplit.004058A0
  00405896   .  68 57000780   PUSH 80070057
  0040589B   .  E8 80C0FFFF   CALL AVISplit.00401920
  004058A0   >  8A4F 03       MOV CL,BYTE PTR DS:[EDI+3]            ;  把4送入cl
  004058A3   .  8B7E 74       MOV EDI,DWORD PTR DS:[ESI+74]         ;  把密码123456789送入edi
  004058A6   .  884C24 15     MOV BYTE PTR SS:[ESP+15],CL
  004058AA   .  837F F4 04    CMP DWORD PTR DS:[EDI-C],4
  004058AE   .  7D 0A         JGE SHORT AVISplit.004058BA
  004058B0   .  68 57000780   PUSH 80070057
  004058B5   .  E8 66C0FFFF   CALL AVISplit.00401920
  004058BA   >  8A4F 04       MOV CL,BYTE PTR DS:[EDI+4]
  004058BD   .  8B7E 74       MOV EDI,DWORD PTR DS:[ESI+74]         ;  把假密码送入edi
  004058C0   .  837F F4 05    CMP DWORD PTR DS:[EDI-C],5
  004058C4   .  7D 0A         JGE SHORT AVISplit.004058D0
  004058C6   .  68 57000780   PUSH 80070057
  004058CB   .  E8 50C0FFFF   CALL AVISplit.00401920
  004058D0   >  8A5F 05       MOV BL,BYTE PTR DS:[EDI+5]
  004058D3   .  8B7E 74       MOV EDI,DWORD PTR DS:[ESI+74]         ;  把假密码送入edi
  004058D6   .  885C24 1A     MOV BYTE PTR SS:[ESP+1A],BL
  004058DA   .  837F F4 06    CMP DWORD PTR DS:[EDI-C],6
  004058DE   .  7D 0A         JGE SHORT AVISplit.004058EA
  004058E0   .  68 57000780   PUSH 80070057
  004058E5   .  E8 36C0FFFF   CALL AVISplit.00401920
  004058EA   >  8A5F 06       MOV BL,BYTE PTR DS:[EDI+6]            ;  把7送入bl
  004058ED   .  8B7E 74       MOV EDI,DWORD PTR DS:[ESI+74]         ;  把假注册码送入edi
  004058F0   .  885C24 1B     MOV BYTE PTR SS:[ESP+1B],BL
  004058F4   .  837F F4 07    CMP DWORD PTR DS:[EDI-C],7
  004058F8   .  7D 0A         JGE SHORT AVISplit.00405904
  004058FA   >  68 57000780   PUSH 80070057
  004058FF   .  E8 1CC0FFFF   CALL AVISplit.00401920
  00405904   >  8A5F 07       MOV BL,BYTE PTR DS:[EDI+7]            ;  把8送入bl
  00405907   .  0FB67C24 16   MOVZX EDI,BYTE PTR SS:[ESP+16]
  0040590C   .  0FB6D2        MOVZX EDX,DL
  0040590F   .  83EA 30       SUB EDX,30
  00405912   .  3BFA          CMP EDI,EDX
  00405914   .  75 48         JNZ SHORT AVISplit.0040595E
  00405916   .  0FB65424 13   MOVZX EDX,BYTE PTR SS:[ESP+13]
  0040591B   .  0FB67C24 12   MOVZX EDI,BYTE PTR SS:[ESP+12]
  00405920   .  83EA 30       SUB EDX,30
  00405923   .  3BFA          CMP EDI,EDX
  00405925   .  75 37         JNZ SHORT AVISplit.0040595E
  00405927   .  0FB65424 14   MOVZX EDX,BYTE PTR SS:[ESP+14]
  0040592C   .  0FB67C24 17   MOVZX EDI,BYTE PTR SS:[ESP+17]
  00405931   .  83EA 30       SUB EDX,30
  00405934   .  3BFA          CMP EDI,EDX
  00405936   .  75 26         JNZ SHORT AVISplit.0040595E
  00405938   .  0FB65424 15   MOVZX EDX,BYTE PTR SS:[ESP+15]
  0040593D   .  0FB67C24 18   MOVZX EDI,BYTE PTR SS:[ESP+18]
  00405942   .  83EA 30       SUB EDX,30
  00405945   .  3BFA          CMP EDI,EDX
  00405947   .  75 15         JNZ SHORT AVISplit.0040595E
  00405949   .  99            CDQ
  0040594A   .  BF 0A000000   MOV EDI,0A
  0040594F   .  F7FF          IDIV EDI
  00405951   .  0FB6C2        MOVZX EAX,DL
  00405954   .  0FB6D1        MOVZX EDX,CL
  00405957   .  83EA 30       SUB EDX,30
  0040595A   .  3BC2          CMP EAX,EDX
  0040595C   .  74 3A         JE SHORT AVISplit.00405998
  0040595E   >  807C24 19 39  CMP BYTE PTR SS:[ESP+19],39
  00405963      0F85 85000000 JNZ AVISplit.004059EE                 ;  关键跳,跳到注册失败哪里
  00405969      807C24 13 33  CMP BYTE PTR SS:[ESP+13],33
  0040596E      75 7E         JNZ SHORT AVISplit.004059EE           ;  再次关键跳,跳到失败哪里
  00405970      8A5424 14     MOV DL,BYTE PTR SS:[ESP+14]
  00405974      B0 38         MOV AL,38
  00405976      3AD0          CMP DL,AL
  00405978      75 74         JNZ SHORT AVISplit.004059EE           ;  第一个跳 nop掉
  0040597A      384424 15     CMP BYTE PTR SS:[ESP+15],AL
  0040597E      75 6E         JNZ SHORT AVISplit.004059EE              第二个跳 nop掉
  00405980      80F9 33       CMP CL,33
  00405983      75 69         JNZ SHORT AVISplit.004059EE              第三个跳 nop掉
  00405985      807C24 1A 31  CMP BYTE PTR SS:[ESP+1A],31
  0040598A      75 62         JNZ SHORT AVISplit.004059EE              第四个跳 nop掉
  0040598C      807C24 1B 34  CMP BYTE PTR SS:[ESP+1B],34
  00405991      75 5B         JNZ SHORT AVISplit.004059EE              第五个
  00405993      80FB 36       CMP BL,36
  00405996      75 56         JNZ SHORT AVISplit.004059EE              第六个
  00405998   >  6A 00         PUSH 0
  0040599A   .  6A 00         PUSH 0
  0040599C   .  68 28D24200   PUSH AVISplit.0042D228                ;  registration has succeeded!
  004059A1   .  E8 61030200   CALL AVISplit.00425D07
  004059A6   .  8B7E 70       MOV EDI,DWORD PTR DS:[ESI+70]
  004059A9   .  E8 502B0200   CALL AVISplit.004284FE
  004059AE   .  8B40 04       MOV EAX,DWORD PTR DS:[EAX+4]
  004059B1   .  57            PUSH EDI                              ; /Arg3
  004059B2   .  68 00D14200   PUSH AVISplit.0042D100                ; |username
  004059B7   .  68 B0CC4200   PUSH AVISplit.0042CCB0                ; |option
  004059BC   .  8BC8          MOV ECX,EAX                           ; |
  004059BE   .  E8 84040200   CALL AVISplit.00425E47                ; \AVISplit.00425E47
  004059C3   .  8B7E 74       MOV EDI,DWORD PTR DS:[ESI+74]
  004059C6   .  E8 332B0200   CALL AVISplit.004284FE
  004059CB   .  8B40 04       MOV EAX,DWORD PTR DS:[EAX+4]
  004059CE   .  57            PUSH EDI                              ; /Arg3
  004059CF   .  68 ECD04200   PUSH AVISplit.0042D0EC                ; |registration_code
  004059D4   .  68 B0CC4200   PUSH AVISplit.0042CCB0                ; |option
  004059D9   .  8BC8          MOV ECX,EAX                           ; |
  004059DB   .  E8 67040200   CALL AVISplit.00425E47                ; \AVISplit.00425E47
  004059E0   .  5B            POP EBX
  004059E1   .  5F            POP EDI
  004059E2   .  8BCE          MOV ECX,ESI
  004059E4   .  5E            POP ESI
  004059E5   .  5D            POP EBP
  004059E6   .  83C4 0C       ADD ESP,0C
  004059E9   .  E9 038F0100   JMP AVISplit.0041E8F1
  004059EE   >  6A 00         PUSH 0                                ;  这里就预示着注册失败
  004059F0   .  6A 00         PUSH 0
  004059F2   .  68 10D24200   PUSH AVISplit.0042D210                ;  registration failed!
  004059F7   .  E8 0B030200   CALL AVISplit.00425D07
  
  
  
  修改后的位
  00405963      90            NOP                                   ;  关键跳,跳到注册失败哪里
  00405964      90            NOP
  00405965      90            NOP
  00405966      90            NOP
  00405967      90            NOP
  00405968      90            NOP
  00405969   .  807C24 13 33  CMP BYTE PTR SS:[ESP+13],33
  0040596E      90            NOP                                   ;  再次关键跳,跳到失败哪里
  0040596F      90            NOP
  00405970   .  8A5424 14     MOV DL,BYTE PTR SS:[ESP+14]
  00405974   .  B0 38         MOV AL,38
  00405976   .  3AD0          CMP DL,AL
  00405978      90            NOP                                   ;  还是弄了一次
  00405979      90            NOP
  0040597A   .  384424 15     CMP BYTE PTR SS:[ESP+15],AL
  0040597E      90            NOP
  0040597F      90            NOP
  00405980   .  80F9 33       CMP CL,33
  00405983      90            NOP
  00405984      90            NOP
  00405985   .  807C24 1A 31  CMP BYTE PTR SS:[ESP+1A],31
  0040598A      90            NOP
  0040598B      90            NOP
  0040598C   .  807C24 1B 34  CMP BYTE PTR SS:[ESP+1B],34
  00405991      90            NOP
  00405992      90            NOP
  00405993   .  80FB 36       CMP BL,36
  00405996      90            NOP
  00405997      90            NOP
  
  
  然后保存,,,大功高成
  
  
  
--------------------------------------------------------------------------------
【经验总结】
  CDQ 是一个让很多初学者感到困惑的指令. 它大多出现在除法运算之前. 它实际的作用只是把EDX的所有位都设成EAX最高位
  的值. 也就是说,当EAX <80000000, EDX 00000000; 当EAX >= 80000000, EDX 则为FFFFFFFF). 
  
  前两天遇到了一个强壳,问了好多人,提问也没有提问到,所以,有些灰心,但是今天找到了一个无壳的软件,自己就用自
  己学习过的方法,最后爆破了!在论坛还是能学到好多东西!再次感谢论坛!支持!  我会加倍努力!
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!