Деобфускация строк Java ⇐ Android
-
Anonymous
Деобфускация строк Java
Я новичок в Java и надеялся, что кто-нибудь поможет мне объяснить проблему. Я слежу за этой публикацией в блоге, в которой рассказывается о реверс-инжиниринге вредоносного APK-файла Android.
В декомпилированном коде Java есть метод запутывания строк, который встречается в коде тысячи раз:
частная статическая строка $(int i, int i2, int i3) { char[] cArr = новый char[i2 - i]; for (int i4 = 0; i4 < i2 - i; i4++) { cArr[i4] = (char) ($[i + i4] ^ i3); } вернуть новую строку (cArr); } Также в коде есть вызовы, использующие этот метод, например $(556, 664, 4277)
У меня возникли проблемы с деобфускацией строки. Я знаю, что могу определить локальную переменную и использовать ее для распечатки декодированной строки, но я не уверен, как это будет выглядеть в Java. Может ли кто-нибудь привести пример того, как это будет выглядеть?
Я уверен, что мои попытки неверны. Теперь у меня есть мотивация изучить Java, но мне бы очень хотелось понять, что я делаю не так:
public static String $(int i, int i2, int i3) { char[] cArr = новый char[i2 - i]; for (int i4 = 0; i4 < i2 - i; i4++) { cArr[i4] = (char) ($[i + i4] ^ i3); } вернуть новую строку (cArr); } вар obfuscatedString = $(556, 664, 4277); System.out.println(obfuscatedString);
Я новичок в Java и надеялся, что кто-нибудь поможет мне объяснить проблему. Я слежу за этой публикацией в блоге, в которой рассказывается о реверс-инжиниринге вредоносного APK-файла Android.
В декомпилированном коде Java есть метод запутывания строк, который встречается в коде тысячи раз:
частная статическая строка $(int i, int i2, int i3) { char[] cArr = новый char[i2 - i]; for (int i4 = 0; i4 < i2 - i; i4++) { cArr[i4] = (char) ($[i + i4] ^ i3); } вернуть новую строку (cArr); } Также в коде есть вызовы, использующие этот метод, например $(556, 664, 4277)
У меня возникли проблемы с деобфускацией строки. Я знаю, что могу определить локальную переменную и использовать ее для распечатки декодированной строки, но я не уверен, как это будет выглядеть в Java. Может ли кто-нибудь привести пример того, как это будет выглядеть?
Я уверен, что мои попытки неверны. Теперь у меня есть мотивация изучить Java, но мне бы очень хотелось понять, что я делаю не так:
public static String $(int i, int i2, int i3) { char[] cArr = новый char[i2 - i]; for (int i4 = 0; i4 < i2 - i; i4++) { cArr[i4] = (char) ($[i + i4] ^ i3); } вернуть новую строку (cArr); } вар obfuscatedString = $(556, 664, 4277); System.out.println(obfuscatedString);
Мобильная версия