首先看一个简单的实现
在需要调用的地方写入一下代码:
[code lang=”java”]
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
}
[/code]
编写需要反射的类和函数:
[code lang=”java”]
package com.rect.jumpdemo;
import android.util.Log;
//
// @author Rect
// @version 2014-3-10
//
public class JumpHandle {
public static void CallBack(int a)
{
//反射回调 执行你想要的操作
}
}
[/code]
这样在执行的时候就可以不需要improt类而达到执行函数的目的.
这种方式在逆向中如何应用?
- 寻找需要程序执行你的代码的地方.
- 反编译classdex文件
- 把反射代码编译成Dalvik汇编代码
- 在该地方插入反射代码(上面的第一段).
- 把你需要执行的函数代码类编译成Dalvik汇编代码文件.
- 把Dalvik汇编代码文件放入classdex文件中
- 修复classdex文件
- 回编译APK.
因为没有你得联系方式 我想问下关于apk安全得问题。 方便得话加我qq:81621965。请教些问题
有问题可以发到这里.@rl