Files
cam-reverse/func_replacements.js
T
2024-01-18 13:54:48 +01:00

69 lines
1.7 KiB
JavaScript

const pack_P2pHdr = (in_buf, out_buf) => {
// shitty memcpy
out_buf.writeByteArray(in_buf.readByteArray(4));
//out_buf.writeU16(in_buf.readU16());
//out_buf.add(2).writeU16(in_buf.add(2).readU16());
return 4;
};
const create_LanSearch = (buf) => {
buf.writeByteArray([0xf1, 0x30, 0x00, 0x00]);
return 4;
};
const create_P2pAliveAck = (buf) => {
buf.writeByteArray([0xf1, 0xe1, 0x00, 0x00]);
return 4;
};
const create_P2pAlive = (buf) => {
buf.writeByteArray([0xf1, 0xe0, 0x00, 0x00]);
return 4;
};
const create_Hello = (buf) => {
buf.writeU16(0xf1);
buf.add(2).writeU16(0x0);
};
export const replace_func = (stub, ret, args) => {
const name_in_elf = stub.name;
const symbol_addr = DebugSymbol.fromName(name_in_elf).address;
if (symbol_addr == 0) {
console.error(`Could not find ${name_in_elf}`);
return;
}
console.log(
`Replacing ${name_in_elf}, signature "${ret} ${name_in_elf}(${args})"`,
);
Interceptor.replace(symbol_addr, new NativeCallback(stub, ret, args));
};
/* Send_Pkt_LanSearch =
* create_LanSearch(buf)
* pack_ClntPkt(2, buf, &packed_buf)
* UdpPktSend(packed_buf)
*/
/* Send_Pkt_Hello =
* create_Hello
* pack_ClntPkt
* UdpPktSend
*/
/* pack_ClntPkt =
* pack_P2pHdr
* pack_
* RSLgnEx, RlyReq4, RlyPortAck, RlyPortExAck, RlyReqEx, Drw, HelloToAck, DrwAck, DevLgn4, LanSearchExtAck, P2pReq4, RSLGn
*/
export const replaceFunctions = () => {
const replacements = [
[create_P2pAlive, "uchar", ["pointer"]],
[create_P2pAliveAck, "uchar", ["pointer"]],
[create_LanSearch, "uchar", ["pointer"]],
[create_Hello, "uchar", ["pointer"]],
[pack_P2pHdr, "uchar", ["pointer", "pointer"]],
];
replacements.forEach((x) => replace_func(...x));
return replacements.map((x) => x[0].name);
};