-
-
[分享]第一题关键位置
-
发表于: 2017-6-2 11:33 2022
-
CPU Disasm
Address Hex dump Command Comments
00401225 . 83F8 04 CMP EAX,4
00401228 . 59 POP ECX
00401229 . 0F85 A0000000 JNE 004012CF
0040122F . 6A 30 PUSH 30
00401231 . 59 POP ECX
00401232 . 384D E4 CMP BYTE PTR SS:[EBP-1C],CL
00401235 . 0F84 94000000 JE 004012CF
0040123B . 384D E5 CMP BYTE PTR SS:[EBP-1B],CL
0040123E . 0F84 8B000000 JE 004012CF
00401244 . 384D E6 CMP BYTE PTR SS:[EBP-1A],CL
00401247 . 0F84 82000000 JE 004012CF
0040124D . 384D E7 CMP BYTE PTR SS:[EBP-19],CL
//以上可以判断长度为4 并且所有数据不为0
00401250 . 74 7D JE SHORT 004012CF
00401252 . 807D E4 31 CMP BYTE PTR SS:[EBP-1C],31
00401256 . 75 77 JNE SHORT 004012CF
00401258 . 807D E5 35 CMP BYTE PTR SS:[EBP-1B],35
0040125C . 75 71 JNE SHORT 004012CF
0040125E . 74 03 JE SHORT 00401263
00401260 . 75 01 JNE SHORT 00401263
//以上可以获得前两位不为15直接跳转error
CPU Disasm
Address Hex dump Command Comments
0040126B . 0FBE45 E6 MOVSX EAX,BYTE PTR SS:[EBP-1A]
0040126F . 2BC1 SUB EAX,ECX
00401271 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
00401274 . 0FBE45 E4 MOVSX EAX,BYTE PTR SS:[EBP-1C]
00401278 . DB45 FC FILD DWORD PTR SS:[EBP-4]
0040127B . 2BC1 SUB EAX,ECX
0040127D . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
00401280 . 0FBE45 E5 MOVSX EAX,BYTE PTR SS:[EBP-1B]
00401284 . DB45 FC FILD DWORD PTR SS:[EBP-4]
00401287 . 2BC1 SUB EAX,ECX
00401289 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
0040128C . DA75 FC FIDIV DWORD PTR SS:[EBP-4]
0040128F . 0FBE45 E7 MOVSX EAX,BYTE PTR SS:[EBP-19]
00401293 . 2BC1 SUB EAX,ECX
00401295 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
00401298 . DEE9 FSUBP ST(1),ST
0040129A . DA4D FC FIMUL DWORD PTR SS:[EBP-4]
0040129D . D80D 1C714000 FMUL DWORD PTR DS:[40711C] ; FLOAT 16.00000
004012A3 . D95D FC FSTP DWORD PTR SS:[EBP-4]
004012A6 . 74 03 JE SHORT 004012AB
004012A8 . 75 01 JNE SHORT 004012AB
004012AA E8 DB E8
004012AB /> 66:B8 0800 MOV AX,8
004012AF |. 66:35 0700 XOR AX,0007
004012B3 |. D945 FC FLD DWORD PTR SS:[EBP-4]
004012B6 |. D81D 18714000 FCOMP DWORD PTR DS:[407118] ; FLOAT 384.0000
004012BC |. 6A 00 PUSH 0
//以上的实际步骤推论
1、取第3位的十六进制值,然后减去0x30,这里则假定值为a
2、取第1位值为“1”的十六进制值即0x31,然后减去0x30,0x31-0x30 =1
3、取第2位值为“5”的十六进制值即0x35,然后减去0x30,0x31-0x30 =5 ,接着就是1除以5得出浮点数0.2
4、取第4位的十六进制值,然后减去0x30,这里则假定值为b
5、接着就是(a-0.2)*b乘以16得出的结果为c
6、判断c与384是否相等,相等则Registration successful !,不相同则“error”
获取公式:(a-0.2)*b*16 = 384求解a和b
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课