1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| opcode = [0x00000004, 0x00000010, 0x00000008, 0x00000003, 0x00000005, 0x00000001, 0x00000004, 0x00000020, 0x00000008, 0x00000005, 0x00000003, 0x00000001, 0x00000003, 0x00000002, 0x00000008, 0x0000000B, 0x00000001, 0x0000000C, 0x00000008, 0x00000004, 0x00000004, 0x00000001, 0x00000005, 0x00000003, 0x00000008, 0x00000003, 0x00000021, 0x00000001, 0x0000000B, 0x00000008, 0x0000000B, 0x00000001, 0x00000004, 0x00000009, 0x00000008, 0x00000003, 0x00000020, 0x00000001, 0x00000002, 0x00000051, 0x00000008, 0x00000004, 0x00000024, 0x00000001, 0x0000000C, 0x00000008, 0x0000000B, 0x00000001, 0x00000005, 0x00000002, 0x00000008, 0x00000002, 0x00000025, 0x00000001, 0x00000002, 0x00000036, 0x00000008, 0x00000004, 0x00000041, 0x00000001, 0x00000002, 0x00000020, 0x00000008, 0x00000005, 0x00000001, 0x00000001, 0x00000005, 0x00000003, 0x00000008, 0x00000002, 0x00000025, 0x00000001, 0x00000004, 0x00000009, 0x00000008, 0x00000003, 0x00000020, 0x00000001, 0x00000002, 0x00000041, 0x00000008, 0x0000000C, 0x00000001] arr1 = [0x22, 0x3F, 0x34, 0x32, 0x72, 0x33, 0x18, 0x000000A7, 0x31, 0x000000F1, 0x00000028, 0x00000084, 0x000000C1, 0x0000001E, 0x0000007A]
def judge(eip, cnt): _eip = eip for j in range(48, 123): flag = j while _eip < 83: if opcode[_eip] == 2: tmp = opcode[_eip + 1] + flag _eip += 2 elif opcode[_eip] == 3: tmp = flag - opcode[_eip + 1] _eip += 2 elif opcode[_eip] == 4: tmp = opcode[_eip + 1] ^ flag _eip += 2 elif opcode[_eip] == 5: tmp = opcode[_eip + 1] * flag _eip += 2 elif opcode[_eip] == 6: _eip += 1 elif opcode[_eip] == 8: flag = tmp _eip += 1 elif opcode[_eip] == 11: tmp = flag - 1 _eip += 1 elif opcode[_eip] == 12: tmp = flag + 1 _eip += 1 elif opcode[_eip] == 1: if tmp == arr1[cnt]: # print(f"{cnt}:{chr(j)}") print(f"{chr(j)}", end='') _eip += 1 return tmp else: _eip = eip break
if __name__ == '__main__': bb = [0, 6, 12, 17, 22, 28, 32, 38, 44, 48, 54, 60, 66, 72, 78, 83] for i in range(15): mid = judge(bb[i], i)
|