能力值:
( LV7,RANK:100 )
|
-
-
2 楼
0043F7C7 > mov dword ptr ss:[ebp-54],80020004 ; ss:[ebp-54]置80020004。从0043F810反复跳到这里
0043F7CE . mov dword ptr ss:[ebp-5C],0A ; ss:[ebp-5C]置0A
0043F7D5 . lea ecx,dword ptr ss:[ebp-5C] ; ss:[ebp-5C]=0A
0043F7D8 . push ecx ; [ecx]=0A
0043F7D9 . call dword ptr ds:[<&msvbvm60.rtcRandomNext>] ; 产生伪随机数
0043F7DF . fstp dword ptr ss:[ebp-C4] ; 伪随机数存入ss:[ebp-C4],出栈(st(0) -> st(7)
0043F7E5 . fld dword ptr ss:[ebp-C4] ; 伪随机数再装入st(0)
0043F7EB . fmul dword ptr ds:[401DD4] ; ds:[00401DD4]=127,与st(0)相乘,结果存入st(0)
0043F7F1 . fstsw ax ; 保存状态字的值(FST=3800或3820)到AX
0043F7F3 . test al,0D ; al的b0\b2\b4位是否全为0(al常为00或20)
0043F7F5 . jnz CrackMe.0043FA5A ; b0\b2\b4任一位不为0则跳到异常处理。跳转未实现
0043F7FB . call dword ptr ds:[<&msvbvm60.__vbaR8IntI2>] ; 伪随机数截取整数并出栈。双精度浮点型数据(8字节)->字节型数据或双字节整型数据?
0043F801 . mov esi,eax ; eax=734700??,不知怎么来的,暂称00??为伪随机码吧,以区别于前面的伪随机数
0043F803 . lea ecx,dword ptr ss:[ebp-5C] ; ss:[ebp-5C]=0A
0043F806 . call dword ptr ds:[<&msvbvm60.__vbaFreeVar>] ; ss:[ebp-5C]置0
0043F80C . cmp si,1E ; si=伪随机码
0043F810 .^ jl short CrackMe.0043F7C7 ; 小于30(1Eh)则重新产生伪随机数
0043F812 . cmp si,64 ;
0043F816 .^ jg short CrackMe.0043F7C7 ; 大于100(64h)则重新产生伪随机数
上面这段代码还原为VB程序的话,是些什么代码呀?
|
|
|