[Shell] 纯文本查看 复制代码
000000014002D000 04 04 00 00 48 83 EC 38 opcode=04, size=0x04, x64opcode = 48 83 EC 38 (sub rsp,0x38)
000000014002D008 04 09 00 00 48 C7 44 24 20 00 00 00 00 opcode=04, size=0x09, x64opcode = 48 C7 44 24 20 00 00 00 00 (mov qword ptr ss:[rsp+20],0x0)
000000014002D015 01 55 00 00 20 02 00 opcode1=01, opcode2=0x55, value=0x00, var_val=0x00022000, var_alloc, var==> buff
000000014002D01C 01 57 opcode1=01, opcode2=0x57, value=0x0000000140000000, var_init, var = 0 or null
000000014002D01E 05 10 opcode1=05, param1=0x10, [param1] = 0x00022000, var_set, var ==>"password:"
000000014002D020 01 10 opcode1=01, param1=0x10, [param1] = 0x00022000, var_ref, var ==>"password:"
000000014002D022 02 01 opcode1=02, param1=0x01, [param1] = 0x00022000, var_push, var ==>"password:"
000000014002D024 03 55 20 10 00 00 opcode1=03, param1=0x55, param2 = 0x00001020, [00001020] ==> msg, call_api, printf(msg)
000000014002D02A 04 05 00 00 48 8D 54 24 20 opcode=04, size=0x04, x64opcode = 48 8D 54 24 20 (lea rdx,qword ptr ss:[rsp+20])
000000014002D033 01 55 00 0C 20 02 00 opcode1=01, opcode2=0x55, value=0x00, var_val=0x0002200C, var_alloc, var==> buff
000000014002D03A 01 57 opcode1=01, opcode2=0x57, value=0x0000000140000000, var_init, var = 0 or null
000000014002D03C 05 10 opcode1=05, param1=0x10, [param1] = 0x0002200C, var_set, var ==>"%d"
000000014002D03E 01 10 opcode1=01, param1=0x10, [param1] = 0x0002200C, var_ref, var ==>"%d"
000000014002D040 02 01 opcode1=02, param1=0x01, [param1] = 0x0002200C, var_push, var ==>"%d"
;input
000000014002D042 03 55 80 10 00 00 opcode1=03, param1=0x55, param2 = 0x00001080, [00001080] ==> fmt, call_api, scanf(fmt)
000000014002D047 04 05 00 00 48 8B 44 24 20 opcode=04, size=0x05, x64opcode = 48 8B 44 24 20 (mov rax,qword ptr ss:[rsp+20]),get integer with scanf
;compare
000000014002D051 04 06 00 00 48 2D 78 56 34 12 opcode=04, size=0x06, x64opcode = 48 2D 78 56 34 12 (sub rax,12345678), sub
000000014002D05B 04 06 00 00 48 35 96 43 96 43 opcode=04, size=0x06, x64opcode = 48 35 96 43 96 43 (xor rax,43964396), xor
000000014002D065 04 05 00 00 48 89 44 24 28 opcode=04, size=0x05, x64opcode = 48 89 44 24 28 (mov qword ptr ss:[rsp+28],rax), save
000000014002D06E 04 09 00 00 48 81 7C 24 28 FD 5F 97 4A opcode=04, size=0x09, x64opcode = 48 81 7C 24 28 FD 5F 97 4A (cmp qword ptr ss:[rsp+28],4A975FFD), compare
000000014002D07B 00 10 1B 00 00 00 opcode=00, opcode2=0x10(jne), param1=0x0000001B, true: rip = $+2+4+param1 (0x1F, rip=000000014002D09C), false: rip = $+2+4 (0x6, rip=000000014002D081)
;success
000000014002D081 01 55 00 10 20 02 00 (var_alloc)
000000014002D088 01 57
000000014002D08A 05 10
000000014002D08C 01 10
000000014002D08E 02 01
000000014002D090 03 55 20 10 00 00 (printf("good job!"))
000000014002D096 00 1F 15 00 00 00 (jmp 000000014002D0B1)
;failure
000000014002D09C 01 55 00 20 20 02 00 (var_alloc)
000000014002D0A3 01 57
000000014002D0A5 05 10
000000014002D0A7 01 10
000000014002D0A9 02 01
000000014002D0AB 03 55 20 10 00 00 (printf("error!"))
;exit
000000014002D0B1 01 55 00 28 20 02 00 (var_alloc)
000000014002D0B8 01 57
000000014002D0BA 05 10
000000014002D0BC 01 10
000000014002D0BE 02 01 (msg = "pause")
000000014002D0C0 06 (system("pause"), output "请按任意键继续. . ." and pause)
000000014002D0C1 3C 11 00 00 00 00 00 00 00 00 00 00 00 00 00