ArrayList<? extends BuilderInstruction> mInstructionsList = Lists.newArrayList(mMethodImplementation.getInstructions());
mInstructionsList.forEach((Consumer<BuilderInstruction>) instruction -> {
if (instruction instanceof BuilderInstruction21c && instruction.getOpcode().equals(Opcode.SGET)) {
int firstMathCrap = mInstructionsList.indexOf(instruction);
for (int currentIndex = firstMathCrap; currentIndex < mInstructionsList.size(); currentIndex++) {
BuilderInstruction mInstr = mInstructionsList.get(currentIndex);
if (mInstr.getOpcode().equals(Opcode.SPUT)
&& isRemInt(mInstructionsList.get(currentIndex + 1).getOpcode())
&& isBranchStatement(mInstructionsList.get(currentIndex + 2).getOpcode())) {
// if the current instruction is the sput, it is followed by a rem-int and a if-*, both are parts of the math obfuscation
int lastMathCrap = currentIndex + 2;
// create a sub-list of the instructions
ArrayList<BuilderInstruction> mRelevantInstructions = Lists.newArrayList(mInstructionsList.subList(firstMathCrap, currentIndex + 2));
// determine the relevant jump register
int relevantJumpRegister = ((OneRegisterInstruction) mRelevantInstructions.get(mRelevantInstructions.size() - 1)).getRegisterA();
InstructionCrap mInstructionCrap = new InstructionCrap(firstMathCrap, lastMathCrap, relevantJumpRegister, mRelevantInstructions );
mMathCraps.add(mInstructionCrap);
break;
}
}
}
});
}
Древние мыслители поговаривали, что на pastebin читаемость лучше
Свят свят свят. Не буду вникать, мозг жалко
Венгерскую нотацию увидел?)
Мне понравилось слово MathCrap в имени метода
https://pastebin.com/fjnct100
В build.gradle targetJVMVersion писал?
Обсуждают сегодня