fe2a6db786
rust / build / test / clippy / fmt (push) Has been cancelled
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>
11 KiB
11 KiB
| 1 | string_address | string_value | ref_from | ref_function |
|---|---|---|---|---|
| 2 | 1001cef8 | LmxProxy | 1000c87f | DllGetClassObject@1000c873 |
| 3 | 1001d85c | d:\bldsrc\6\s\src\lmxproxy\mxcallback.h | 1000f9e2 | FUN_1000f9b6@1000f9b6 |
| 4 | 1001d888 | CLMXProxyServer::VerifyItemValid - hLMXServer | 1000face | FUN_1000fa3b@1000fa3b |
| 5 | 1001d8e8 | CLMXProxyServer::VerifyItemValid - hItem | 1000faa8 | FUN_1000fa3b@1000fa3b |
| 6 | 1001d958 | CLMXProxyServer::VerifyAdvisedItem - returning E_INVALIDARG | 1000fb51 | FUN_1000fb02@1000fb02 |
| 7 | 1001d9d0 | CLMXProxyServer::InitializeDefaultLocale set to | 1000fc40 | FUN_1000fb71@1000fb71 |
| 8 | 1001da5c | LMXProxyServer.cpp | 1001280d | Catch@10012808@10012808 |
| 9 | 1001da5c | LMXProxyServer.cpp | 1001480c | Catch@10014807@10014807 |
| 10 | 1001da5c | LMXProxyServer.cpp | 1001385f | Catch@1001385a@1001385a |
| 11 | 1001da5c | LMXProxyServer.cpp | 10012890 | Catch@1001288b@1001288b |
| 12 | 1001da5c | LMXProxyServer.cpp | 10014888 | Catch@10014883@10014883 |
| 13 | 1001da5c | LMXProxyServer.cpp | 100138e2 | Catch@100138dd@100138dd |
| 14 | 1001da5c | LMXProxyServer.cpp | 1001290c | Catch@10012907@10012907 |
| 15 | 1001da5c | LMXProxyServer.cpp | 10013140 | Catch@1001313b@1001313b |
| 16 | 1001da5c | LMXProxyServer.cpp | 1001395e | Catch@10013959@10013959 |
| 17 | 1001da5c | LMXProxyServer.cpp | 10014174 | Catch@1001416f@1001416f |
| 18 | 1001da5c | LMXProxyServer.cpp | 100131c3 | Catch@100131be@100131be |
| 19 | 1001da5c | LMXProxyServer.cpp | 100141f7 | Catch@100141f2@100141f2 |
| 20 | 1001da5c | LMXProxyServer.cpp | 1001323f | Catch@1001323a@1001323a |
| 21 | 1001da5c | LMXProxyServer.cpp | 10014273 | Catch@1001426e@1001426e |
| 22 | 1001da5c | LMXProxyServer.cpp | 1001529f | Catch@1001529a@1001529a |
| 23 | 1001da5c | LMXProxyServer.cpp | 10015adb | Catch@10015ad6@10015ad6 |
| 24 | 1001da5c | LMXProxyServer.cpp | 10012aca | Catch@10012ac5@10012ac5 |
| 25 | 1001da5c | LMXProxyServer.cpp | 10015322 | Catch@1001531d@1001531d |
| 26 | 1001da5c | LMXProxyServer.cpp | 1001230b | Catch@10012306@10012306 |
| 27 | 1001da5c | LMXProxyServer.cpp | 10015b5e | Catch@10015b59@10015b59 |
| 28 | 1001da5c | LMXProxyServer.cpp | 10012b4e | Catch@10012b49@10012b49 |
| 29 | 1001da5c | LMXProxyServer.cpp | 1001539e | Catch@10015399@10015399 |
| 30 | 1001da5c | LMXProxyServer.cpp | 1001238f | Catch@1001238a@1001238a |
| 31 | 1001da5c | LMXProxyServer.cpp | 10015bda | Catch@10015bd5@10015bd5 |
| 32 | 1001da5c | LMXProxyServer.cpp | 10012bcb | Catch@10012bc6@10012bc6 |
| 33 | 1001da5c | LMXProxyServer.cpp | 1001240c | Catch@10012407@10012407 |
| 34 | 1001da5c | LMXProxyServer.cpp | 10014432 | Catch@1001442d@1001442d |
| 35 | 1001da5c | LMXProxyServer.cpp | 10013c5c | Catch@10013c57@10013c57 |
| 36 | 1001da5c | LMXProxyServer.cpp | 100134be | Catch@100134b9@100134b9 |
| 37 | 1001da5c | LMXProxyServer.cpp | 100144b5 | Catch@100144b0@100144b0 |
| 38 | 1001da5c | LMXProxyServer.cpp | 10013cdf | Catch@10013cda@10013cda |
| 39 | 1001da5c | LMXProxyServer.cpp | 10013541 | Catch@1001353c@1001353c |
| 40 | 1001da5c | LMXProxyServer.cpp | 10014531 | Catch@1001452c@1001452c |
| 41 | 1001da5c | LMXProxyServer.cpp | 10013d5b | Catch@10013d56@10013d56 |
| 42 | 1001da5c | LMXProxyServer.cpp | 10012553 | Catch@1001254e@1001254e |
| 43 | 1001da5c | LMXProxyServer.cpp | 100135bd | Catch@100135b8@100135b8 |
| 44 | 1001da5c | LMXProxyServer.cpp | 10012de4 | Catch@10012ddf@10012ddf |
| 45 | 1001da5c | LMXProxyServer.cpp | 100125d6 | Catch@100125d1@100125d1 |
| 46 | 1001da5c | LMXProxyServer.cpp | 10011e64 | Catch@10011e5f@10011e5f |
| 47 | 1001da5c | LMXProxyServer.cpp | 10012652 | Catch@1001264d@1001264d |
| 48 | 1001da5c | LMXProxyServer.cpp | 10012e67 | Catch@10012e62@10012e62 |
| 49 | 1001da5c | LMXProxyServer.cpp | 10012ee3 | Catch@10012ede@10012ede |
| 50 | 1001da5c | LMXProxyServer.cpp | 10011ee1 | Catch@10011edc@10011edc |
| 51 | 1001da5c | LMXProxyServer.cpp | 10013ee8 | Catch@10013ee3@10013ee3 |
| 52 | 1001da5c | LMXProxyServer.cpp | 10011f5d | Catch@10011f58@10011f58 |
| 53 | 1001da5c | LMXProxyServer.cpp | 10013f6b | Catch@10013f66@10013f66 |
| 54 | 1001da5c | LMXProxyServer.cpp | 10014789 | Catch@10014784@10014784 |
| 55 | 1001da5c | LMXProxyServer.cpp | 10013fe7 | Catch@10013fe2@10013fe2 |
| 56 | 1001da5c | LMXProxyServer.cpp | 1000fbb6 | FUN_1000fb71@1000fb71 |
| 57 | 1001da5c | LMXProxyServer.cpp | 1000fbdb | FUN_1000fb71@1000fb71 |
| 58 | 1001da5c | LMXProxyServer.cpp | 1000fc00 | FUN_1000fb71@1000fb71 |
| 59 | 1001da5c | LMXProxyServer.cpp | 10015719 | FUN_1001556f@1001556f |
| 60 | 1001da5c | LMXProxyServer.cpp | 100157aa | FUN_1001556f@1001556f |
| 61 | 1001da5c | LMXProxyServer.cpp | 100157d7 | FUN_1001556f@1001556f |
| 62 | 1001da5c | LMXProxyServer.cpp | 1001580c | FUN_1001556f@1001556f |
| 63 | 1001da5c | LMXProxyServer.cpp | 10015846 | FUN_1001556f@1001556f |
| 64 | 1001da5c | LMXProxyServer.cpp | 10015879 | FUN_1001556f@1001556f |
| 65 | 1001da5c | LMXProxyServer.cpp | 100158ae | FUN_1001556f@1001556f |
| 66 | 1001da5c | LMXProxyServer.cpp | 100158e1 | FUN_1001556f@1001556f |
| 67 | 1001da5c | LMXProxyServer.cpp | 10015914 | FUN_1001556f@1001556f |
| 68 | 1001da5c | LMXProxyServer.cpp | 10015958 | FUN_1001556f@1001556f |
| 69 | 1001da5c | LMXProxyServer.cpp | 100159c3 | FUN_1001556f@1001556f |
| 70 | 1001da5c | LMXProxyServer.cpp | 10013b20 | FUN_1001399f@1001399f |
| 71 | 1001da5c | LMXProxyServer.cpp | 1001275f | FUN_10012693@10012693 |
| 72 | 1001da5c | LMXProxyServer.cpp | 10012797 | FUN_10012693@10012693 |
| 73 | 1001da5c | LMXProxyServer.cpp | 10014380 | FUN_100142b4@100142b4 |
| 74 | 1001da5c | LMXProxyServer.cpp | 100143ba | FUN_100142b4@100142b4 |
| 75 | 1001da5c | LMXProxyServer.cpp | 1000fbb1 | FUN_1000fb71@1000fb71 |
| 76 | 1001da5c | LMXProxyServer.cpp | 1001275a | FUN_10012693@10012693 |
| 77 | 1001da5c | LMXProxyServer.cpp | 1001437b | FUN_100142b4@100142b4 |
| 78 | 1001da5c | LMXProxyServer.cpp | 10015714 | FUN_1001556f@1001556f |
| 79 | 1001dae0 | CLMXProxyServer::SetBufferedUpdateInterval - hLMXServer | 1000fd08 | FUN_1000fc80@1000fc80 |
| 80 | 1001dae0 | CLMXProxyServer::SetBufferedUpdateInterval - hLMXServer | 1000fd72 | FUN_1000fc80@1000fc80 |
| 81 | 1001db58 | CLMXProxyServer::SetBufferedUpdateInterval - returning E_INVALIDARG | 1000fca7 | FUN_1000fc80@1000fc80 |
| 82 | 1001dce8 | lmxproxy loaded by the Process ProcessName :%s | 10010bd0 | FUN_10010b1f@10010b1f |
| 83 | 1001dee8 | lmxproxy is loaded by internal Process and mxaccess licensing is not required | 100111c0 | FUN_10011185@10011185 |
| 84 | 1001df88 | CLMXProxyServer::AddBufferedItem - Server Handle | 10011448 | FUN_1001121d@1001121d |
| 85 | 1001e0b8 | CLMXProxyServer::AddBufferedItem - Server Handle: | 100112fc | FUN_1001121d@1001121d |
| 86 | 1001e0b8 | CLMXProxyServer::AddBufferedItem - Server Handle: | 10011350 | FUN_1001121d@1001121d |
| 87 | 1001e0b8 | CLMXProxyServer::AddBufferedItem - Server Handle: | 1001139b | FUN_1001121d@1001121d |
| 88 | 1001e188 | CLMXProxyServer::AddBufferedItem - Valid License: | 100112a0 | FUN_1001121d@1001121d |
| 89 | 1001e6d0 | CLMXProxyServer::AddItem - returning HRESULT | 10011e12 | FUN_10011b71@10011b71 |
| 90 | 1001e750 | CLMXProxyServer::AddItem - Server Handle: | 10011c63 | FUN_10011b71@10011b71 |
| 91 | 1001e750 | CLMXProxyServer::AddItem - Server Handle: | 10011cc5 | FUN_10011b71@10011b71 |
| 92 | 1001e750 | CLMXProxyServer::AddItem - Server Handle: | 10011d1e | FUN_10011b71@10011b71 |
| 93 | 1001e7a8 | CLMXProxyServer::AddItem - Valid License: | 10011bfb | FUN_10011b71@10011b71 |
| 94 | 1001e800 | CLMXProxyServer::AddItem2 - returning HRESULT | 100122c0 | FUN_10011f9e@10011f9e |
| 95 | 1001e870 | CLMXProxyServer::AddItem2 - Server Handle: | 1001208f | FUN_10011f9e@10011f9e |
| 96 | 1001e870 | CLMXProxyServer::AddItem2 - Server Handle: | 100120e9 | FUN_10011f9e@10011f9e |
| 97 | 1001e870 | CLMXProxyServer::AddItem2 - Server Handle: | 10012141 | FUN_10011f9e@10011f9e |
| 98 | 1001e8c8 | CLMXProxyServer::AddItem2 - Valid License: | 10012028 | FUN_10011f9e@10011f9e |
| 99 | 1001e920 | CLMXProxyServer::RemoveItem - returning HRESULT | 10012518 | FUN_1001244d@1001244d |
| 100 | 1001e988 | CLMXProxyServer::RemoveItem - Server Handle | 1001248f | FUN_1001244d@1001244d |
| 101 | 1001e9e8 | CLMXProxyServer::Advise - returning HRESULT | 100127d2 | FUN_10012693@10012693 |
| 102 | 1001ea48 | CLMXProxyServer::Advise - Server Handle | 100126d8 | FUN_10012693@10012693 |
| 103 | 1001eaa0 | CLMXProxyServer::UnAdvise - returning HRESULT | 10012a89 | FUN_1001294d@1001294d |
| 104 | 1001eb00 | CLMXProxyServer::UnAdvise - Server Handle | 1001298f | FUN_1001294d@1001294d |
| 105 | 1001eb58 | CLMXProxyServer::Write - returning HRESULT | 10012da9 | FUN_10012c0c@10012c0c |
| 106 | 1001eb58 | CLMXProxyServer::Write - returning HRESULT | 10013483 | FUN_10013280@10013280 |
| 107 | 1001ebb0 | CLMXProxyServer::Write - Server Handle | 10012c7d | FUN_10012c0c@10012c0c |
| 108 | 1001ebb0 | CLMXProxyServer::Write - Server Handle | 10013309 | FUN_10013280@10013280 |
| 109 | 1001ec38 | CLMXProxyServer::WriteVerified - returning HRESULT | 10013105 | FUN_10012f24@10012f24 |
| 110 | 1001ec38 | CLMXProxyServer::WriteVerified - returning HRESULT | 10013824 | FUN_100135fe@100135fe |
| 111 | 1001eca0 | CLMXProxyServer::WriteSecured - Server Handle | 10012fac | FUN_10012f24@10012f24 |
| 112 | 1001eca0 | CLMXProxyServer::WriteSecured - Server Handle | 10013697 | FUN_100135fe@100135fe |
| 113 | 1001ed80 | CLMXProxyServer::AuthenticateUser - returning HRESULT E_INVALIDARG | 10013c04 | FUN_1001399f@1001399f |
| 114 | 1001ee08 | CLMXProxyServer::AuthenticateUser - returning HRESULT S_OK UserId | 10013b92 | FUN_1001399f@1001399f |
| 115 | 1001eeb0 | CLMXProxyServer::AuthenticateUser - Server Handle: | 10013a05 | FUN_1001399f@1001399f |
| 116 | 1001eeb0 | CLMXProxyServer::AuthenticateUser - Server Handle: | 10013a7c | FUN_1001399f@1001399f |
| 117 | 1001ef78 | CLMXProxyServer::Suspend - returning HRESULT | 10013eac | FUN_10013d9c@10013d9c |
| 118 | 1001efd8 | CLMXProxyServer::Suspend - Query for IMxScanOnDemand failed | 10013e67 | FUN_10013d9c@10013d9c |
| 119 | 1001f050 | CLMXProxyServer::Suspend - Server Handle | 10013de2 | FUN_10013d9c@10013d9c |
| 120 | 1001f0a8 | CLMXProxyServer::Activate - returning HRESULT | 10014138 | FUN_10014028@10014028 |
| 121 | 1001f108 | CLMXProxyServer::Activate - Query for IMxScanOnDemand failed | 100140f3 | FUN_10014028@10014028 |
| 122 | 1001f188 | CLMXProxyServer::Activate - Server Handle | 1001406e | FUN_10014028@10014028 |
| 123 | 1001f1e0 | CLMXProxyServer::AdviseSupervisory - returning HRESULT | 100143f7 | FUN_100142b4@100142b4 |
| 124 | 1001f250 | CLMXProxyServer::AdviseSupervisory - Server Handle | 100142f9 | FUN_100142b4@100142b4 |
| 125 | 1001f2b8 | CLMXProxyServer::ArchestrAUserToId - returning HRESULT S_OK, UserId | 100146eb | FUN_10014572@10014572 |
| 126 | 1001f348 | CLMXProxyServer::ArchestrAUserToId - Server Handle: | 100145be | FUN_10014572@10014572 |
| 127 | 1001f348 | CLMXProxyServer::ArchestrAUserToId - Server Handle: | 10014622 | FUN_10014572@10014572 |
| 128 | 1001f3b8 | CLMXProxyServer::ArchestrAUserToId - returning HRESULT E_INVALIDARG for invalid Server Handle | 10014748 | FUN_10014572@10014572 |
| 129 | 1001f4f0 | CLMXProxyServer::Unregister - returning HRESULT | 10015263 | FUN_10015171@10015171 |
| 130 | 1001f558 | CLMXProxyServer::Unregister - Server Handle | 100151ab | FUN_10015171@10015171 |
| 131 | 1001f5b8 | CLMXProxyServer::Register - returning HRESULT | 10015a9d | FUN_1001556f@1001556f |
| 132 | 1001f640 | Multiple Threads calling CLMXProxyServer::Register() - not allowed. | 10015974 | FUN_1001556f@1001556f |
| 133 | 1001f6e8 | CLMXProxyServer::Register - Unregistering existing Client app | 1001565e | FUN_1001556f@1001556f |
| 134 | 1001f768 | CLMXProxyServer::Register - ClientName | 100155ec | FUN_1001556f@1001556f |
| 135 | 1001f7b8 | CLMXProxyServer::Register - Client name NULL - returning E_POINTER HRESULT | 100155ab | FUN_1001556f@1001556f |
| 136 | 1001f888 | CProxy_ILMXProxyServerEvents::Fire_OnDataChange firing event - Server Handle | 10016083 | FUN_10015f72@10015f72 |
| 137 | 1001f968 | CProxy_ILMXProxyServerEvents::Fire_OnWriteComplete firing event - Server Handle | 100161f5 | FUN_1001611f@1001611f |
| 138 | 1001fa10 | CProxy_ILMXProxyServerEvents::Fire_OperationComplete firing event - Server Handle | 10016344 | FUN_10016271@10016271 |
| 139 | 1001fab8 | CProxy_ILMXProxyServerEvents2::Fire_OnBufferedDataChange firing event - Server Handle | 100164d1 | FUN_100163c0@100163c0 |
| 140 | 1001fc40 | Fire_OnDataChange - threw an unknown exception | 100169a9 | Catch@10016992@10016992 |
| 141 | 1001fc40 | Fire_OnDataChange - threw an unknown exception | 10016b27 | Catch@10016b10@10016b10 |
| 142 | 1001fed8 | Fire_OnWriteComplete - threw an unknown exception | 10016cea | Catch@10016cd3@10016cd3 |
| 143 | 10027c40 | LMXProxy.DLL | 10027bfc |