- 积分
- 136185
- 注册时间
- 2014-12-27
- 最后登录
- 2024-4-10
- 在线时间
- 603 小时
- 威望
- 562
- 贡献
- 29
- 金币
- 52688
- 钢镚
- 1422
- 交易凭证
- 1
- 分享
- 0
- 精华
- 33
- 帖子
- 2094
- 主题
- 1742
TA的每日心情 | 擦汗 2018-4-10 15:18 |
---|
签到天数: 447 天 [LV.9]以坛为家II
超级版主
- 威望
- 562
- 贡献
- 29
- 金币
- 52688
- 钢镚
- 1422
|
首先看一个简单的实现 在需要调用的地方写入一下代码: - <font color="rgb(51, 51, 51)">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
- }</font>
复制代码 编写需要反射的类和函数:
- 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.
本文来自:http://shadowkong.com/archives/1612
|
|