CrackMe.apk
Download file
package org.apache.commons.io.serialization;
import java.io.IOException;
import java.io.InputStream;
import java.io.InvalidClassException;
import java.io.ObjectInputStream;
import java.io.ObjectStreamClass;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.regex.Pattern;
public class ValidatingObjectInputStream extends ObjectInputStream {
private final List<ClassNameMatcher> acceptMatchers = new ArrayList();
private final List<ClassNameMatcher> rejectMatchers = new ArrayList();
public ValidatingObjectInputStream(InputStream inputStream) throws IOException {
super(inputStream);
}
private void validateClassName(String str) throws InvalidClassException {
for (ClassNameMatcher matches : this.rejectMatchers) {
if (matches.matches(str)) {
invalidClassNameFound(str);
}
}
boolean z = false;
Iterator<ClassNameMatcher> it = this.acceptMatchers.iterator();
while (true) {
if (it.hasNext()) {
if (it.next().matches(str)) {
z = true;
break;
}
} else {
break;
}
}
if (!z) {
invalidClassNameFound(str);
}
}
/* access modifiers changed from: protected */
public void invalidClassNameFound(String str) throws InvalidClassException {
throw new InvalidClassException("Class name not accepted: " + str);
}
/* access modifiers changed from: protected */
public Class<?> resolveClass(ObjectStreamClass objectStreamClass) throws IOException, ClassNotFoundException {
validateClassName(objectStreamClass.getName());
return super.resolveClass(objectStreamClass);
}
public ValidatingObjectInputStream accept(Class<?>... clsArr) {
for (Class<?> name : clsArr) {
this.acceptMatchers.add(new FullClassNameMatcher(name.getName()));
}
return this;
}
public ValidatingObjectInputStream reject(Class<?>... clsArr) {
for (Class<?> name : clsArr) {
this.rejectMatchers.add(new FullClassNameMatcher(name.getName()));
}
return this;
}
public ValidatingObjectInputStream accept(String... strArr) {
for (String wildcardClassNameMatcher : strArr) {
this.acceptMatchers.add(new WildcardClassNameMatcher(wildcardClassNameMatcher));
}
return this;
}
public ValidatingObjectInputStream reject(String... strArr) {
for (String wildcardClassNameMatcher : strArr) {
this.rejectMatchers.add(new WildcardClassNameMatcher(wildcardClassNameMatcher));
}
return this;
}
public ValidatingObjectInputStream accept(Pattern pattern) {
this.acceptMatchers.add(new RegexpClassNameMatcher(pattern));
return this;
}
public ValidatingObjectInputStream reject(Pattern pattern) {
this.rejectMatchers.add(new RegexpClassNameMatcher(pattern));
return this;
}
public ValidatingObjectInputStream accept(ClassNameMatcher classNameMatcher) {
this.acceptMatchers.add(classNameMatcher);
return this;
}
public ValidatingObjectInputStream reject(ClassNameMatcher classNameMatcher) {
this.rejectMatchers.add(classNameMatcher);
return this;
}
}
Download file