(self)
| 80 | |
| 81 | # Backdoor: .text random |
| 82 | def get_random_code_carrier_rva(self) -> int: |
| 83 | complete_size = len(self.carrier_shc) |
| 84 | largest_gap = self.code_manager.find_holes(complete_size) |
| 85 | if len(largest_gap) == 0: |
| 86 | raise Exception('No hole found in code section to fit payload!') |
| 87 | largest_gap_size = largest_gap[0][1] - largest_gap[0][0] |
| 88 | offset = int((largest_gap_size - complete_size) / 2) # centered in the .text section |
| 89 | offset += largest_gap[0][0] |
| 90 | carrier_rva = self.superpe.get_code_section().VirtualAddress + offset |
| 91 | return carrier_rva |
| 92 | |
| 93 | |
| 94 | # Backdoor: .text random |
no test coverage detected