推荐肉丝r0ysue课程(包含安卓逆向与js逆向):
Jeb打开
将编辑框内的内容经过Base64New().Base64Encode
方法后与"5rFf7E2K6rqN7Hpiyush7E6S5fJg6rsi5NBf6NGT5rs="
进行比较
查看Base64New().Base64Encode
提取到自定义字符表vwxrstuopq34567ABCDEFGHIJyz012PQRSTKLMNOZabcdUVWXYefghijklmn89+/=
通过CyberChef_v9.21.0.html#recipe=From_Base64('vwxrstuopq34567ABCDEFGHIJyz012PQRSTKLMNOZabcdUVWXYefghijklmn89%2B/%3D',true)&input=NXJGZjdFMks2cnFON0hwaXl1c2g3RTZTNWZKZzZyc2k1TkJmNk5HVDVycz0
得到flag为
flag{05397c42f9b6da593a3644162d36eb01}
凑字数
public class LinuxFileSystem extends BaseFileSystem<AndroidFileIO> implements FileSystem<AndroidFileIO>, IOConstants {
public LinuxFileSystem(Emulator<AndroidFileIO> emulator, File rootDir) {
super(emulator, rootDir);
}
@Override
public FileResult<AndroidFileIO> open(String pathname, int oflags) {
if ("/dev/tty".equals(pathname)) {
return FileResult.<AndroidFileIO>success(new NullFileIO(pathname));
}
if ("/proc/self/maps".equals(pathname) || ("/proc/" + emulator.getPid() + "/maps").equals(pathname)) {
return FileResult.<AndroidFileIO>success(new MapsFileIO(oflags, pathname, emulator.getMemory().getLoadedModules()));
}
return super.open(pathname, oflags);
}
public LogCatHandler getLogCatHandler() {
return null;
}
@Override
protected void initialize(File rootDir) throws IOException {
super.initialize(rootDir);
FileUtils.forceMkdir(new File(rootDir, "system"));
FileUtils.forceMkdir(new File(rootDir, "data"));
}
@Override
public AndroidFileIO createSimpleFileIO(File file, int oflags, String path) {
return new SimpleFileIO(oflags, file, path);
}
@Override
public AndroidFileIO createDirectoryFileIO(File file, int oflags, String path) {
return new DirectoryFileIO(oflags, path, file);
}
@Override
protected AndroidFileIO createStdin(int oflags) {
return new Stdin(oflags);
}
@Override
protected AndroidFileIO createStdout(int oflags, File stdio, String pathname) {
return new Stdout(oflags, stdio, pathname, IO.STDERR.equals(pathname), null);
}
@Override
protected boolean hasCreat(int oflags) {
return (oflags & O_CREAT) != 0;
}
@Override
protected boolean hasDirectory(int oflags) {
return (oflags & O_DIRECTORY) != 0;
}
@Override
protected boolean hasAppend(int oflags) {
return (oflags & O_APPEND) != 0;
}
@Override
protected boolean hasExcl(int oflags) {
return (oflags & O_EXCL) != 0;
}
}
public abstract class BackendFactory {
private final boolean fallbackUnicorn;
protected BackendFactory(boolean fallbackUnicorn) {
this.fallbackUnicorn = fallbackUnicorn;
}
private Backend newBackend(Emulator<?> emulator, boolean is64Bit) {
try {
return newBackendInternal(emulator, is64Bit);
} catch (Throwable e) {
if (fallbackUnicorn) {
return null;
} else {
throw e;
}
}
}
protected abstract Backend newBackendInternal(Emulator<?> emulator, boolean is64Bit);
public static Backend createBackend(Emulator<?> emulator, boolean is64Bit, Collection<BackendFactory> backendFactories) {
if (backendFactories != null) {
for (BackendFactory factory : backendFactories) {
Backend backend = factory.newBackend(emulator, is64Bit);
if (backend != null) {
return backend;
}
}
}
return new UnicornBackend(emulator, is64Bit);
}
}