能力值:
( LV2,RANK:10 )
|
-
-
51 楼
http://bbs.pediy.com/attachment.php?attachmentid=88656&stc=1&d=1398332237 大神这个是什么情况~ 无法打开DLL OPEN后 返回地址为 0
求帮助~
|
能力值:
( LV9,RANK:140 )
|
-
-
52 楼
这个inject模块是不太好用滴
网上还有很多的实现版本,你可以试试看
|
能力值:
( LV3,RANK:20 )
|
-
-
53 楼
玩的越来越彻底了
|
能力值:
( LV4,RANK:50 )
|
-
-
54 楼
别的进程注入都没什么问题,zygote注入后,detach会有问题。看了提示,invalid parameter。试了几种方法解决都没成功,不知什么原因。
|
能力值:
( LV2,RANK:10 )
|
-
-
55 楼
可能我理解的不深,不知到把一个java方法改为native方法后,然后再去怎么做?hook不是要跑完自己写的程序,然后再回到原程序中嘛,这个hook方案的话,怎么对接??
|
能力值:
( LV9,RANK:140 )
|
-
-
56 楼
对接的情况还没有考虑到
|
能力值:
( LV9,RANK:310 )
|
-
-
57 楼
谢谢楼主分享啊,受教了!
|
能力值:
( LV2,RANK:10 )
|
-
-
58 楼
楼主考没考虑将 对接那部分做出来呢??这个方式的hook感脚比字节吗的注入的隐藏效果更好。。或许做出来,会有更多的应用。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
59 楼
mark一下 有空学习
|
能力值:
( LV9,RANK:140 )
|
-
-
60 楼
对接其实也是可以做的,我现在也在完善这个方案,有结果了我再放出来
|
能力值:
( LV2,RANK:10 )
|
-
-
61 楼
嗯,一起加油,我回头也要想想有关对接的问题,回头一起讨论讨论!
|
能力值:
( LV2,RANK:10 )
|
-
-
62 楼
Hi:楼主,请教下,为啥我找不到 #include "android_runtime/AndroidRuntime.h"呢?
|
能力值:
( LV9,RANK:140 )
|
-
-
63 楼
你看下/jni/include/android_runtime/AndroidRuntime.h
看下这里包含了没有
|
能力值:
( LV2,RANK:10 )
|
-
-
64 楼
顶起 感谢楼主分享
|
能力值:
( LV2,RANK:10 )
|
-
-
65 楼
art::mirror::ArtMethod *GetNativeMethod(JNIEnv *jenv){
jclass clazzTarget = jenv->FindClass("java/lang/Object");
if (ClearException(jenv)) { //编译 这个不识别,少了什么 header啊?
ALOG("Exception","GetNativeMethod[Can't find class:%s in bootclassloader","java/lang/Object");
}
jmethodID method = jenv->GetMethodID(clazzTarget,"notifyAll","()V");
if(method==NULL){
ALOG("Exception","GetNativeMethod[Can't find method:%s","notifyAll");
return false;
}
return reinterpret_cast<art::mirror::ArtMethod*>(method);
}
|
能力值:
( LV4,RANK:50 )
|
-
-
66 楼
先留个mark
|
能力值:
( LV9,RANK:140 )
|
-
-
67 楼
少了什么头文件吧,找找加上去
|
能力值:
( LV2,RANK:10 )
|
-
-
68 楼
要调用原来的方法,可以借鉴这段代码
void* thread = dvmFindClass("Ljava/lang/Thread;", 0);
const void* sleep = (const void*)dvmFindDirectMethodByDescriptor(thread, "sleep", "(J)V");
if(sleep)
LOGD("GetMethod sleep succeed %x", sleep);
else
LOGD("GetMethod sleep failed");
jmethodID mirrorSleep = (jmethodID)malloc( METHODSIZE );
memcpy((void*)mirrorSleep, sleep, METHODSIZE);
Method *method = reinterpret_cast<Method *>(mirrorSleep);
method->clazz = reinterpret_cast<ClassObject *>(clazz);
method->name = "classLoaded";
modifyMethodAttribute(mirrorSleep);
dvmUseJNIBridge((void*)mirrorSleep, funcPtr);
long rtnValue;
dvmCallMethod(self, mirrorSleep, 0, (void*)&rtnValue, data);
dvmClearException(self);
free(mirrorSleep);
|
能力值:
( LV9,RANK:140 )
|
-
-
69 楼
我的而方法是这样,直接内存拷贝存起来
uint mlen = sizeof(Method);
Method *oldMeth = (Method*)malloc(mlen);
memcpy(oldMeth,method,mlen);
info->odlMethod = oldMeth;
info->curMethod = method;
调用原来的方法就把内存拷回去,再hook一次
memcpy(hi->curMethod,hi->odlMethod,mlen);
jmethodID om = (jmethodID)hi->curMethod;
jenv->CallVoidMethod(me,om,gDevice_Sensors);
ClassMethodHook(jenv,&baiduhookInfos[0]);
|
能力值:
( LV2,RANK:10 )
|
-
-
70 楼
这个一定要学习的!
|
能力值:
( LV2,RANK:10 )
|
-
-
71 楼
mark 学习下
|
能力值:
( LV2,RANK:10 )
|
-
-
72 楼
有个疑问
modifyMethodAttribute
具体修改了Method那些属性dvmCallMethod调用是不是还得恢复过来。
还有这是是调用静态的sleep如果是非静态的。那么this指针如何获得
也就是dvmCallMethod第三个参数如何获得?
|
能力值:
( LV2,RANK:10 )
|
-
-
73 楼
那么高级,欣赏ing
|
能力值:
( LV2,RANK:10 )
|
-
-
74 楼
那么高级 欣赏ing 一直想找个 c/C++ 的源代码学习学习
|
能力值:
( LV2,RANK:10 )
|
-
-
75 楼
学习了,谢谢
|
|
|