|
楼主 |
发表于 2025-1-16 16:03:55
|
显示全部楼层
这层讲一下一些重要的功能
相较于frida 的 动态call
例如
//给角色发消息var CUser_SendNotiPacketMessage = new NativeFunction(ptr(0x86886CE), 'int', ['pointer', 'pointer', 'int'], { "abi": "sysv" });
这是frida代码,是向程序注册一个函数调用的原服务端的 0x86886CE 地址函数的功能。
这个动态call在 DP-S插件中也有实现,不过逻辑稍有不同,在DP-S中,你不需要先注册这个函数,我们采用动态call直接调用,例如上面这个例子,在DP-S中 你只需要这样写
Sq_CallFunc(S_Ptr("0x86886CE"), "int", ["pointer", "pointer","int"], SUser.C_Object, Memory.allocUtf8String("测试信息"),14); 可以看到我们直接调用了这个函数 申明了返回值为int 参数为两个pointer指针 在同时我们直接将参数传递了进去,如果你想实现 frida这种类似的注册函数模式 ,你也可以在DP-S中将函数注册在全局表里
动态Call说完了 再说说frida的另一个重要功能 AOP 也就是 动态HOOK frida可以在程序运行时 hook下某一个原生函数 执行自己的逻辑 例如
这一点在DP-S中也是同样可以实现的,不过这一功能我并未开放,至于原因我会在下一层讲
现在放上DP-S的实现代码
至于其他的frida的内存类操作 比如 .add .readU32 .alloc 之类的操作 在DP-S中也都有实现,封装在Native层,感兴趣的可以看文档或者问我。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|