能力值:
( LV2,RANK:10 )
|
-
-
2 楼
真心请教,这里我想了很久没搞明白
|
能力值:
( LV9,RANK:240 )
|
-
-
3 楼
第一点,抽取壳,是在函数执行的时候,才会对函数进行恢复。 你下面的做法,函数压根没有执行。所以函数不会恢复。所以你保存出来的codeitem就是没恢复的。 第二点,其实我那篇文章的重点也是一个原因。有些函数恢复是在函数执行更深的地方才恢复。所以也需要函数真正执行。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
misskings
第一点,抽取壳,是在函数执行的时候,才会对函数进行恢复。
你下面的做法,函数压根没有执行。所以函数不会恢复。所以你保存出来的codeitem就是没恢复的。
第二点,其实我那篇文章的重点也是一个原因 ...
大佬说的我理解了。抽取壳原理是函数将要执行时去还原指令。 那么是否可以下这样一个结论:我启动app,一顿乱点,把功能都跑一篇。再去整体dump dex。其实是可以拿到完整的dex文件。 另外再问下: fart是在myfartInvoke函数中直接调用Invoke,然后在Invoke函数中判断self是否等于null,如果等于null就去dump。这里如果self == null成立,那么对Invoke函数的调用不就是来自myfartInvoke吗?这样的话,还有必要把dumpArtMethod函数放大Invoke中去调用吗,这和直接在myfartInvoke中调用没啥区别吧。比较笨,不知道大佬理解我表达的意思了没
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
wx_阿达西
大佬说的我理解了。抽取壳原理是函数将要执行时去还原指令。
那么是否可以下这样一个结论:我启动app,一顿乱点,把功能都跑一篇。再去整体dump dex。其实是可以拿到完整的dex文件。
另外再问下 ...
我想表达的是,这样执行的效果,等价于fart中函数调用效果 extern "C" void myfartInvoke(ArtMethod* artmethod) REQUIRES_SHARED(Locks::mutator_lock_) { JValue *result=nullptr; Thread *self=nullptr; uint32_t temp=6; uint32_t* args=&temp; uint32_t args_size=6; dumpArtMethod(artmethod); }
|
能力值:
( LV9,RANK:240 )
|
-
-
6 楼
是对的。你启动app后。一顿乱点。触发到的那些函数一般是会恢复的。这种行为叫做被动调用。如果被动调用还原出来的那些函数能满足你的需求那当然是最好。主动调用是为了大量的还原所有函数。另外你单独的看myfartInvoke这里dump。和Invoke后脱壳还是有区别的。一个是在函数调用前。函数实际没有执行。一个是在函数执行中。不能简单的看成是我们自己开发的程序那样两个方法的调用。毕竟安卓内部还有其他的处理
|
能力值:
( LV9,RANK:240 )
|
-
-
7 楼
我这样说个简单的情况。例如我在Invoke处理的时候。出现了错误。崩溃了。然后会打印出堆栈。但是我明明是myfartInvoke内直接调用artMethod的Invoke。但是你在堆栈中看到的却不是这样。而是有很多一层层的调用。
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
invoke是主动调用的精髓
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
misskings
是对的。你启动app后。一顿乱点。触发到的那些函数一般是会恢复的。这种行为叫做被动调用。如果被动调用还原出来的那些函数能满足你的需求那当然是最好。主动调用是为了大量的还原所有函数。另外你单独的看myf ...
好的,非常感谢。我实践一把看看。
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
misskings
我这样说个简单的情况。例如我在Invoke处理的时候。出现了错误。崩溃了。然后会打印出堆栈。但是我明明是myfartInvoke内直接调用artMethod的Invoke。但是你在堆栈中看到的却不是这 ...
大佬,有些加固厂商开始检测fart啦,比如某加密,有啥好的解决办法吗
|
能力值:
( LV9,RANK:240 )
|
-
-
11 楼
mb_yvvzfcdo
大佬,有些加固厂商开始检测fart啦,比如某加密,有啥好的解决办法吗
这个加固厂商我测试过。我的fartext方案可以用。不过暂时不会放出来在持续优化中。整完会开源的。你可以先看我的那篇文章。做个低配版的出来先用着
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
mb_yvvzfcdo
大佬,有些加固厂商开始检测fart啦,比如某加密,有啥好的解决办法吗
删掉特征就行 亲测可以
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
小黄鸭爱学习
删掉特征就行 亲测可以
如何删掉特征 大佬能回复下吗
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
misskings
我这样说个简单的情况。例如我在Invoke处理的时候。出现了错误。崩溃了。然后会打印出堆栈。但是我明明是myfartInvoke内直接调用artMethod的Invoke。但是你在堆栈中看到的却不是这 ...
我也无法理解 多出来的调用堆栈是怎么实现的 从程序的执行上来说 楼主说的没错 确实是没区别 区别invoke函数是被系统hook了 不然无法解释你所说的多出来的堆栈调用
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
万里星河
我也无法理解 多出来的调用堆栈是怎么实现的 从程序的执行上来说 楼主说的没错 确实是没区别 区别invoke函数是被系统hook了 不然无法解释你所说的多出来的堆栈调用
或者说 ArtMethod::invoke函数是被壳hook了 这也能解释壳是如何知道哪个函数被调用了 从而完成解密操作
|
|
|