└──╼ $ROPgadget --binary Emachine --only 'pop|ret' Gadgets information ============================================================ 0x0000000000400c7c : pop r12 ; pop r13 ; pop r14 ; pop r15 ; ret 0x0000000000400c7e : pop r13 ; pop r14 ; pop r15 ; ret 0x0000000000400c80 : pop r14 ; pop r15 ; ret 0x0000000000400c82 : pop r15 ; ret 0x0000000000400c7b : pop rbp ; pop r12 ; pop r13 ; pop r14 ; pop r15 ; ret 0x0000000000400c7f : pop rbp ; pop r14 ; pop r15 ; ret 0x00000000004007f0 : pop rbp ; ret 0x0000000000400aec : pop rbx ; pop rbp ; ret 0x0000000000400c83 : pop rdi ; ret 0x0000000000400c81 : pop rsi ; pop r15 ; ret 0x0000000000400c7d : pop rsp ; pop r13 ; pop r14 ; pop r15 ; ret 0x00000000004006b9 : ret 0x00000000004008ca : ret 0x2017 0x0000000000400962 : ret 0x458b 0x00000000004009c5 : ret 0xbf02
Unique gadgets found: 15
然后加密部分在加密一次就完了,异或加密可逆
加密函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14
defDecrypt(payload): result = "" for x in range(len(payload)): if ord(payload[x]) <= 96or ord(payload[x]) > 122: if ord(payload[x]) <=64or ord(payload[x]) > 90: if ord(payload[x]) > 47and ord(payload[x]) <= 57: result += chr(ord(payload[x]) ^ 0xf) else: result += payload[x] else: result += chr(ord(payload[x]) ^ 0xe) else: result += chr(ord(payload[x]) ^ 0xd) return result