Extract Module

apkInspector.extract.extract_all_files_from_central_directory(apk_file, central_directory_entries, local_header_entries, output_dir)

Extracts all files from an APK based on the entries detected in the central_directory_entries.

Parameters:
  • apk_file (bytesIO) – The APK file e.g. with open(‘test.apk’, ‘rb’) as apk_file

  • central_directory_entries (dict) – The dictionary with all the entries for the central directory

  • local_header_entries (dict) – The dictionary with all the local header entries

  • output_dir (str) – The output directory where to save the files.

Returns:

Returns 0 if no errors, 1 if an exception and 2 if the output directory already exists

Return type:

int

apkInspector.extract.extract_file_based_on_header_info(apk_file, local_header_info, central_directory_info)

Extracts a single file from the apk_file based on the information provided from the offset and the header_info. It takes into account that the compression method provided might not be STORED or DEFLATED! The returned ‘indicator’, shows what compression method was used. Besides the standard STORED/DEFLATE it may return ‘DEFLATED_TAMPERED’, which means that the compression method found was not DEFLATED(8) but it should have been, and ‘STORED_TAMPERED’ which means that the compression method found was not STORED(0) but should have been.

Parameters:
  • apk_file (bytesIO) – The APK file e.g. with open(‘test.apk’, ‘rb’) as apk_file

  • local_header_info (dict) – The local header dictionary info for that specific filename

  • central_directory_info (dict) – The central directory entry for that specific filename

Returns:

Returns the actual extracted data for that file along with an indication of whether a static analysis evasion technique was used or not.

Return type:

set(bytes, str)