class Rex::MachScan::Scanner::RegexScanner
Public Instance Methods
config(param)
click to toggle source
# File lib/rex/machscan/scanner.rb, line 182 def config(param) self.regex = Regexp.new(param['args'], nil, 'n') end
scan_segment(segment, param={})
click to toggle source
# File lib/rex/machscan/scanner.rb, line 186 def scan_segment(segment, param={}) base_addr = segment.vmaddr segment_offset = segment.fileoff offset = segment_offset hits = [] while offset < segment.fileoff + segment.filesize && (offset = mach.index(regex, offset)) != nil idx = offset buf = '' mat = nil while (! (mat = buf.match(regex))) buf << mach.read(idx, 1) idx += 1 end vaddr = base_addr + (offset - segment_offset) hits << [ vaddr, buf.unpack("H*") ] offset += buf.length end return hits end