首页
社区
课程
招聘
[求助]调试SEH程序时遇到困难,高手帮看一下
发表于: 2005-5-31 19:10 4479

[求助]调试SEH程序时遇到困难,高手帮看一下

2005-5-31 19:10
4479
小弟在调试SEH程序时遇到一些困难,高手帮忙看一下这个程序的部分代码,输入假注册码"987654321abcd"进入程序注册部分:

0049D830    $  55               PUSH EBP
0049D831    .  8BEC             MOV EBP,ESP
0049D833    .  83C4 BC          ADD ESP,-44
0049D836    .  53               PUSH EBX
0049D837    .  56               PUSH ESI
0049D838    .  57               PUSH EDI
0049D839    .  33DB             XOR EBX,EBX
0049D83B    .  895D BC          MOV DWORD PTR SS:[EBP-44],EBX
0049D83E    .  895D C0          MOV DWORD PTR SS:[EBP-40],EBX
0049D841    .  895D C4          MOV DWORD PTR SS:[EBP-3C],EBX
0049D844    .  895D C8          MOV DWORD PTR SS:[EBP-38],EBX
0049D847    .  895D DC          MOV DWORD PTR SS:[EBP-24],EBX
0049D84A    .  895D F0          MOV DWORD PTR SS:[EBP-10],EBX
0049D84D    .  895D EC          MOV DWORD PTR SS:[EBP-14],EBX
0049D850    .  895D E8          MOV DWORD PTR SS:[EBP-18],EBX
0049D853    .  894D F8          MOV DWORD PTR SS:[EBP-8],ECX
0049D856    .  8955 FC          MOV DWORD PTR SS:[EBP-4],EDX
0049D859    .  8BD8             MOV EBX,EAX
0049D85B    .  8B45 FC          MOV EAX,DWORD PTR SS:[EBP-4]
0049D85E    .  E8 3172F6FF      CALL DriverSt.00404A94
0049D863    .  8B45 F8          MOV EAX,DWORD PTR SS:[EBP-8]
0049D866    .  E8 2972F6FF      CALL DriverSt.00404A94
0049D86B    .  8B45 0C          MOV EAX,DWORD PTR SS:[EBP+C]
0049D86E    .  E8 2172F6FF      CALL DriverSt.00404A94
0049D873    .  8B45 08          MOV EAX,DWORD PTR SS:[EBP+8]
0049D876    .  E8 1972F6FF      CALL DriverSt.00404A94
0049D87B    .  33C0             XOR EAX,EAX
0049D87D    .  55               PUSH EBP
0049D87E    .  68 68DB4900      PUSH DriverSt.0049DB68
0049D883    .  64:FF30          PUSH DWORD PTR FS:[EAX]
0049D886    .  64:8920          MOV DWORD PTR FS:[EAX],ESP
0049D889    >  E8 5292F6FF      CALL <JMP.&kernel32.GetTickCount>         ; [GetTickCount
0049D88E    .  8BF0             MOV ESI,EAX
0049D890    .  68 D0070000      PUSH 7D0                                  ; /Timeout = 2000. ms
0049D895    .  E8 BA06F7FF      CALL <JMP.&kernel32.Sleep>                ; \Sleep
0049D89A    .  8B43 54          MOV EAX,DWORD PTR DS:[EBX+54]
0049D89D    .  8078 04 00       CMP BYTE PTR DS:[EAX+4],0
0049D8A1    .  74 0A            JE SHORT DriverSt.0049D8AD
0049D8A3    .  8D55 FC          LEA EDX,DWORD PTR SS:[EBP-4]
0049D8A6    .  8BC3             MOV EAX,EBX
0049D8A8    .  E8 27F9FFFF      CALL DriverSt.0049D1D4
0049D8AD    >  E8 2E92F6FF      CALL <JMP.&kernel32.GetTickCount>         ; [GetTickCount
0049D8B2    .  81C6 CF070000    ADD ESI,7CF
0049D8B8    .  3BC6             CMP EAX,ESI
0049D8BA    .^ 72 CD            JB SHORT DriverSt.0049D889
0049D8BC    .  8B45 FC          MOV EAX,DWORD PTR SS:[EBP-4]
0049D8BF    .  E8 E06FF6FF      CALL DriverSt.004048A4                    ;  取得机器码的长度
0049D8C4    .  3B43 58          CMP EAX,DWORD PTR DS:[EBX+58]             ;  机器码长度不大于50
0049D8C7    .  7F 19            JG SHORT DriverSt.0049D8E2
0049D8C9    .  8B45 FC          MOV EAX,DWORD PTR SS:[EBP-4]
0049D8CC    .  E8 D36FF6FF      CALL DriverSt.004048A4                    ;  取得机器码的长度
0049D8D1    .  3B43 5C          CMP EAX,DWORD PTR DS:[EBX+5C]
0049D8D4    .  7C 0C            JL SHORT DriverSt.0049D8E2                ;  机器码的长度不小于5
0049D8D6    .  8B45 0C          MOV EAX,DWORD PTR SS:[EBP+C]
0049D8D9    .  E8 C66FF6FF      CALL DriverSt.004048A4                    ;  取注册码的长度
0049D8DE    .  85C0             TEST EAX,EAX
0049D8E0    .  75 09            JNZ SHORT DriverSt.0049D8EB
0049D8E2    >  C645 F7 00       MOV BYTE PTR SS:[EBP-9],0
0049D8E6    .  E9 33020000      JMP DriverSt.0049DB1E
0049D8EB    >  8D55 DC          LEA EDX,DWORD PTR SS:[EBP-24]
0049D8EE    .  8B45 0C          MOV EAX,DWORD PTR SS:[EBP+C]
0049D8F1    .  E8 D6ADF6FF      CALL DriverSt.004086CC                    ;  注册码小写转大写
0049D8F6    .  8B55 DC          MOV EDX,DWORD PTR SS:[EBP-24]
0049D8F9    .  8D45 0C          LEA EAX,DWORD PTR SS:[EBP+C]
0049D8FC    .  E8 7B6DF6FF      CALL DriverSt.0040467C
0049D901    .  C645 F7 00       MOV BYTE PTR SS:[EBP-9],0
0049D905    .  B1 01            MOV CL,1
0049D907    .  8B55 0C          MOV EDX,DWORD PTR SS:[EBP+C]
0049D90A    .  8BC3             MOV EAX,EBX
0049D90C    .  E8 83FAFFFF      CALL DriverSt.0049D394                    ;  取得注册码的第二位"8"
0049D911    .  84C0             TEST AL,AL
0049D913    .  0F85 05020000    JNZ DriverSt.0049DB1E
0049D919    .  33C9             XOR ECX,ECX
0049D91B    .  55               PUSH EBP
0049D91C    .  68 A4DA4900      PUSH DriverSt.0049DAA4
0049D921    .  64:FF31          PUSH DWORD PTR FS:[ECX]
0049D924    .  64:8921          MOV DWORD PTR FS:[ECX],ESP
0049D927    .  8D45 F0          LEA EAX,DWORD PTR SS:[EBP-10]
0049D92A    .  8B55 0C          MOV EDX,DWORD PTR SS:[EBP+C]
0049D92D    .  8A52 01          MOV DL,BYTE PTR DS:[EDX+1]
0049D930    .  E8 976EF6FF      CALL DriverSt.004047CC
0049D935    .  8D45 D8          LEA EAX,DWORD PTR SS:[EBP-28]
0049D938    .  8B55 0C          MOV EDX,DWORD PTR SS:[EBP+C]
0049D93B    .  8A52 09          MOV DL,BYTE PTR DS:[EDX+9]                ;  注册码的第十位"A"
0049D93E    .  8850 01          MOV BYTE PTR DS:[EAX+1],DL
0049D941    .  C600 01          MOV BYTE PTR DS:[EAX],1
0049D944    .  8D55 D8          LEA EDX,DWORD PTR SS:[EBP-28]
0049D947    .  8D45 D4          LEA EAX,DWORD PTR SS:[EBP-2C]
0049D94A    .  E8 BD57F6FF      CALL DriverSt.0040310C
0049D94F    .  8D45 D0          LEA EAX,DWORD PTR SS:[EBP-30]
0049D952    .  8B55 0C          MOV EDX,DWORD PTR SS:[EBP+C]
0049D955    .  8A52 07          MOV DL,BYTE PTR DS:[EDX+7]                ;  注册码的第八位"2"
0049D958    .  8850 01          MOV BYTE PTR DS:[EAX+1],DL
0049D95B    .  C600 01          MOV BYTE PTR DS:[EAX],1
0049D95E    .  8D55 D0          LEA EDX,DWORD PTR SS:[EBP-30]
0049D961    .  8D45 D4          LEA EAX,DWORD PTR SS:[EBP-2C]
0049D964    .  B1 02            MOV CL,2
0049D966    .  E8 7157F6FF      CALL DriverSt.004030DC                    ;  连接上面的两位
0049D96B    .  8D55 D4          LEA EDX,DWORD PTR SS:[EBP-2C]
0049D96E    .  8D45 EC          LEA EAX,DWORD PTR SS:[EBP-14]
0049D971    .  E8 D26EF6FF      CALL DriverSt.00404848                    ;  得到字符串"A2"
0049D976    .  8D45 D8          LEA EAX,DWORD PTR SS:[EBP-28]
0049D979    .  8B55 0C          MOV EDX,DWORD PTR SS:[EBP+C]
0049D97C    .  8A52 03          MOV DL,BYTE PTR DS:[EDX+3]                ;  注册码的第四位"6"
0049D97F    .  8850 01          MOV BYTE PTR DS:[EAX+1],DL
0049D982    .  C600 01          MOV BYTE PTR DS:[EAX],1
0049D985    .  8D55 D8          LEA EDX,DWORD PTR SS:[EBP-28]
0049D988    .  8D45 D4          LEA EAX,DWORD PTR SS:[EBP-2C]
0049D98B    .  E8 7C57F6FF      CALL DriverSt.0040310C
0049D990    .  8D45 D0          LEA EAX,DWORD PTR SS:[EBP-30]
0049D993    .  8B55 0C          MOV EDX,DWORD PTR SS:[EBP+C]
0049D996    .  8A52 05          MOV DL,BYTE PTR DS:[EDX+5]                ;  注册码的第六位"4"
0049D999    .  8850 01          MOV BYTE PTR DS:[EAX+1],DL
0049D99C    .  C600 01          MOV BYTE PTR DS:[EAX],1
0049D99F    .  8D55 D0          LEA EDX,DWORD PTR SS:[EBP-30]
0049D9A2    .  8D45 D4          LEA EAX,DWORD PTR SS:[EBP-2C]
0049D9A5    .  B1 02            MOV CL,2
0049D9A7    .  E8 3057F6FF      CALL DriverSt.004030DC
0049D9AC    .  8D55 D4          LEA EDX,DWORD PTR SS:[EBP-2C]
0049D9AF    .  8D45 CC          LEA EAX,DWORD PTR SS:[EBP-34]
0049D9B2    .  E8 5557F6FF      CALL DriverSt.0040310C
0049D9B7    .  8D45 D0          LEA EAX,DWORD PTR SS:[EBP-30]
0049D9BA    .  8B55 0C          MOV EDX,DWORD PTR SS:[EBP+C]
0049D9BD    .  8A52 0B          MOV DL,BYTE PTR DS:[EDX+B]                ;  注册码的第十二位"C"
0049D9C0    .  8850 01          MOV BYTE PTR DS:[EAX+1],DL
0049D9C3    .  C600 01          MOV BYTE PTR DS:[EAX],1
0049D9C6    .  8D55 D0          LEA EDX,DWORD PTR SS:[EBP-30]
0049D9C9    .  8D45 CC          LEA EAX,DWORD PTR SS:[EBP-34]
0049D9CC    .  B1 03            MOV CL,3
0049D9CE    .  E8 0957F6FF      CALL DriverSt.004030DC                    ;  连接上面的三位
0049D9D3    .  8D55 CC          LEA EDX,DWORD PTR SS:[EBP-34]
0049D9D6    .  8D45 E8          LEA EAX,DWORD PTR SS:[EBP-18]
0049D9D9    .  E8 6A6EF6FF      CALL DriverSt.00404848                    ;  得到字符串"64C"
0049D9DE    .  8D45 C8          LEA EAX,DWORD PTR SS:[EBP-38]
0049D9E1    .  8B4D F0          MOV ECX,DWORD PTR SS:[EBP-10]
0049D9E4    .  BA 84DB4900      MOV EDX,DriverSt.0049DB84
0049D9E9    .  E8 026FF6FF      CALL DriverSt.004048F0
0049D9EE    .  8B45 C8          MOV EAX,DWORD PTR SS:[EBP-38]
0049D9F1    .  BA FFFF0000      MOV EDX,0FFFF
0049D9F6    .  E8 69B3F6FF      CALL DriverSt.00408D64                    ;  得到0x8
0049D9FB    .  8BF0             MOV ESI,EAX
0049D9FD    .  8D45 C4          LEA EAX,DWORD PTR SS:[EBP-3C]
0049DA00    .  8B4D EC          MOV ECX,DWORD PTR SS:[EBP-14]
0049DA03    .  BA 84DB4900      MOV EDX,DriverSt.0049DB84
0049DA08    .  E8 E36EF6FF      CALL DriverSt.004048F0
0049DA0D    .  8B45 C4          MOV EAX,DWORD PTR SS:[EBP-3C]
0049DA10    .  BA FFFF0000      MOV EDX,0FFFF
0049DA15    .  E8 4AB3F6FF      CALL DriverSt.00408D64                    ;  得到0xA2
0049DA1A    .  8BF8             MOV EDI,EAX
0049DA1C    .  8D45 C0          LEA EAX,DWORD PTR SS:[EBP-40]
0049DA1F    .  8B4D E8          MOV ECX,DWORD PTR SS:[EBP-18]
0049DA22    .  BA 84DB4900      MOV EDX,DriverSt.0049DB84
0049DA27    .  E8 C46EF6FF      CALL DriverSt.004048F0
0049DA2C    .  8B45 C0          MOV EAX,DWORD PTR SS:[EBP-40]
0049DA2F    .  BA FFFF0000      MOV EDX,0FFFF
0049DA34    .  E8 2BB3F6FF      CALL DriverSt.00408D64                    ;  得到0x64C
0049DA39    .  8BD7             MOV EDX,EDI
0049DA3B    .  0BD6             OR EDX,ESI                                ;  0x8 | 0xA2 = 0xAA
0049DA3D    .  0BD0             OR EDX,EAX                                ;  0xAA | 0x64C = 0x6EE
0049DA3F    .  81FA FFFF0000    CMP EDX,0FFFF                             ;  这里结果好像不可能等于0xFFFF,上面进行运算的数值最多三个字节,改变假注册码最多也只能等于0xFFF,所以只能从下面跳到异常的地方
0049DA45    .  75 0F            JNZ SHORT DriverSt.0049DA56
0049DA47    .  64:8F05 00000000 POP DWORD PTR FS:[0]
0049DA4E    .  83C4 08          ADD ESP,8
0049DA51    .  E9 C8000000      JMP DriverSt.0049DB1E                     ;  成功的地方在0049DB1A,即使暴力修改上面的JNZ,从这里也跳不到成功的地方。
0049DA56    >  8BD6             MOV EDX,ESI
0049DA58    .  66:83F2 07       XOR DX,7                                  ;  0x8 ^ 0x7 = 0xF
0049DA5C    .  8BF7             MOV ESI,EDI
0049DA5E    .  66:81F6 B700     XOR SI,0B7                                ;  0xA2 ^ 0xB7 = 0x15
0049DA63    .  66:35 B705       XOR AX,5B7                                ;  0x64C ^ 0x5B7 = 0x3FB
0049DA67    .  8BCE             MOV ECX,ESI
0049DA69    .  E8 A6CDF6FF      CALL DriverSt.0040A814                    ;  此Call产生异常
0049DA6E    .  DD5D E0          FSTP QWORD PTR SS:[EBP-20]
0049DA71    .  9B               WAIT
0049DA72    .  E8 65CFF6FF      CALL DriverSt.0040A9DC
0049DA77    .  DC5D E0          FCOMP QWORD PTR SS:[EBP-20]
0049DA7A    .  DFE0             FSTSW AX
0049DA7C    .  9E               SAHF
0049DA7D    .  76 1B            JBE SHORT DriverSt.0049DA9A
0049DA7F    .  DD45 E0          FLD QWORD PTR SS:[EBP-20]
0049DA82    .  D81D 88DB4900    FCOMP DWORD PTR DS:[49DB88]
0049DA88    .  DFE0             FSTSW AX
0049DA8A    .  9E               SAHF
0049DA8B    .  74 0D            JE SHORT DriverSt.0049DA9A
0049DA8D    .  33C0             XOR EAX,EAX
0049DA8F    .  5A               POP EDX
0049DA90    .  59               POP ECX
0049DA91    .  59               POP ECX
0049DA92    .  64:8910          MOV DWORD PTR FS:[EAX],EDX
0049DA95    .  E9 84000000      JMP DriverSt.0049DB1E
0049DA9A    >  33C0             XOR EAX,EAX
0049DA9C    .  5A               POP EDX
0049DA9D    .  59               POP ECX
0049DA9E    .  59               POP ECX
0049DA9F    .  64:8910          MOV DWORD PTR FS:[EAX],EDX
0049DAA2    .  EB 11            JMP SHORT DriverSt.0049DAB5
0049DAA4    .^ E9 6362F6FF      JMP DriverSt.00403D0C                     ;  异常后,到这里继续执行
0049DAA9    .  E8 C665F6FF      CALL DriverSt.00404074
0049DAAE    .  EB 6E            JMP SHORT DriverSt.0049DB1E               ;  成功的地方在0049DB1A
0049DAB0    .  E8 BF65F6FF      CALL DriverSt.00404074
0049DAB5    >  8D45 BC          LEA EAX,DWORD PTR SS:[EBP-44]
0049DAB8    .  50               PUSH EAX
0049DAB9    .  8B4D 0C          MOV ECX,DWORD PTR SS:[EBP+C]
0049DABC    .  8B55 FC          MOV EDX,DWORD PTR SS:[EBP-4]
0049DABF    .  8BC3             MOV EAX,EBX
0049DAC1    .  E8 76F0FFFF      CALL DriverSt.0049CB3C
0049DAC6    .  8B45 BC          MOV EAX,DWORD PTR SS:[EBP-44]
0049DAC9    .  BA 94DB4900      MOV EDX,DriverSt.0049DB94                 ;  ASCII "645364631365423154824"
0049DACE    .  E8 99ACF6FF      CALL DriverSt.0040876C
0049DAD3    .  85C0             TEST EAX,EAX
0049DAD5    .  75 06            JNZ SHORT DriverSt.0049DADD
0049DAD7    .  C645 F7 01       MOV BYTE PTR SS:[EBP-9],1
0049DADB    .  EB 04            JMP SHORT DriverSt.0049DAE1
0049DADD    >  C645 F7 00       MOV BYTE PTR SS:[EBP-9],0
0049DAE1    >  807D F7 01       CMP BYTE PTR SS:[EBP-9],1
0049DAE5    .  75 37            JNZ SHORT DriverSt.0049DB1E
0049DAE7    .  8D43 50          LEA EAX,DWORD PTR DS:[EBX+50]
0049DAEA    .  8B55 FC          MOV EDX,DWORD PTR SS:[EBP-4]
0049DAED    .  E8 466BF6FF      CALL DriverSt.00404638
0049DAF2    .  8D43 60          LEA EAX,DWORD PTR DS:[EBX+60]
0049DAF5    .  8B55 F8          MOV EDX,DWORD PTR SS:[EBP-8]
0049DAF8    .  E8 3B6BF6FF      CALL DriverSt.00404638
0049DAFD    .  8D43 68          LEA EAX,DWORD PTR DS:[EBX+68]
0049DB00    .  8B55 0C          MOV EDX,DWORD PTR SS:[EBP+C]
0049DB03    .  E8 306BF6FF      CALL DriverSt.00404638
0049DB08    .  8D43 44          LEA EAX,DWORD PTR DS:[EBX+44]
0049DB0B    .  8B55 08          MOV EDX,DWORD PTR SS:[EBP+8]
0049DB0E    .  E8 256BF6FF      CALL DriverSt.00404638
0049DB13    .  8BC3             MOV EAX,EBX
0049DB15    .  E8 C2020000      CALL DriverSt.0049DDDC
0049DB1A    .  C645 F7 01       MOV BYTE PTR SS:[EBP-9],1                 ;  SS:[EBP-9]里置1,走到这里就成功了
0049DB1E    >  33C0             XOR EAX,EAX
0049DB20    .  5A               POP EDX
0049DB21    .  59               POP ECX
0049DB22    .  59               POP ECX
0049DB23    .  64:8910          MOV DWORD PTR FS:[EAX],EDX
0049DB26    .  68 6FDB4900      PUSH DriverSt.0049DB6F
0049DB2B    >  8D45 BC          LEA EAX,DWORD PTR SS:[EBP-44]
0049DB2E    .  BA 04000000      MOV EDX,4
0049DB33    .  E8 D06AF6FF      CALL DriverSt.00404608
0049DB38    .  8D45 DC          LEA EAX,DWORD PTR SS:[EBP-24]
0049DB3B    .  E8 A46AF6FF      CALL DriverSt.004045E4
0049DB40    .  8D45 E8          LEA EAX,DWORD PTR SS:[EBP-18]
0049DB43    .  BA 03000000      MOV EDX,3
0049DB48    .  E8 BB6AF6FF      CALL DriverSt.00404608
0049DB4D    .  8D45 F8          LEA EAX,DWORD PTR SS:[EBP-8]
0049DB50    .  BA 02000000      MOV EDX,2
0049DB55    .  E8 AE6AF6FF      CALL DriverSt.00404608
0049DB5A    .  8D45 08          LEA EAX,DWORD PTR SS:[EBP+8]
0049DB5D    .  BA 02000000      MOV EDX,2
0049DB62    .  E8 A16AF6FF      CALL DriverSt.00404608
0049DB67    .  C3               RETN
0049DB68    .^ E9 5364F6FF      JMP DriverSt.00403FC0
0049DB6D    .^ EB BC            JMP SHORT DriverSt.0049DB2B
0049DB6F    .  8A45 F7          MOV AL,BYTE PTR SS:[EBP-9]
0049DB72    .  5F               POP EDI
0049DB73    .  5E               POP ESI
0049DB74    .  5B               POP EBX
0049DB75    .  8BE5             MOV ESP,EBP
0049DB77    .  5D               POP EBP
0049DB78    .  C2 0800          RETN 8
不用暴力修改,怎样才能通过注册码的校验呢??

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
2
什么程序?放上来学习一下~
2005-5-31 20:56
0
雪    币: 312
活跃值: (860)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3

2005-5-31 21:32
0
雪    币: 671
活跃值: (723)
能力值: ( LV9,RANK:1060 )
在线值:
发帖
回帖
粉丝
4
问题已经解决,原来在这里

0049DA69    .  E8 A6CDF6FF      CALL DriverSt.0040A814                    ;  此Call产生异常

异常就在这个Call内部,产生异常前还有对注册码的验证,没有仔细看,只有注册码符合条件,是可以跳过异常的,并且执行到成功的地方。
2005-5-31 21:50
0
游客
登录 | 注册 方可回帖
返回
//