Method: AppInfo::PE#binary_file

Defined in:
lib/app_info/pe.rb

#binary_fileString

Returns binary_file path.

Returns:

  • (String)

    binary_file path



189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
# File 'lib/app_info/pe.rb', line 189

def binary_file
  @binary_file ||= lambda {
    file_io = ::File.open(@file, 'rb')
    return @file unless file_io.read(100) =~ Helper::FileTypeDetection::ZIP_RETGEX

    zip_file = Zip::File.open(@file)
    zip_entry = zip_file.glob('*.exe').first
    raise NotFoundError, 'Not found .exe file in archive file' if zip_entry.nil?

    exe_file = tempdir(zip_entry.name, prefix: 'pe-exe', system: true)
    zip_entry.extract(exe_file)
    zip_file.close

    exe_file
  }.call
end