有个软件的注册算法中的一部分如下面所示:写注册机怎么和调试的结果不一致?关键是MSVBVM60.rtcRandomNext这里,我写注册机的代码是Int(Rnd*96)
我得到的返回结果是67,调试他的程序时返回的结果是21,真不知道他原来的代码是怎么写的,请各位高手相助,谢谢了!
0043EC5C . FF15 4C104000 CALL DWORD PTR DS:[<&MSVBVM60.#516>] ; MSVBVM60.rtcAnsiValueBstr
0043EC62 . 8D4D C0 LEA ECX,DWORD PTR SS:[EBP-40]
0043EC65 . 8945 D4 MOV DWORD PTR SS:[EBP-2C],EAX
0043EC68 . FFD3 CALL EBX ;MSVBVM60.__vbaFreeStr
0043EC6A . 8D4D B0 LEA ECX,DWORD PTR SS:[EBP-50]
0043EC6D . FFD7 CALL EDI ;MSVBVM60.__vbaFreeVar
0043EC6F . 8B45 D4 MOV EAX,DWORD PTR SS:[EBP-2C]
0043EC72 . 66:3D 2000 CMP AX,20
0043EC76 . 0F8C B2000000 JL 客户端2.0043ED2E
0043EC7C . 66:3D 7E00 CMP AX,7E
0043EC80 . 0F8F A8000000 JG 客户端2.0043ED2E
0043EC86 . 66:2D 2000 SUB AX,20
0043EC8A . 8D55 B0 LEA EDX,DWORD PTR SS:[EBP-50]
0043EC8D . 0F80 1D010000 JO 客户端2.0043EDB0
0043EC93 . 52 PUSH EDX
0043EC94 . 8945 D4 MOV DWORD PTR SS:[EBP-2C],EAX
0043EC97 . C745 B8 04000>MOV DWORD PTR SS:[EBP-48],80020004
0043EC9E . C745 B0 0A000>MOV DWORD PTR SS:[EBP-50],0A
0043ECA5 . FF15 84104000 CALL DWORD PTR DS:[<&MSVBVM60.#593>] ; MSVBVM60.rtcRandomNext ;后面21的结果是第一次执行rnd的结果,再次执行后结果不同,看来Rnd参数不应该是-1
0043ECAB . D95D 9C FSTP DWORD PTR SS:[EBP-64]
0043ECAE . D945 9C FLD DWORD PTR SS:[EBP-64]
0043ECB1 . D80D 281A4000 FMUL DWORD PTR DS:[401A28] ;这里DS是96
0043ECB7 . DFE0 FSTSW AX ;乘后取整的结果是21
0043ECB9 . A8 0D TEST AL,0D
0043ECBB . 0F85 EA000000 JNZ 客户端2.0043EDAB
0043ECC1 . FF15 7C124000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaR8Int>; MSVBVM60.__vbaR8IntI4
0043ECC7 . 8D4D B0 LEA ECX,DWORD PTR SS:[EBP-50]
0043ECCA . 8945 E0 MOV DWORD PTR SS:[EBP-20],EAX
0043ECCD . FFD7 CALL EDI
0043ECCF . 0FBF45 D4 MOVSX EAX,WORD PTR SS:[EBP-2C]
0043ECD3 . 8B4D E0 MOV ECX,DWORD PTR SS:[EBP-20]
0043ECD6 . 03C1 ADD EAX,ECX
0043ECD8 . B9 5F000000 MOV ECX,5F
0043ECDD . 0F80 CD000000 JO 客户端2.0043EDB0
0043ECE3 . 99 CDQ
0043ECE4 . F7F9 IDIV ECX
0043ECE6 . 8BCA MOV ECX,EDX
0043ECE8 . FF15 14114000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaI2I4>>; MSVBVM60.__vbaI2I4
0043ECEE . 8B55 14 MOV EDX,DWORD PTR SS:[EBP+14]
0043ECF1 . 66:05 2000 ADD AX,20
这个是个VB做的程序,反编译后的结果,我同样用VB写了个简单的程序,反编译的结果无论如何也跟这个不一样,好晕!
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课