Files
mxaccess/analysis/proxy/nmxsvcps-procedures.tsv
T
Joseph Doherty fe2a6db786
rust / build / test / clippy / fmt (push) Has been cancelled
Initial project state: .NET reference, design, Rust port (M0+M1), evidence
Layout:
- src/                    .NET 10 x64 reference: MxNativeCodec, MxNativeClient,
                          MxAsbClient, probes, tests, harnesses. Executable spec.
- design/                 Architectural plan for the Rust port (M0–M6), error
                          model, protocol invariants, risks (R1–R16), adversarial
                          review log (review.md).
- rust/                   Rust workspace. M0 skeleton + M1 codec parity.
                          mxaccess-codec: 215 unit tests + 2 cross-implementation
                          parity tests (byte-identical against .NET reference).
                          Other crates are M0 stubs awaiting M2+.
- captures/               Frida + netsh + pcap evidence per CLAUDE.md
                          ("captures are evidence, not throwaway logs").
- analysis/               Decompiled C# (frida/proxy/decompiled-*),
                          Ghidra exports for native DLLs (`exports/` only —
                          working state at `projects/` and AVEVA's input
                          binaries at `input/` are gitignored).
- docs/                   Reverse-engineering reference docs.
- tools/                  Setup-LiveProbeEnv.ps1 (Infisical credential fetcher),
                          Compute-Crc.ps1 (.NET parity helper).
- .github/workflows/      Rust CI: fmt + build + test + clippy on Windows.
- LICENSE                 MIT (Joseph Doherty, 2026).

Verified:
- cargo test --workspace → 217 passed (215 unit + 2 .NET parity), 0 failed
- cargo clippy --workspace -- -D warnings → clean
- cargo fmt --all -- --check → clean
- cargo publish --dry-run -p mxaccess-codec → packages cleanly

Excluded from history (see .gitignore):
- **/bin, **/obj, **/target — build artifacts
- analysis/ghidra/projects/ — Ghidra working state (regenerable)
- analysis/ghidra/input/ — AVEVA proprietary DLLs (vendor IP)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 06:21:00 -04:00

12 KiB

1interface_indexinterface_nameiidmethod_indexmethod_nameproc_offsetproc_vaopnumx86_stack_sizeclient_buffer_sizeserver_buffer_sizeproc_flagsparam_countoi2_flagsoi2_ext_flagsraw_headerparams
20INmxService22630A513-A974-4B1A-8025-457A9A7C56B83RegisterEngine0x00540x100075fe320880x4640x080x0533 6c 00 00 00 00 03 00 14 00 08 00 08 00 46 04 08 05 00 00 01 00 00 00p0:flags=0x0048(in|base_type),stack=4,type=FC_LONG; p1:flags=0x008b(must_size|must_free|in|by_value),stack=8,type=type+0x002c @0x1000792e [0xb4, 0x83, 0x00, 0x00, FC_USMALL, 0x00, 0x00, 0x00, 0xde, 0xff, FC_IP, FC_CONSTANT_IID, 0xf7, 0x92, 0x9f, 0xb4, 0x48, 0xc7]; p2:flags=0x000b(must_size|must_free|in),stack=12,type=type+0x0036 @0x10007938 [FC_IP, FC_CONSTANT_IID, 0xf7, 0x92, 0x9f, 0xb4, 0x48, 0xc7, 0x69, 0x41, 0x8e, 0xca, 0xa0, 0x67, FC_HYPER, 0x01, 0x27, FC_NO_REPEAT]; p3:flags=0x0070(out|return|base_type),stack=16,type=FC_LONG
30INmxService22630A513-A974-4B1A-8025-457A9A7C56B84UnRegisterEngine0x00840x1000762e412880x4420x080x0133 6c 00 00 00 00 04 00 0c 00 08 00 08 00 44 02 08 01 00 00 00 00 00 00p0:flags=0x0048(in|base_type),stack=4,type=FC_LONG; p1:flags=0x0070(out|return|base_type),stack=8,type=FC_LONG
40INmxService22630A513-A974-4B1A-8025-457A9A7C56B85Connect0x00a80x100076525243280x4450x080x0133 6c 00 00 00 00 05 00 18 00 20 00 08 00 44 05 08 01 00 00 00 00 00 00p0:flags=0x0048(in|base_type),stack=4,type=FC_LONG; p1:flags=0x0048(in|base_type),stack=8,type=FC_LONG; p2:flags=0x0048(in|base_type),stack=12,type=FC_LONG; p3:flags=0x0048(in|base_type),stack=16,type=FC_LONG; p4:flags=0x0070(out|return|base_type),stack=20,type=FC_LONG
50INmxService22630A513-A974-4B1A-8025-457A9A7C56B86TransferData0x00de0x100076886283280x4660x080x0533 6c 00 00 00 00 06 00 1c 00 20 00 08 00 46 06 08 05 00 00 01 00 00 00p0:flags=0x0048(in|base_type),stack=4,type=FC_LONG; p1:flags=0x0048(in|base_type),stack=8,type=FC_LONG; p2:flags=0x0048(in|base_type),stack=12,type=FC_LONG; p3:flags=0x0048(in|base_type),stack=16,type=FC_LONG; p4:flags=0x010b(must_size|must_free|in|simple_ref),stack=20,type=type+0x004c @0x1000794e [FC_CARRAY, 0x00, 0x01, 0x00, 0x28, 0x00, FC_ERROR_STATUS_T, 0x00, 0x01, 0x00, 0x01, FC_END, FC_RP, FC_DOUBLE, FC_LONG, FC_PAD, FC_IP, FC_CONSTANT_IID]; p5:flags=0x0070(out|return|base_type),stack=24,type=FC_LONG
60INmxService22630A513-A974-4B1A-8025-457A9A7C56B87AddSubscriberEngine0x011a0x100076c47243280x4450x080x0133 6c 00 00 00 00 07 00 18 00 20 00 08 00 44 05 08 01 00 00 00 00 00 00p0:flags=0x0048(in|base_type),stack=4,type=FC_LONG; p1:flags=0x0048(in|base_type),stack=8,type=FC_LONG; p2:flags=0x0048(in|base_type),stack=12,type=FC_LONG; p3:flags=0x0048(in|base_type),stack=16,type=FC_LONG; p4:flags=0x0070(out|return|base_type),stack=20,type=FC_LONG
70INmxService22630A513-A974-4B1A-8025-457A9A7C56B88RemoveSubscriberEngine0x01500x100076fa8243280x4450x080x0133 6c 00 00 00 00 08 00 18 00 20 00 08 00 44 05 08 01 00 00 00 00 00 00p0:flags=0x0048(in|base_type),stack=4,type=FC_LONG; p1:flags=0x0048(in|base_type),stack=8,type=FC_LONG; p2:flags=0x0048(in|base_type),stack=12,type=FC_LONG; p3:flags=0x0048(in|base_type),stack=16,type=FC_LONG; p4:flags=0x0070(out|return|base_type),stack=20,type=FC_LONG
80INmxService22630A513-A974-4B1A-8025-457A9A7C56B89SetHeartbeatSendInterval0x01860x100077309161680x4430x080x0133 6c 00 00 00 00 09 00 10 00 10 00 08 00 44 03 08 01 00 00 00 00 00 00p0:flags=0x0048(in|base_type),stack=4,type=FC_LONG; p1:flags=0x0048(in|base_type),stack=8,type=FC_LONG; p2:flags=0x0070(out|return|base_type),stack=12,type=FC_LONG
90INmxService22630A513-A974-4B1A-8025-457A9A7C56B810RegisterEngine20x01b00x1000775a10241680x4650x080x0533 6c 00 00 00 00 0a 00 18 00 10 00 08 00 46 05 08 05 00 00 01 00 00 00p0:flags=0x0048(in|base_type),stack=4,type=FC_LONG; p1:flags=0x008b(must_size|must_free|in|by_value),stack=8,type=type+0x002c @0x1000792e [0xb4, 0x83, 0x00, 0x00, FC_USMALL, 0x00, 0x00, 0x00, 0xde, 0xff, FC_IP, FC_CONSTANT_IID, 0xf7, 0x92, 0x9f, 0xb4, 0x48, 0xc7]; p2:flags=0x0048(in|base_type),stack=12,type=FC_LONG; p3:flags=0x000b(must_size|must_free|in),stack=16,type=type+0x0036 @0x10007938 [FC_IP, FC_CONSTANT_IID, 0xf7, 0x92, 0x9f, 0xb4, 0x48, 0xc7, 0x69, 0x41, 0x8e, 0xca, 0xa0, 0x67, FC_HYPER, 0x01, 0x27, FC_NO_REPEAT]; p4:flags=0x0070(out|return|base_type),stack=20,type=FC_LONG
100INmxService22630A513-A974-4B1A-8025-457A9A7C56B811GetPartnerVersion0x01e60x10007790112424360x4450x080x0133 6c 00 00 00 00 0b 00 18 00 18 00 24 00 44 05 08 01 00 00 00 00 00 00p0:flags=0x0048(in|base_type),stack=4,type=FC_LONG; p1:flags=0x0048(in|base_type),stack=8,type=FC_LONG; p2:flags=0x0048(in|base_type),stack=12,type=FC_LONG; p3:flags=0x2150(out|base_type|simple_ref|0x2000),stack=16,type=FC_LONG; p4:flags=0x0070(out|return|base_type),stack=20,type=FC_LONG
111INmxSvcStatistics6EB90E4C-DF5C-47F0-B2CD-110549C1162A3GetNmxSvcStatistics0x03120x100078bc31201240x4420x080x0133 6c 00 00 00 00 03 00 0c 00 00 00 7c 00 44 02 08 01 00 00 00 00 00 00p0:flags=0x0112(must_free|out|simple_ref),stack=4,type=type+0x0076 @0x10007978 [FC_STRUCT, FC_SMALL, 0x50, 0x00, FC_LONG, FC_LONG, FC_LONG, FC_LONG, FC_LONG, FC_LONG, FC_LONG, FC_LONG, FC_LONG, FC_LONG, FC_LONG, FC_LONG, FC_LONG, FC_LONG]; p1:flags=0x0070(out|return|base_type),stack=8,type=FC_LONG
121INmxSvcStatistics6EB90E4C-DF5C-47F0-B2CD-110549C1162A4ResetSvcStatistics0x03360x100078e048080x4410x080x0133 6c 00 00 00 00 04 00 08 00 00 00 08 00 44 01 08 01 00 00 00 00 00 00p0:flags=0x0070(out|return|base_type),stack=4,type=FC_LONG
132INmxStatus4CA783BC-F68E-42F4-9D76-8107C826F6253OPENCONNECTION0x027c0x1000782633224640x4670x080x0133 6c 00 00 00 00 03 00 20 00 18 00 40 00 46 07 08 01 00 00 00 00 00 00p0:flags=0x0048(in|base_type),stack=4,type=FC_LONG; p1:flags=0x000b(must_size|must_free|in),stack=8,type=type+0x005c @0x1000795e [FC_IP, FC_CONSTANT_IID, 0xea, 0x9a, 0x84, 0x73, 0x2a, 0x47, FC_STRUCT, 0x47, 0xb8, 0xc6, 0x1c, 0x80, 0x6a, 0xf1, 0x2d, 0xfc]; p2:flags=0x0048(in|base_type),stack=12,type=FC_LONG; p3:flags=0x0048(in|base_type),stack=16,type=FC_LONG; p4:flags=0x2150(out|base_type|simple_ref|0x2000),stack=20,type=FC_LONG; p5:flags=0x2150(out|base_type|simple_ref|0x2000),stack=24,type=FC_ENUM32; p6:flags=0x0070(out|return|base_type),stack=28,type=FC_LONG
142INmxStatus4CA783BC-F68E-42F4-9D76-8107C826F6254CloseConnection0x02be0x100078684168360x4430x080x0133 6c 00 00 00 00 04 00 10 00 08 00 24 00 44 03 08 01 00 00 00 00 00 00p0:flags=0x0048(in|base_type),stack=4,type=FC_LONG; p1:flags=0x2150(out|base_type|simple_ref|0x2000),stack=8,type=FC_ENUM32; p2:flags=0x0070(out|return|base_type),stack=12,type=FC_LONG
152INmxStatus4CA783BC-F68E-42F4-9D76-8107C826F6255GetConnectionStatus0x02e80x100078925168360x4430x080x0133 6c 00 00 00 00 05 00 10 00 08 00 24 00 44 03 08 01 00 00 00 00 00 00p0:flags=0x0048(in|base_type),stack=4,type=FC_LONG; p1:flags=0x2150(out|base_type|simple_ref|0x2000),stack=8,type=FC_ENUM32; p2:flags=0x0070(out|return|base_type),stack=12,type=FC_LONG
163INmxService575008DB-845D-46C6-A906-F6F8CA86F3153RegisterEngine0x00540x100075fe320880x4640x080x0533 6c 00 00 00 00 03 00 14 00 08 00 08 00 46 04 08 05 00 00 01 00 00 00p0:flags=0x0048(in|base_type),stack=4,type=FC_LONG; p1:flags=0x008b(must_size|must_free|in|by_value),stack=8,type=type+0x002c @0x1000792e [0xb4, 0x83, 0x00, 0x00, FC_USMALL, 0x00, 0x00, 0x00, 0xde, 0xff, FC_IP, FC_CONSTANT_IID, 0xf7, 0x92, 0x9f, 0xb4, 0x48, 0xc7]; p2:flags=0x000b(must_size|must_free|in),stack=12,type=type+0x0036 @0x10007938 [FC_IP, FC_CONSTANT_IID, 0xf7, 0x92, 0x9f, 0xb4, 0x48, 0xc7, 0x69, 0x41, 0x8e, 0xca, 0xa0, 0x67, FC_HYPER, 0x01, 0x27, FC_NO_REPEAT]; p3:flags=0x0070(out|return|base_type),stack=16,type=FC_LONG
173INmxService575008DB-845D-46C6-A906-F6F8CA86F3154UnRegisterEngine0x00840x1000762e412880x4420x080x0133 6c 00 00 00 00 04 00 0c 00 08 00 08 00 44 02 08 01 00 00 00 00 00 00p0:flags=0x0048(in|base_type),stack=4,type=FC_LONG; p1:flags=0x0070(out|return|base_type),stack=8,type=FC_LONG
183INmxService575008DB-845D-46C6-A906-F6F8CA86F3155Connect0x00a80x100076525243280x4450x080x0133 6c 00 00 00 00 05 00 18 00 20 00 08 00 44 05 08 01 00 00 00 00 00 00p0:flags=0x0048(in|base_type),stack=4,type=FC_LONG; p1:flags=0x0048(in|base_type),stack=8,type=FC_LONG; p2:flags=0x0048(in|base_type),stack=12,type=FC_LONG; p3:flags=0x0048(in|base_type),stack=16,type=FC_LONG; p4:flags=0x0070(out|return|base_type),stack=20,type=FC_LONG
193INmxService575008DB-845D-46C6-A906-F6F8CA86F3156TransferData0x00de0x100076886283280x4660x080x0533 6c 00 00 00 00 06 00 1c 00 20 00 08 00 46 06 08 05 00 00 01 00 00 00p0:flags=0x0048(in|base_type),stack=4,type=FC_LONG; p1:flags=0x0048(in|base_type),stack=8,type=FC_LONG; p2:flags=0x0048(in|base_type),stack=12,type=FC_LONG; p3:flags=0x0048(in|base_type),stack=16,type=FC_LONG; p4:flags=0x010b(must_size|must_free|in|simple_ref),stack=20,type=type+0x004c @0x1000794e [FC_CARRAY, 0x00, 0x01, 0x00, 0x28, 0x00, FC_ERROR_STATUS_T, 0x00, 0x01, 0x00, 0x01, FC_END, FC_RP, FC_DOUBLE, FC_LONG, FC_PAD, FC_IP, FC_CONSTANT_IID]; p5:flags=0x0070(out|return|base_type),stack=24,type=FC_LONG
203INmxService575008DB-845D-46C6-A906-F6F8CA86F3157AddSubscriberEngine0x011a0x100076c47243280x4450x080x0133 6c 00 00 00 00 07 00 18 00 20 00 08 00 44 05 08 01 00 00 00 00 00 00p0:flags=0x0048(in|base_type),stack=4,type=FC_LONG; p1:flags=0x0048(in|base_type),stack=8,type=FC_LONG; p2:flags=0x0048(in|base_type),stack=12,type=FC_LONG; p3:flags=0x0048(in|base_type),stack=16,type=FC_LONG; p4:flags=0x0070(out|return|base_type),stack=20,type=FC_LONG
213INmxService575008DB-845D-46C6-A906-F6F8CA86F3158RemoveSubscriberEngine0x01500x100076fa8243280x4450x080x0133 6c 00 00 00 00 08 00 18 00 20 00 08 00 44 05 08 01 00 00 00 00 00 00p0:flags=0x0048(in|base_type),stack=4,type=FC_LONG; p1:flags=0x0048(in|base_type),stack=8,type=FC_LONG; p2:flags=0x0048(in|base_type),stack=12,type=FC_LONG; p3:flags=0x0048(in|base_type),stack=16,type=FC_LONG; p4:flags=0x0070(out|return|base_type),stack=20,type=FC_LONG
223INmxService575008DB-845D-46C6-A906-F6F8CA86F3159SetHeartbeatSendInterval0x01860x100077309161680x4430x080x0133 6c 00 00 00 00 09 00 10 00 10 00 08 00 44 03 08 01 00 00 00 00 00 00p0:flags=0x0048(in|base_type),stack=4,type=FC_LONG; p1:flags=0x0048(in|base_type),stack=8,type=FC_LONG; p2:flags=0x0070(out|return|base_type),stack=12,type=FC_LONG
234INmxNotify73849AEA-472A-4715-B8C6-1C806AF12DFC3ConnectionEstablished0x021c0x100077c63243280x4450x080x0133 6c 00 00 00 00 03 00 18 00 20 00 08 00 44 05 08 01 00 00 00 00 00 00p0:flags=0x0048(in|base_type),stack=4,type=FC_LONG; p1:flags=0x0048(in|base_type),stack=8,type=FC_LONG; p2:flags=0x0048(in|base_type),stack=12,type=FC_ENUM32; p3:flags=0x0048(in|base_type),stack=16,type=FC_LONG; p4:flags=0x0070(out|return|base_type),stack=20,type=FC_LONG
244INmxNotify73849AEA-472A-4715-B8C6-1C806AF12DFC4ConnectionClosed0x02520x100077fc4161680x4430x080x0133 6c 00 00 00 00 04 00 10 00 10 00 08 00 44 03 08 01 00 00 00 00 00 00p0:flags=0x0048(in|base_type),stack=4,type=FC_LONG; p1:flags=0x0048(in|base_type),stack=8,type=FC_LONG; p2:flags=0x0070(out|return|base_type),stack=12,type=FC_LONG
255INmxSvcCallbackB49F92F7-C748-4169-8ECA-A0670B0127463DataReceived0x00000x100075aa316880x4630x080x0533 6c 00 00 00 00 03 00 10 00 08 00 08 00 46 03 08 05 00 00 01 00 00 00p0:flags=0x0048(in|base_type),stack=4,type=FC_LONG; p1:flags=0x010b(must_size|must_free|in|simple_ref),stack=8,type=type+0x0006 @0x10007908 [FC_CARRAY, 0x00, 0x01, 0x00, 0x28, 0x00, FC_USMALL, 0x00, 0x01, 0x00, FC_CHAR, FC_END, FC_UP, 0x00, FC_ENUM32, 0x00, FC_CARRAY, 0x01]; p2:flags=0x0070(out|return|base_type),stack=12,type=FC_LONG
265INmxSvcCallbackB49F92F7-C748-4169-8ECA-A0670B0127464StatusReceived0x002a0x100075d4416880x4630x080x0533 6c 00 00 00 00 04 00 10 00 08 00 08 00 46 03 08 05 00 00 01 00 00 00p0:flags=0x0048(in|base_type),stack=4,type=FC_LONG; p1:flags=0x010b(must_size|must_free|in|simple_ref),stack=8,type=type+0x0006 @0x10007908 [FC_CARRAY, 0x00, 0x01, 0x00, 0x28, 0x00, FC_USMALL, 0x00, 0x01, 0x00, FC_CHAR, FC_END, FC_UP, 0x00, FC_ENUM32, 0x00, FC_CARRAY, 0x01]; p2:flags=0x0070(out|return|base_type),stack=12,type=FC_LONG