-
-
[原创]Java/Native方法强制调用实现方案(一)
-
发表于:
2020-3-1 14:14
9459
-
[原创]Java/Native方法强制调用实现方案(一)
书接上回饿了麽APP逆向及爬虫实现详参中,最后没有写完的,三个参数的强制调用生成,欠了这么久,今天来补上,讲一下我怎么用自己的程序调用第三方app中某些方法。
没关注的关注一下,我们开冲!
在逆向过程中,因为部分参数生成的算法在so中,如果不能或不想对so进行研究,更简单的办法是,通过外部提供参数调用app内部某函数,完成参数计算并返回。
这次我们主要讲一下xposed下的插件方案,另外可以达到这个目的的还有frida的rpc调用,我们下次再讲。
没有看过饿了麽APP逆向及爬虫实现详参的,墙裂建议再返回去看一下,这接下来的是接着上次文章没完成的几个参数继续写。
deadpool相关三个参数
上次我们找到,这三个参数是由函数sneer生成:
从这张图可以看出,这是个典型的静态调用so,我们一定能在lib目录找到一个名叫libuiseris.so的文件。
用IDA打开这个so看一眼:
果然找到了实现,不过今天我们不讲so逆向,所以不用做这一步。
找到了sneer的native方法就可以,我们来写插件强制调用。
和正常的xposed插件开发一样,我们先hook attach函数,拿到classloader,然后找到类me.ele.uis.eris.ErisEntry,通过类的静态函数instance函数,拿到类的实例,对sneer进行调用。(如果sneer本身也是static函数,那么直接用类调用就可以了,不用再找他的实例出来。)
实现如下:
如上。我在手机上(xposed插件里)实现一个http服务器,当收到请求时,把对应body拿出来给这个函数进行计算。计算结果通过http再传回去。即完成了对第三方app函数的调用。
但是,机智的小朋友已经发现了,这是在手机里面监听的端口,我代码跑在计算机上,这http消息发不过去啊,这咋整。
这时候我们需要用adb做一下消息转发,'adb forward tcp:端口 tcp:端口'。
这样就完成了计算机本地到手机的端口转发。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!