[android逆向]活用反射机制

首先看一个简单的实现

在需要调用的地方写入一下代码:

try
{
	sJump = Class.forName("com.rect.jumpdemo.JumpHandle");
	if(sJump != null)
	{
		Method method = 
     sJump.getMethod("CallBack", new Class[] { Integer.TYPE});
		if(method != null)
	   method.invoke(null, new Object[] { Integer.valueOf(11)});
	}
}
catch (Exception e) {
	// TODO: handle exception
}


编写需要反射的类和函数:

package com.rect.jumpdemo;
import android.util.Log;
//
// @author Rect
// @version 2014-3-10
//
public class JumpHandle {
	public static void CallBack(int a)
	{
		//反射回调 执行你想要的操作
	}
}

这样在执行的时候就可以不需要improt类而达到执行函数的目的.

这种方式在逆向中如何应用?

  • 寻找需要程序执行你的代码的地方.
  • 反编译classdex文件
  • 把反射代码编译成Dalvik汇编代码
  • 在该地方插入反射代码(上面的第一段).
  • 把你需要执行的函数代码类编译成Dalvik汇编代码文件.
  • 把Dalvik汇编代码文件放入classdex文件中
  • 修复classdex文件
  • 回编译APK.

2 评论

  1. 因为没有你得联系方式 我想问下关于apk安全得问题。 方便得话加我qq:81621965。请教些问题

发表评论

电子邮件地址不会被公开。 必填项已用*标注