Interface IGenericUnpacker
public interface IGenericUnpacker
Interface for a simple Android APK unpacker that will attempt to gather resources extracted at
runtime. An unpacker may be created via an
apk unit
or a
dex decompiler unit
.-
Method Summary
Modifier and TypeMethodDescriptionvoid
Start the unpacking process.formatMonitorReport
(int formatType) Retrieve the unpacking report generated by the monitor (if the monitor was enabled before unpacking).Create or retrieve the emulator that will perform the unpacking task.This method can be used to retrieve the sha256 hashes of the dex files that were collected by the emulator during unpacking.This method can be used to retrieve the sha256 hashes of the native library (so) files that were collected by the emulator during unpacking.void
setIntegrateRecoveredDexFiles
(boolean integrateRecoveredDexFiles) Determine whether the unpacked dex files should beintegrated into the primary Dex unit
, to allow their use during emulation.void
setMaxExecutionTime
(long maxExecutionTime) Convenience method to set the maximum emulation time forunpacking
.void
setMonitorEvents
(boolean monitorEvents) Enable or disable the events monitor.void
setUseRecoveredSoFiles
(boolean useRecoveredSoFiles) Determine whether the unpacked native library (so) files should be analyzed and used during emulation.boolean
This heuristic may be called to determine whetherattemptUnpack()
has a chance of success.void
teardown()
This method should be called after a call toattemptUnpack()
, when the unpacker and its underlying resources are no longer needed.
-
Method Details
-
shouldAttemptUnpack
boolean shouldAttemptUnpack()This heuristic may be called to determine whetherattemptUnpack()
has a chance of success. The result of this method should be considered a very loose indicator. If this method is to be used, for better performance, it should be invoked before any other method of this interface.- Returns:
-
getEmulatedAndroid
IEmulatedAndroid getEmulatedAndroid()Create or retrieve the emulator that will perform the unpacking task. This method may be called beforeattemptUnpack()
to customize the emulator components, or after to retrieve fine-grained emulation results.- Returns:
-
setMaxExecutionTime
void setMaxExecutionTime(long maxExecutionTime) Convenience method to set the maximum emulation time forunpacking
. This method redirects toIDState.setMaxDuration(long)
.- Parameters:
maxExecutionTime
- a time in ms
-
setMonitorEvents
void setMonitorEvents(boolean monitorEvents) Enable or disable the events monitor. If the monitor is enabled, a report may be collected after the unpacking process.- Parameters:
monitorEvents
-
-
setIntegrateRecoveredDexFiles
void setIntegrateRecoveredDexFiles(boolean integrateRecoveredDexFiles) Determine whether the unpacked dex files should beintegrated into the primary Dex unit
, to allow their use during emulation.- Parameters:
integrateRecoveredDexFiles
-
-
setUseRecoveredSoFiles
void setUseRecoveredSoFiles(boolean useRecoveredSoFiles) Determine whether the unpacked native library (so) files should be analyzed and used during emulation.- Parameters:
useRecoveredSoFiles
-
-
getRecoveredDexHashes
Collection<String> getRecoveredDexHashes()This method can be used to retrieve the sha256 hashes of the dex files that were collected by the emulator during unpacking. Note that additional dex units are created as well, as children of the 'unpacked' container unit.- Returns:
- a collection of sha256 hashes of the recovered dex files
-
getRecoveredSoHashes
Collection<String> getRecoveredSoHashes()This method can be used to retrieve the sha256 hashes of the native library (so) files that were collected by the emulator during unpacking. Note that additional native units are created as well, as children of the 'unpacked' container unit.- Returns:
- a collection of sha256 hashes of the recovered so files
-
attemptUnpack
Start the unpacking process. This method should be called only once. Customization or results retrieval can be done viagetEmulatedAndroid()
and#getRecoveredDexFileHashes()
.- Throws:
DexDecEvaluationException
-
formatMonitorReport
Retrieve the unpacking report generated by the monitor (if the monitor was enabled before unpacking).- Parameters:
formatType
- 0=standard report; 1=short report; 2=detailed report- Returns:
- the formatted report
-
teardown
void teardown()This method should be called after a call toattemptUnpack()
, when the unpacker and its underlying resources are no longer needed.
-