Merge branch 'stored_obfuscated_files'

This commit is contained in:
Connor Tumbleson 2022-11-08 06:24:49 -05:00
commit 273842279a
No known key found for this signature in database
GPG Key ID: C3CC0A201EC7DA75
3 changed files with 20 additions and 8 deletions

View File

@ -177,16 +177,19 @@ public class Androlib {
for (String file : files) {
if (isAPKFileNames(file) && unk.getCompressionLevel(file) == 0) {
String ext = "";
String extOrFile = "";
if (unk.getSize(file) != 0) {
ext = FilenameUtils.getExtension(file);
extOrFile = FilenameUtils.getExtension(file);
}
if (ext.isEmpty() || !NO_COMPRESS_PATTERN.matcher(ext).find()) {
ext = file;
if (extOrFile.isEmpty() || !NO_COMPRESS_PATTERN.matcher(extOrFile).find()) {
extOrFile = file;
if (mAndRes.mResFileMapping.containsKey(extOrFile)) {
extOrFile = mAndRes.mResFileMapping.get(extOrFile);
}
}
if (!uncompressedFilesOrExts.contains(ext)) {
uncompressedFilesOrExts.add(ext);
if (!uncompressedFilesOrExts.contains(extOrFile)) {
uncompressedFilesOrExts.add(extOrFile);
}
}
}

View File

@ -247,7 +247,7 @@ final public class AndrolibResources {
LOGGER.info("Decoding file-resources...");
for (ResResource res : pkg.listFiles()) {
fileDecoder.decode(res, in, out);
fileDecoder.decode(res, in, out, mResFileMapping);
}
LOGGER.info("Decoding values */* XMLs...");
@ -1046,6 +1046,8 @@ final public class AndrolibResources {
public BuildOptions buildOptions;
public Map<String, String> mResFileMapping = new HashMap();
// TODO: dirty static hack. I have to refactor decoding mechanisms.
public static boolean sKeepBroken = false;

View File

@ -27,6 +27,7 @@ import brut.directory.Directory;
import brut.directory.DirectoryException;
import java.io.*;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
@ -37,10 +38,11 @@ public class ResFileDecoder {
this.mDecoders = decoders;
}
public void decode(ResResource res, Directory inDir, Directory outDir)
public void decode(ResResource res, Directory inDir, Directory outDir, Map<String, String> resFileMapping)
throws AndrolibException {
ResFileValue fileValue = (ResFileValue) res.getValue();
String inFilePath = fileValue.toString();
String inFileName = fileValue.getStrippedPath();
String outResName = res.getFilePath();
String typeName = res.getResSpec().getType().getName();
@ -55,6 +57,11 @@ public class ResFileDecoder {
outFileName = outResName + ext;
}
String outFilePath = "res/" + outFileName;
if (!inFilePath.equals(outFilePath)) {
resFileMapping.put(inFilePath, outFilePath);
}
try {
if (typeName.equals("raw")) {
decode(inDir, inFileName, outDir, outFileName, "raw");