android 用aidl构建QQ机器人宿主,被hook的应用作为客户端实现通讯的探索

官方文档https://developer.android.com/guide/components/aidl
要实现这个功能只能让机器人作为服务端启用Service,如果要实现qq那边实现,那么则需要修改软件,或者通过反射等方法实现,但是这种方式实现必然有弊端,而且实现起来估计不容易。

Parcel:unable to marshalValue
此问题表示传递的东西必须序列化,否则无法通过aidl发送过去
DeadObjectException。表示服务以及死掉了,绑定的连接对象已经无法使用了,应该删除

package cn.qssq666.robot;
import java.util.List;
import java.util.Map;
interface ICallBack {
    void actionPerformed (int actionId);
//基本数据类型默认为in  can be an out type, so you must declare it as in, out or inout. 'out String flag2' can only be an in parameter.
     void onReceiveMsg( int flag, boolean flag1,   String flag2,in Map map,in List list);
}
// RobotCall.aidl
package cn.qssq666.robot;
import cn.qssq666.robot.ICallback;

// Declare any non-default types here with import statements

interface RobotCallBinder {
    /**
     * Demonstrates some basic types that you can use as parameters
     * and return values in AIDL.
     */
    void basicTypes(int anInt, long aLong, boolean aBoolean, float aFloat,
            double aDouble, String aString);
    void registerCallback(in ICallBack cb);
    void unregisterCallback( in ICallBack cb);
  boolean isTaskRunning();
    void stopRunningTask();

       List queryData(int action,boolean flag1,String flag2);
        Map queryMapData(int action,boolean flag1,String flag2);

}

基本类型不需要加in ,默认为in,而非基本类型必须加in或者inout,或者out
不支持重载参数

:app:preDebugBuild UP-TO-DATE
G:\newproject\AndroidServiceHost\app\src\main\aidl\cn\qssq666\robot\ICallback.aidl:12 attempt to redefine method queryData,
G:\newproject\AndroidServiceHost\app\src\main\aidl\cn\qssq666\robot\ICallback.aidl:11    previously defined here.

只支持基本类型和序列化的对象或者 纯Map,或者List或者String而不是arraylist

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容