android动态注入代码,【转】防止android代码注入的办法

android的.registers 定义了办法中统共应用了几个存放器;.locals定义了办法中有几个非参数存放器;若是一个办法有5个存放器,即.registers==5,v0-v4,并且该办法有两个参数,那么这两个参数将应用最后的两个存放器,即v3和v4。对于非static办法,那么第一个存放器必然是this,比如办法LMyObject;->callMe(II)V有两个整形参数,那么它就会用三个存放器。

为了动态调试android代码,有时辰须要动态的注入代码,然则,代码注入时辰,有几次发明会溃散,后来,经过研究,发明是存放器用错。一个办法可能本身就用了5个存放器,v0-v4,而你用v5,那必然要溃散,是吧!或者你用了后面会用到的存放器,把值给改了,那必然也要溃散。具体大师可以看看下面的文章:见 http://code.google.com/p/smali/wiki/Registers:

有点像stdcall的压栈情势。说白了就是,比如有个办法:void method(arg1, arg2){     int i;    i = arg1+arg2;

}那么method函数就要用三个存放器,若是采取V模式来应用存放器,那么就是:i == v0;arg1 == v1;arg2 == v2;

若是是p模式应用存放器,那么就是:i == v0;arg1 == p0;arg2 == p1;

下面两个重载函数:public int Add(int i,int j)C#委托和Lambda表达式的进修

{

int k = 0;

k = i+j;

return k;

}

public int Add(int i,int j,int k )

{

int m = 0,n = 0;

m = i+j;

n = m+k;

return n;

}对应的smali码:# virtual methods

.method public Add(II)I

.locals 1

.parameter "i"

.parameter "j"

.prologue

.line 44

const/4 v0, 0 x0

.line 45

.local v0, k:I

add-int v0, p1, p2

.line 46

return v0

.end method

.method public Add(III)I

.locals 2

.parameter "i"

.parameter "j"

.parameter "k"

.prologue

.line 50

const/4 v0, 0 x0

.local v0, m:I

const/4 v1, 0 x0tp-link 941n v2设置samba暗码教程

.line 51

.local v1, n:I

add-int v0, p1, p2

.line 52

add-int v1, v0, p3

.line 53

return v1

.end method申明,我们要注入代码,要应用存放器的话,可以增长local,然后,便利的用多出来的就行了,关键是要开启P模式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值