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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
| basic_blocks = [ {'basicBlockAddr' : 0x43CC4, 'nextCaseVal' : 0x452944A5}, {'basicBlockAddr' : 0x43D3C, 'nextCaseVal' : 0x35F42CE9}, {'basicBlockAddr' : 0x43D9C, 'nextCaseVal' : 0xB22FA3D0}, {'basicBlockAddr' : 0x43DFC, 'nextCaseVal' : 0x78E716D8}, {'basicBlockAddr' : 0x43E4C, 'nextCaseVal' : 0x1C536006}, {'basicBlockAddr' : 0x43E9C, 'nextCaseVal' : 0x43F23AAF}, {'basicBlockAddr' : 0x43EF8, 'nextCaseVal' : 0x22DF66B8}, {'basicBlockAddr' : 0x43F34, 'nextCaseVal' : 0x3D42BA4E}, {'basicBlockAddr' : 0x43F64, 'nextCaseVal' : 0x93A75DE8}, {'basicBlockAddr' : 0x43FAC, 'nextCaseVal' : 0xB50E4CF3}, {'basicBlockAddr' : 0x43FDC, 'nextCaseVal' : 0x1C536006}, {'basicBlockAddr' : 0x44058, 'nextCaseVal' : 0xECEBC62F}, {'basicBlockAddr' : 0x440CC, 'nextCaseVal' : 0x78E716D8}, {'basicBlockAddr' : 0x44118, 'nextCaseVal' : 0xD721AE9D}, {'basicBlockAddr' : 0x44128, 'nextCaseVal' : 0x4CF7C786}, {'basicBlockAddr' : 0x44148, 'nextCaseVal' : 0xB22FA3D0}, {'basicBlockAddr' : 0x44158, 'nextCaseVal' : 0x93A75DE8}, {'basicBlockAddr' : 0x44164, 'nextCaseVal' : 0xBBBE05E4}, {'basicBlockAddr' : 0x44174, 'nextCaseVal' : 0x43F23AAF}, {'basicBlockAddr' : 0x44180, 'nextCaseVal' : 0x8ECCC728}, {'basicBlockAddr' : 0x441DC, 'nextCaseVal' : 0x43EDB2A0}, {'basicBlockAddr' : 0x441E8, 'nextCaseVal' : 0xB62C5792}, {'basicBlockAddr' : 0x441F4, 'nextCaseVal' : 0xCA9DBB1F}, {'basicBlockAddr' : 0x44298, 'nextCaseVal' : 0x4B62C933}, {'basicBlockAddr' : 0x442BC, 'nextCaseVal' : 0xBE873E04}, {'basicBlockAddr' : 0x442D8, 'nextCaseVal' : 0x2F804C20}, {'basicBlockAddr' : 0x44334, 'nextCaseVal' : 0xEFEBCA04}, {'basicBlockAddr' : 0x44350, 'nextCaseVal' : 0x97F01E89}, ]
dispatch_blocks = [ {'addr' : 0x43C38, 'caseVal' : 0xF8D34333, 'cond' : 'B.LE', 'eq_jmp' : 0x43CC8, 'other_jmp' : 0x43C48, 'real_case' : 0x0}, {'addr' : 0x43C48, 'caseVal' : 0x3D42BA4D, 'cond' : 'B.GT', 'eq_jmp' : 0x43D40, 'other_jmp' : 0x43C58, 'real_case' : 0x0}, {'addr' : 0x43C58, 'caseVal' : 0x22DF66B7, 'cond' : 'B.GT', 'eq_jmp' : 0x43E50, 'other_jmp' : 0x43C68, 'real_case' : 0x0}, {'addr' : 0x43C68, 'caseVal' : 0x17F41D4, 'cond' : 'B.LE', 'eq_jmp' : 0x43FE0, 'other_jmp' : 0x43C78, 'real_case' : 0x0}, {'addr' : 0x43C78, 'caseVal' : 0x17F41D5, 'cond' : 'B.EQ', 'eq_jmp' : 0x43C34, 'other_jmp' : 0x43C90, 'real_case' : 0xFF680FE2}, {'addr' : 0x43C90, 'caseVal' : 0x1B0C631C, 'cond' : 'B.EQ', 'eq_jmp' : 0x43C34, 'other_jmp' : 0x43CA8, 'real_case' : 0x35F42CE9}, {'addr' : 0x43CA8, 'caseVal' : 0x1C536006, 'cond' : 'B.NE', 'eq_jmp' : 0x43C34, 'other_jmp' : 0x43CBC, 'real_case' : 0x89}, {'addr' : 0x43CC8, 'caseVal' : 0xC105D5A4, 'cond' : 'B.LE', 'eq_jmp' : 0x43DA0, 'other_jmp' : 0x43CD8, 'real_case' : 0x0}, {'addr' : 0x43CD8, 'caseVal' : 0xECEBC62E, 'cond' : 'B.GT', 'eq_jmp' : 0x43E00, 'other_jmp' : 0x43CE8, 'real_case' : 0x0}, {'addr' : 0x43CE8, 'caseVal' : 0xCA9DBB1E, 'cond' : 'B.LE', 'eq_jmp' : 0x43F68, 'other_jmp' : 0x43CF8, 'real_case' : 0x0}, {'addr' : 0x43CF8, 'caseVal' : 0xCA9DBB1F, 'cond' : 'B.EQ', 'eq_jmp' : 0x43C34, 'other_jmp' : 0x43D10, 'real_case' : 0xB50E4CF3}, {'addr' : 0x43D10, 'caseVal' : 0xD721AE9D, 'cond' : 'B.EQ', 'eq_jmp' : 0x442D0, 'other_jmp' : 0x43D20, 'real_case' : 0x0}, {'addr' : 0x43D20, 'caseVal' : 0xE4648FAD, 'cond' : 'B.NE', 'eq_jmp' : 0x43C34, 'other_jmp' : 0x43D34, 'real_case' : 0x89}, {'addr' : 0x43D40, 'caseVal' : 0x4CF7C785, 'cond' : 'B.GT', 'eq_jmp' : 0x43EA0, 'other_jmp' : 0x43D50, 'real_case' : 0x0}, {'addr' : 0x43D50, 'caseVal' : 0x43F23AAE, 'cond' : 'B.LE', 'eq_jmp' : 0x44020, 'other_jmp' : 0x43D60, 'real_case' : 0x0}, {'addr' : 0x43D60, 'caseVal' : 0x43F23AAF, 'cond' : 'B.EQ', 'eq_jmp' : 0x441E0, 'other_jmp' : 0x43D70, 'real_case' : 0x0}, {'addr' : 0x43D70, 'caseVal' : 0x452944A5, 'cond' : 'B.EQ', 'eq_jmp' : 0x44338, 'other_jmp' : 0x43D80, 'real_case' : 0x0}, {'addr' : 0x43D80, 'caseVal' : 0x4B62C933, 'cond' : 'B.NE', 'eq_jmp' : 0x43C34, 'other_jmp' : 0x43D94, 'real_case' : 0x89}, {'addr' : 0x43DA0, 'caseVal' : 0xB22FA3CF, 'cond' : 'B.GT', 'eq_jmp' : 0x43EFC, 'other_jmp' : 0x43DB0, 'real_case' : 0x0}, {'addr' : 0x43DB0, 'caseVal' : 0x93A75DE7, 'cond' : 'B.LE', 'eq_jmp' : 0x43F38, 'other_jmp' : 0x43DC0, 'real_case' : 0x0}, {'addr' : 0x43DC0, 'caseVal' : 0x93A75DE8, 'cond' : 'B.EQ', 'eq_jmp' : 0x44178, 'other_jmp' : 0x43DD0, 'real_case' : 0x0}, {'addr' : 0x43DD0, 'caseVal' : 0x97F01E89, 'cond' : 'B.EQ', 'eq_jmp' : 0x442C0, 'other_jmp' : 0x43DE0, 'real_case' : 0x0}, {'addr' : 0x43DE0, 'caseVal' : 0x9A4F670B, 'cond' : 'B.NE', 'eq_jmp' : 0x43C34, 'other_jmp' : 0x43DF4, 'real_case' : 0x89}, {'addr' : 0x43E00, 'caseVal' : 0xEFEBCA03, 'cond' : 'B.LE', 'eq_jmp' : 0x43FB0, 'other_jmp' : 0x43E10, 'real_case' : 0x0}, {'addr' : 0x43E10, 'caseVal' : 0xEFEBCA04, 'cond' : 'B.EQ', 'eq_jmp' : 0x44184, 'other_jmp' : 0x43E20, 'real_case' : 0x0}, {'addr' : 0x43E20, 'caseVal' : 0xF1508DA1, 'cond' : 'B.EQ', 'eq_jmp' : 0x442DC, 'other_jmp' : 0x43E30, 'real_case' : 0x0}, {'addr' : 0x43E30, 'caseVal' : 0xF50BDBE9, 'cond' : 'B.NE', 'eq_jmp' : 0x43C34, 'other_jmp' : 0x43E44, 'real_case' : 0x89}, {'addr' : 0x43E50, 'caseVal' : 0x34D451D4, 'cond' : 'B.LE', 'eq_jmp' : 0x4405C, 'other_jmp' : 0x43E60, 'real_case' : 0x0}, {'addr' : 0x43E60, 'caseVal' : 0x34D451D5, 'cond' : 'B.EQ', 'eq_jmp' : 0x441EC, 'other_jmp' : 0x43E70, 'real_case' : 0x0}, {'addr' : 0x43E70, 'caseVal' : 0x35F42CE9, 'cond' : 'B.EQ', 'eq_jmp' : 0x44348, 'other_jmp' : 0x43E80, 'real_case' : 0x0}, {'addr' : 0x43E80, 'caseVal' : 0x3BC74C43, 'cond' : 'B.NE', 'eq_jmp' : 0x43C34, 'other_jmp' : 0x43E94, 'real_case' : 0x89}, {'addr' : 0x43EA0, 'caseVal' : 0x5C511C12, 'cond' : 'B.LE', 'eq_jmp' : 0x440A0, 'other_jmp' : 0x43EB0, 'real_case' : 0x0}, {'addr' : 0x43EB0, 'caseVal' : 0x5C511C13, 'cond' : 'B.EQ', 'eq_jmp' : 0x441F8, 'other_jmp' : 0x43EC0, 'real_case' : 0x0}, {'addr' : 0x43EC0, 'caseVal' : 0x72910E37, 'cond' : 'B.EQ', 'eq_jmp' : 0x44354, 'other_jmp' : 0x43ED0, 'real_case' : 0x0}, {'addr' : 0x43ED0, 'caseVal' : 0x78E716D8, 'cond' : 'B.NE', 'eq_jmp' : 0x43C34, 'other_jmp' : 0x43EE4, 'real_case' : 0x89}, {'addr' : 0x43EFC, 'caseVal' : 0xB62C5791, 'cond' : 'B.LE', 'eq_jmp' : 0x440D0, 'other_jmp' : 0x43F0C, 'real_case' : 0x0}, {'addr' : 0x43F0C, 'caseVal' : 0xBBBE05E4, 'cond' : 'B.EQ', 'eq_jmp' : 0x43C04, 'other_jmp' : 0x43F1C, 'real_case' : 0x0}, {'addr' : 0x43F1C, 'caseVal' : 0xBE873E04, 'cond' : 'B.NE', 'eq_jmp' : 0x44388, 'other_jmp' : 0x43F2C, 'real_case' : 0x0}, {'addr' : 0x43F38, 'caseVal' : 0x8ECCC728, 'cond' : 'B.EQ', 'eq_jmp' : 0x4411C, 'other_jmp' : 0x43F48, 'real_case' : 0x0}, {'addr' : 0x43F48, 'caseVal' : 0x913BCE29, 'cond' : 'B.NE', 'eq_jmp' : 0x43C34, 'other_jmp' : 0x43F5C, 'real_case' : 0x89}, {'addr' : 0x43F68, 'caseVal' : 0xC105D5A5, 'cond' : 'B.EQ', 'eq_jmp' : 0x4412C, 'other_jmp' : 0x43F78, 'real_case' : 0x0}, {'addr' : 0x43F78, 'caseVal' : 0xC3C03B1F, 'cond' : 'B.NE', 'eq_jmp' : 0x43C34, 'other_jmp' : 0x43F8C, 'real_case' : 0x89}, {'addr' : 0x43FB0, 'caseVal' : 0xECEBC62F, 'cond' : 'B.EQ', 'eq_jmp' : 0x4414C, 'other_jmp' : 0x43FC0, 'real_case' : 0x0}, {'addr' : 0x43FC0, 'caseVal' : 0xEE5D4D0B, 'cond' : 'B.NE', 'eq_jmp' : 0x43C34, 'other_jmp' : 0x43FD4, 'real_case' : 0x89}, {'addr' : 0x43FE0, 'caseVal' : 0xF8D34334, 'cond' : 'B.EQ', 'eq_jmp' : 0x43C34, 'other_jmp' : 0x43FF8, 'real_case' : 0xFF680FE2}, {'addr' : 0x43FF8, 'caseVal' : 0xFF680FE2, 'cond' : 'B.NE', 'eq_jmp' : 0x43C34, 'other_jmp' : 0x4400C, 'real_case' : 0x89}, {'addr' : 0x44020, 'caseVal' : 0x3D42BA4E, 'cond' : 'B.EQ', 'eq_jmp' : 0x43C34, 'other_jmp' : 0x44038, 'real_case' : 0xEFEBCA04}, {'addr' : 0x44038, 'caseVal' : 0x43EDB2A0, 'cond' : 'B.NE', 'eq_jmp' : 0x43C34, 'other_jmp' : 0x4404C, 'real_case' : 0x89}, {'addr' : 0x4405C, 'caseVal' : 0x22DF66B8, 'cond' : 'B.EQ', 'eq_jmp' : 0x4415C, 'other_jmp' : 0x4406C, 'real_case' : 0x0}, {'addr' : 0x4406C, 'caseVal' : 0x2F804C20, 'cond' : 'B.NE', 'eq_jmp' : 0x43C34, 'other_jmp' : 0x44080, 'real_case' : 0x89}, {'addr' : 0x440A0, 'caseVal' : 0x4CF7C786, 'cond' : 'B.EQ', 'eq_jmp' : 0x44168, 'other_jmp' : 0x440B0, 'real_case' : 0x0}, {'addr' : 0x440B0, 'caseVal' : 0x4E7CBDE0, 'cond' : 'B.NE', 'eq_jmp' : 0x43C34, 'other_jmp' : 0x440C4, 'real_case' : 0x89}, {'addr' : 0x440D0, 'caseVal' : 0xB22FA3D0, 'cond' : 'B.EQ', 'eq_jmp' : 0x4429C, 'other_jmp' : 0x440E0, 'real_case' : 0x0}, {'addr' : 0x440E0, 'caseVal' : 0xB50E4CF3, 'cond' : 'B.NE', 'eq_jmp' : 0x43C34, 'other_jmp' : 0x440F4, 'real_case' : 0x89}, {'addr' : 0x44388, 'caseVal' : 0xB62C5792, 'cond' : 'B.NE', 'eq_jmp' : 0x43C34, 'other_jmp' : 0x4439C, 'real_case' : 0x89}, ]
for basic_block in basic_blocks: nextCaseVal = basic_block.get("nextCaseVal") for dispatch_block in dispatch_blocks: caseVal = dispatch_block.get("caseVal") if caseVal == nextCaseVal: cond = dispatch_block.get("cond") realCaseVal =dispatch_block.get("real_case") if realCaseVal != 0 and realCaseVal != 0x89: nextCaseVal = realCaseVal for dispatch_block in dispatch_blocks: caseVal = dispatch_block.get("caseVal") if caseVal == nextCaseVal: cond = dispatch_block.get("cond") if cond == "B.NE": branch = dispatch_block.get("other_jmp") if cond == "B.EQ": branch = dispatch_block.get("eq_jmp") else: if cond == "B.NE": branch = dispatch_block.get("other_jmp") if cond == "B.EQ": branch = dispatch_block.get("eq_jmp") print(f"jmp {hex(basic_block.get("basicBlockAddr"))} -> {hex(branch)}")
|