From a4a0119f97e680695430ec535ae9c54a72881ce4 Mon Sep 17 00:00:00 2001 From: DavidVentura Date: Thu, 18 Jan 2024 13:54:48 +0100 Subject: [PATCH] write bytearrays --- func_replacements.js | 47 +++++++++++++++++++++++++++++++++----------- 1 file changed, 36 insertions(+), 11 deletions(-) diff --git a/func_replacements.js b/func_replacements.js index a805c3d..536481d 100644 --- a/func_replacements.js +++ b/func_replacements.js @@ -1,21 +1,28 @@ +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 is u16* - buf.writeU16(0x30f1); - buf.add(2).writeU16(0x0); - return 4; // 2 x u16 entries = 4bytes + buf.writeByteArray([0xf1, 0x30, 0x00, 0x00]); + return 4; }; const create_P2pAliveAck = (buf) => { - // buf is u16* - buf.writeU16(0xe1f1); - buf.add(2).writeU16(0x0); - return 4; // 2 x u16 entries = 4bytes + buf.writeByteArray([0xf1, 0xe1, 0x00, 0x00]); + return 4; }; const create_P2pAlive = (buf) => { - // buf is u16* - buf.writeU16(0xe0f1); + buf.writeByteArray([0xf1, 0xe0, 0x00, 0x00]); + return 4; +}; + +const create_Hello = (buf) => { + buf.writeU16(0xf1); buf.add(2).writeU16(0x0); - return 4; // 2 x u16 entries = 4bytes }; export const replace_func = (stub, ret, args) => { @@ -31,11 +38,29 @@ export const replace_func = (stub, ret, 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));