首页
论坛
专栏
课程

[原创]注入安卓进程,并hook java世界的方法

2014-3-28 14:16 173286

[原创]注入安卓进程,并hook java世界的方法

2014-3-28 14:16
173286
最新回复 (159)
luyikk 2014-4-24 17:38
51
0
http://bbs.pediy.com/attachment.php?attachmentid=88656&stc=1&d=1398332237

大神这个是什么情况~ 无法打开DLL OPEN后 返回地址为 0

求帮助~
上传的附件:
malokch 3 2014-4-24 18:32
52
0
这个inject模块是不太好用滴
网上还有很多的实现版本,你可以试试看
lasvegas 2014-4-25 12:46
53
0
玩的越来越彻底了
yiyiguxing 1 2014-4-25 20:23
54
0
别的进程注入都没什么问题,zygote注入后,detach会有问题。看了提示,invalid parameter。试了几种方法解决都没成功,不知什么原因。
liuwll 2014-5-12 08:58
55
0
可能我理解的不深,不知到把一个java方法改为native方法后,然后再去怎么做?hook不是要跑完自己写的程序,然后再回到原程序中嘛,这个hook方案的话,怎么对接??
malokch 3 2014-5-12 21:04
56
0
对接的情况还没有考虑到
ThomasKing 6 2014-5-14 08:44
57
0
谢谢楼主分享啊,受教了!
liuwl 2014-5-15 14:40
58
0
楼主考没考虑将 对接那部分做出来呢??这个方式的hook感脚比字节吗的注入的隐藏效果更好。。或许做出来,会有更多的应用。。。
小龙飞 2014-5-16 09:47
59
0
mark一下 有空学习
malokch 3 2014-5-21 19:08
60
0
对接其实也是可以做的,我现在也在完善这个方案,有结果了我再放出来
liuwl 2014-5-22 09:59
61
0
嗯,一起加油,我回头也要想想有关对接的问题,回头一起讨论讨论!
JackyYu 2014-5-29 21:15
62
0
Hi:楼主,请教下,为啥我找不到 #include "android_runtime/AndroidRuntime.h"呢?
malokch 3 2014-5-30 23:16
63
0
你看下/jni/include/android_runtime/AndroidRuntime.h
看下这里包含了没有
specter117 2014-6-4 18:53
64
0
顶起 感谢楼主分享
bfire 2014-6-13 14:14
65
0
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);
}
filly 1 2014-6-13 23:04
66
0
先留个mark
malokch 3 2014-6-14 20:58
67
0
少了什么头文件吧,找找加上去
losted 2014-6-17 13:33
68
0
要调用原来的方法,可以借鉴这段代码
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);
malokch 3 2014-6-17 18:28
69
0
我的而方法是这样,直接内存拷贝存起来
        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]);
wawt 2014-6-17 18:40
70
0
这个一定要学习的!
kmsmxpro 2014-6-20 09:23
71
0
mark  学习下
ShadoWWinL 2014-6-20 14:06
72
0
有个疑问

modifyMethodAttribute
具体修改了Method那些属性dvmCallMethod调用是不是还得恢复过来。

还有这是是调用静态的sleep如果是非静态的。那么this指针如何获得
也就是dvmCallMethod第三个参数如何获得?
fujiangren 2014-6-26 09:56
73
0
那么高级,欣赏ing
fujiangren 2014-6-26 09:58
74
0
那么高级 欣赏ing 一直想找个 c/C++ 的源代码学习学习
xyzAA 2014-6-26 20:27
75
0
学习了,谢谢
jbwang 1 2014-6-26 20:45
76
0
很详细的介绍,顶一个
filly 1 2014-7-7 00:20
77
0
你好,我在编译提供的源代码的时候 总是出现:
jni/art.cpp:21:25: error: 'ClearException' was not declared in this scope
这个错误,请问怎么解决?
filly 1 2014-7-7 15:31
78
0
你好,我在编译提供的源代码的时候 总是出现:
jni/art.cpp:21:25: error: 'ClearException' was not declared in this scope
这个错误,请问怎么解决?
ashimida 1 2014-7-7 19:34
79
0
mark
malokch 3 2014-7-9 17:35
80
0
这个是自定义的异常捕获函数,源码里有
filly 1 2014-7-13 10:17
81
0
谢谢,我已经找到了,复制过去,编译成功
cmzy 2014-7-13 23:11
82
0
小弟不才,已经自己实现了一个lib了,https://github.com/cmzy/ZHookLib
cinsondev 2014-7-14 10:36
83
0
mark, 感谢分享。
cnywco 2014-7-14 14:59
84
0
实在是看不懂啊。。。。
ShadoWWinL 2014-7-14 15:30
85
0
实在是看不懂啊。。。。。
长剑耿介 2014-7-15 14:20
86
0
mark
OnlyEnd 2014-7-28 18:26
87
0
楼主,代码到现在还是跑不起来吗? = =
malokch 3 2014-7-31 14:03
88
0
一直都可以跑啊,愉快地玩了好久了
wule 2 2014-8-14 12:38
89
0
楼主大哥,我看不太懂那个findapkclass()这个函数,请问我该看点什么相关资料来冲个电呢??谢大哥!!
malokch 3 2014-8-14 17:08
90
0
看jni、java反射、安卓源码
njxxdx 2014-9-1 21:57
91
0
帮我解决了一个问题 呵呵 谢谢了
xiaowz 2014-9-4 17:42
92
0
楼主好人,不过这个代码依赖的东西比较多啊,能不能给个链接 把c++依赖的东西上传一份啊 楼主用的是MinGW吗?
mingxuan三千 2014-9-4 22:34
93
0
楼主的文档最后有个链接,里面有源代码,ndk环境完全可以编译通过
mathwl 2014-9-13 00:43
94
0
请问,art模式有思路吗?求教。
了log 2014-9-17 09:41
95
0
楼主威武,霸气侧漏呀
fengrider 2014-9-22 16:43
96
0
厉害地,大神。
liuwl 2014-9-23 09:45
97
0
测试发现JDK 4.4版本的可以运行,但其它JDK版本不能运行,是不是这样?
malokch 3 2014-9-24 12:55
98
0
JDK4.4? 和这个有啥关系?
liuwl 2014-9-24 15:48
99
0
[QUOTE=malokch;1318799]JDK4.4? 和这个有啥关系?[/QUO
说错了,是SDK 版本,貌似4.4的能通过,其他的有点问题。
NAGAじSKY 2014-9-25 14:32
100
0
收藏了
游客
登录 | 注册 方可回帖
返回