(self)
| 61 | |
| 62 | # Backdoor: .rdata random |
| 63 | def get_random_data_payload_rva(self) -> int: |
| 64 | complete_size = len(self.payload.payload_data) |
| 65 | largest_gap = self.rdata_manager.find_holes(complete_size) |
| 66 | if len(largest_gap) == 0: |
| 67 | raise Exception('No hole found in code section to fit payload!') |
| 68 | largest_gap_size = largest_gap[0][1] - largest_gap[0][0] |
| 69 | offset = largest_gap[0][0] |
| 70 | |
| 71 | rdata_section = self.superpe.get_section_by_name(".rdata") |
| 72 | if rdata_section == None: |
| 73 | raise Exception("No .rdata section found in PE file") |
| 74 | self.rdata_manager.add_range(offset, offset+len(self.payload.payload_data)) |
| 75 | |
| 76 | payload_rva = rdata_section.virt_addr + offset |
| 77 | #self.payload_rva = payload_rva |
| 78 | return payload_rva |
| 79 | |
| 80 | |
| 81 | # Backdoor: .text random |
no test coverage detected