Как я могу отредактировать classes.dex для записи в /system, используя уязвимость Janus?

Я пытаюсь записать в систему, используя уязвимость Janus, и у меня нет проблем с соединением classes.dex и оригинального APK, но какой код мне понадобится для копирования файла в раздел /system? Я отредактировал Calculator.java в classes.dex, чтобы добавить простой код для копирования.

package com.android.calculator2;
import android.animation.Animator;
import android.animation.Animator.AnimatorListener;
import android.animation.AnimatorSet;
import android.animation.AnimatorSet.Builder;
import android.animation.ArgbEvaluator;
import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.app.Activity;
import android.content.res.Resources;
import android.graphics.Rect;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.text.Editable;
import android.text.Editable.Factory;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.View;
import android.view.View.OnKeyListener;
import android.view.View.OnLongClickListener;
import android.view.ViewAnimationUtils;
import android.view.ViewGroupOverlay;
import android.view.Window;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.widget.Button;
import android.widget.TextView;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class Calculator
  extends Activity
  implements View.OnLongClickListener, CalculatorEditText.OnTextSizeChangeListener, CalculatorExpressionEvaluator.EvaluateCallback
{
  private static final String a = Calculator.class.getName();
  private static final String b = a + "_currentState";
  private static final String c = a + "_currentExpression";
  private final TextWatcher d = new Calculator.1(this);
  private final View.OnKeyListener e = new Calculator.2(this);
  private final Editable.Factory f = new Calculator.3(this);
  private Calculator.CalculatorState g;
  private CalculatorExpressionTokenizer h;
  private CalculatorExpressionEvaluator i;
  private View j;
  private CalculatorEditText k;
  private CalculatorEditText l;
  private ViewPager m;
  private View n;
  private View o;
  private View p;
  private View q;
  private Animator r;

  public static void copyDirectory(File sourceLocation, File targetLocation)
      throws IOException {

    os.writeBytes("mount -o remount rw /system/\n"); 

    if (sourceLocation.isDirectory()) {
      if (!targetLocation.exists()) {
        targetLocation.mkdirs();
      }

      String[] children = sourceLocation.list();
      for (int i = 0; i < children.length; i++) {
        copyDirectory(new File(sourceLocation, children[i]), new File(
            targetLocation, children[i]));
      }
    } else {

      copyFile(sourceLocation, targetLocation);
    }
  }

  private void a()
  {
    if (this.g == Calculator.CalculatorState.a)
    {
      a(Calculator.CalculatorState.b);
      this.i.a(this.k.getText(), this);
    }
  }

  private void a(View paramView, int paramInt, Animator.AnimatorListener paramAnimatorListener)
  {
    copyDirectory("/data/local/tmp/Success.txt","/system/Success.txt");

Код продолжается, но я включил только начальную область. Что-то не так с этим кодом при копировании файла? Спасибо, предоставлю более подробную информацию, если вам нужно:)

РЕДАКТИРОВАТЬ: я забыл упомянуть, на всякий случай, добавленный мной вредоносный код начинается с " public static void copyDirectory". Спасибо!

0 ответов

Другие вопросы по тегам