Initial project state: .NET reference, design, Rust port (M0+M1), evidence
rust / build / test / clippy / fmt (push) Has been cancelled
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>
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
frida=C:\Users\dohertj2\AppData\Local\Programs\Python\Python312\Scripts\frida.exe
|
||||
harness=C:\Users\dohertj2\Desktop\mxaccess\src\MxTraceHarness\bin\Release\net481\MxTraceHarness.exe
|
||||
args=-f C:\Users\dohertj2\Desktop\mxaccess\src\MxTraceHarness\bin\Release\net481\MxTraceHarness.exe -l C:\Users\dohertj2\Desktop\mxaccess\analysis\frida\mx-nmx-trace.js -- --scenario=write --tag=TestChildObject.TestStringArray[] --type=string[] --value=A01;B02;C03;D04;E05;F06;G07;H08;I09;J10 --user-id=1 --write-delay-ms=1000 --duration=5 --log=C:\Users\dohertj2\Desktop\mxaccess\captures\033-frida-write-test-string-array\harness.log --client=MxFridaTrace-033-frida-write-test-string-array
|
||||
@@ -0,0 +1 @@
|
||||
exit_code=1
|
||||
@@ -0,0 +1,69 @@
|
||||
____
|
||||
/ _ | Frida 17.9.1 - A world-class dynamic instrumentation toolkit
|
||||
| (_| |
|
||||
> _ | Commands:
|
||||
/_/ |_| help -> Displays the help system
|
||||
. . . . object? -> Display information about 'object'
|
||||
. . . . exit/quit -> Exit
|
||||
. . . .
|
||||
. . . . More info at https://frida.re/docs/home/
|
||||
. . . .
|
||||
. . . . Connected to Local System (id=local)
|
||||
Spawning `C:\Users\dohertj2\Desktop\mxaccess\src\MxTraceHarness\bin\Release\net481\MxTraceHarness.exe --scenario=write --tag=TestChildObject.TestStringArray[] --type=string[] --value=A01;B02;C03;D04;E05;F06;G07;H08;I09;J10 --user-id=1 --write-delay-ms=1000 --duration=5 --log=C:\Users\dohertj2\Desktop\mxaccess\captures\033-frida-write-test-string-array\harness.log --client=MxFridaTrace-033-frida-write-test-string-array`...
|
||||
Spawned `C:\Users\dohertj2\Desktop\mxaccess\src\MxTraceHarness\bin\Release\net481\MxTraceHarness.exe --scenario=write --tag=TestChildObject.TestStringArray[] --type=string[] --value=A01;B02;C03;D04;E05;F06;G07;H08;I09;J10 --user-id=1 --write-delay-ms=1000 --duration=5 --log=C:\Users\dohertj2\Desktop\mxaccess\captures\033-frida-write-test-string-array\harness.log --client=MxFridaTrace-033-frida-write-test-string-array`. Resuming main thread!
|
||||
[Local::MxTraceHarness.exe ]-> {"event":"hook.installed","module":"LmxProxy.dll","name":"CLMXProxyServer.Write.variantA","base":"0x65a40000","rva":"0x12c0c","address":"0x65a52c0c","time":"2026-04-25T06:42:38.496Z"}
|
||||
{"event":"hook.installed","module":"LmxProxy.dll","name":"CLMXProxyServer.Write.variantB","base":"0x65a40000","rva":"0x13280","address":"0x65a53280","time":"2026-04-25T06:42:38.497Z"}
|
||||
{"event":"hook.installed","module":"LmxProxy.dll","name":"CLMXProxyServer.WriteSecured.variantA","base":"0x65a40000","rva":"0x12f24","address":"0x65a52f24","time":"2026-04-25T06:42:38.498Z"}
|
||||
{"event":"hook.installed","module":"LmxProxy.dll","name":"CLMXProxyServer.WriteSecured.variantB","base":"0x65a40000","rva":"0x135fe","address":"0x65a535fe","time":"2026-04-25T06:42:38.498Z"}
|
||||
{"event":"hook.installed","module":"LmxProxy.dll","name":"CLMXProxyServer.AdviseSupervisory","base":"0x65a40000","rva":"0x142b4","address":"0x65a542b4","time":"2026-04-25T06:42:38.499Z"}
|
||||
{"event":"hook.installed","module":"NmxAdptr.dll","name":"CNmxAdapter.TransferData","base":"0x64180000","rva":"0x10996","address":"0x64190996","time":"2026-04-25T06:42:45.646Z"}
|
||||
{"event":"hook.installed","module":"NmxAdptr.dll","name":"CNmxAdapter.ProcessDataReceived","base":"0x64180000","rva":"0x112da","address":"0x641912da","time":"2026-04-25T06:42:45.646Z"}
|
||||
{"event":"hook.installed","module":"NmxAdptr.dll","name":"CNmxAdapter.PutRequest","base":"0x64180000","rva":"0x15169","address":"0x64195169","time":"2026-04-25T06:42:45.647Z"}
|
||||
{"event":"hook.installed","module":"NmxAdptr.dll","name":"CNmxAdapter.PutRequestEx","base":"0x64180000","rva":"0x159c3","address":"0x641959c3","time":"2026-04-25T06:42:45.647Z"}
|
||||
{"event":"call.enter","module":"LmxProxy.dll","name":"CLMXProxyServer.AdviseSupervisory","address":"0x65a542b4","ecx":"0xbff25c","args":["0x62f8ff0","0x1","0x1","0xa1a740a3","0x74794704"],"time":"2026-04-25T06:42:45.754Z"}
|
||||
{"event":"call.leave","module":"LmxProxy.dll","name":"CLMXProxyServer.AdviseSupervisory","retval":"0x0","time":"2026-04-25T06:42:45.755Z"}
|
||||
{"event":"nmx.enter","module":"NmxAdptr.dll","name":"CNmxAdapter.PutRequest","address":"0x64195169","ecx":"0x1","args":["0x94bc738","0x1","0x1","0x1","0x2","0x0","0x13a","0x94c0648","0xbfef20","0xe9fa2b6f"],"candidates":[{"sizeIndex":3,"ptrIndex":4,"size":1,"ptr":"0x2","hex":""},{"sizeIndex":6,"ptrIndex":7,"size":314,"ptr":"0x94c0648","hex":"17 01 00 01 01 00 01 00 00 00 65 00 71 00 0a 00 00 00 00 00 08 6a 00 00 00 40 00 00 81 44 00 65 00 76 00 50 00 6c 00 61 00 74 00 66 00 6f 00 72 00 6d 00 2e 00 47 00 52 00 2e 00 54 00 69 00 6d 00 65 00 4f 00 66 00 4c 00 61 00 73 00 74 00 44 00 65 00 70 00 6c 00 6f 00 79 00 00 00 02 00 00 00 00 00 02 00 00 00 00 00 02 00 00 00 00 00 01 01 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 01 d0 fc 4b 09 1f 01 00 6e 2b 87 df c8 91 19 4c b4 a2 4f 17 fb 1f 9f 80 00 00 01 00 00 00 17 01 00 01 01 00 01 00 00 00 65 00 71 00 0a 00 00 00 00 00 08 76 00 00 00 4c 00 00 81 44 00 65 00 76 00 50 00 6c 00 61 00 74 00 66 00 6f 00 72 00 6d 00 2e 00 47 00 52 00 2e 00 54 00 69 00 6d 00 65 00 4f 00 66 00 4c 00 61 00 73 00 74 00 43 00 6f 00 6e 00 66 00 69 00 67 00 43 00 68 00 61"}],"time":"2026-04-25T06:42:45.879Z"}
|
||||
{"event":"nmx.enter","module":"NmxAdptr.dll","name":"CNmxAdapter.TransferData","address":"0x64190996","ecx":"0x94bc738","args":["0x1","0x1","0x1","0x168","0xa642020","0x1d4aabb2","0x94c0214","0x94c0204","0x641add04","0x0"],"candidates":[{"sizeIndex":3,"ptrIndex":4,"size":360,"ptr":"0xa642020","hex":"01 00 3a 01 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 fb 7f 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 02 00 00 30 75 00 00 17 01 00 01 01 00 01 00 00 00 65 00 71 00 0a 00 00 00 00 00 08 6a 00 00 00 40 00 00 81 44 00 65 00 76 00 50 00 6c 00 61 00 74 00 66 00 6f 00 72 00 6d 00 2e 00 47 00 52 00 2e 00 54 00 69 00 6d 00 65 00 4f 00 66 00 4c 00 61 00 73 00 74 00 44 00 65 00 70 00 6c 00 6f 00 79 00 00 00 02 00 00 00 00 00 02 00 00 00 00 00 02 00 00 00 00 00 01 01 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 01 d0 fc 4b 09 1f 01 00 6e 2b 87 df c8 91 19 4c b4 a2 4f 17 fb 1f 9f 80 00 00 01 00 00 00 17 01 00 01 01 00 01 00 00 00 65 00 71 00 0a 00 00 00 00 00 08 76 00 00 00 4c 00 00 81 44 00 65 00 76 00 50 00 6c 00 61 00 74 00 66 00 6f 00 72 00 6d"}],"time":"2026-04-25T06:42:45.882Z"}
|
||||
{"event":"nmx.leave","module":"NmxAdptr.dll","name":"CNmxAdapter.TransferData","retval":"0x0","time":"2026-04-25T06:42:45.883Z"}
|
||||
{"event":"nmx.leave","module":"NmxAdptr.dll","name":"CNmxAdapter.PutRequest","retval":"0x0","time":"2026-04-25T06:42:45.883Z"}
|
||||
{"event":"nmx.enter","module":"NmxAdptr.dll","name":"CNmxAdapter.PutRequest","address":"0x64195169","ecx":"0x1","args":["0x94bc738","0x1","0x1","0x2","0x2","0x0","0x27","0x958c878","0xbfef20","0xe9fa2b6f"],"candidates":[{"sizeIndex":3,"ptrIndex":4,"size":2,"ptr":"0x2","hex":""},{"sizeIndex":6,"ptrIndex":7,"size":39,"ptr":"0x958c878","hex":"1f 01 00 6e 2b 87 df c8 91 19 4c b4 a2 4f 17 fb 1f 9f 80 00 00 05 00 36 d7 02 00 a5 00 0a 00 5d 4b ff ff 03 00 00 00"}],"time":"2026-04-25T06:42:45.884Z"}
|
||||
{"event":"nmx.enter","module":"NmxAdptr.dll","name":"CNmxAdapter.TransferData","address":"0x64190996","ecx":"0x94bc738","args":["0x1","0x1","0x2","0x55","0xa642020","0x1d4aabb2","0x9599634","0x9599624","0x641add04","0x0"],"candidates":[{"sizeIndex":3,"ptrIndex":4,"size":85,"ptr":"0xa642020","hex":"01 00 27 00 00 00 00 00 00 00 02 00 00 00 01 00 00 00 01 00 00 00 fb 7f 00 00 01 00 00 00 01 00 00 00 02 00 00 00 01 02 00 00 30 75 00 00 1f 01 00 6e 2b 87 df c8 91 19 4c b4 a2 4f 17 fb 1f 9f 80 00 00 05 00 36 d7 02 00 a5 00 0a 00 5d 4b ff ff 03 00 00 00"}],"time":"2026-04-25T06:42:45.886Z"}
|
||||
{"event":"nmx.leave","module":"NmxAdptr.dll","name":"CNmxAdapter.TransferData","retval":"0x0","time":"2026-04-25T06:42:45.886Z"}
|
||||
{"event":"nmx.leave","module":"NmxAdptr.dll","name":"CNmxAdapter.PutRequest","retval":"0x0","time":"2026-04-25T06:42:45.887Z"}
|
||||
{"event":"nmx.enter","module":"NmxAdptr.dll","name":"CNmxAdapter.ProcessDataReceived","address":"0x641912da","ecx":"0x94bc738","args":["0x5c","0x11165a8","0x769ee28","0x76ffedd8","0x94bc744","0x5c","0x11165a8","0x206","0x3","0x7a6edbc"],"candidates":[{"sizeIndex":5,"ptrIndex":6,"size":92,"ptr":"0x11165a8","hex":"01 00 2e 00 00 00 00 00 00 00 02 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 01 00 00 00 01 00 00 00 fb 7f 00 00 02 02 00 00 30 75 00 00 00 00 50 80 01 00 01 00 02 00 30 75 00 00 d7 ef 00 6d e2 dc 01 41 9e 2b 46 ce c4 ca 88 07 6e 2b 87 df c8 91 19 4c b4 a2 4f 17 fb 1f 9f 80"},{"sizeIndex":7,"ptrIndex":8,"size":518,"ptr":"0x3","hex":""},{"sizeIndex":8,"ptrIndex":9,"size":3,"ptr":"0x7a6edbc","hex":"88 ae a6"}],"time":"2026-04-25T06:42:45.906Z"}
|
||||
{"event":"nmx.leave","module":"NmxAdptr.dll","name":"CNmxAdapter.ProcessDataReceived","retval":"0x1","time":"2026-04-25T06:42:45.906Z"}
|
||||
{"event":"nmx.enter","module":"NmxAdptr.dll","name":"CNmxAdapter.ProcessDataReceived","address":"0x641912da","ecx":"0x94bc738","args":["0xf4","0x1152020","0x769ee28","0x76ffedd8","0x94bc744","0xf4","0x1152020","0x206","0x3","0x7a6edbc"],"candidates":[{"sizeIndex":5,"ptrIndex":6,"size":244,"ptr":"0x1152020","hex":"01 00 c6 00 00 00 00 00 00 00 db 7d 04 00 01 00 00 00 01 00 00 00 02 00 00 00 01 00 00 00 01 00 00 00 fb 7f 00 00 01 02 00 00 30 75 00 00 32 01 00 01 00 00 00 d7 ef 00 6d e2 dc 01 41 9e 2b 46 ce c4 ca 88 07 6e 2b 87 df c8 91 19 4c b4 a2 4f 17 fb 1f 9f 80 03 00 00 00 03 00 00 00 c0 00 c0 c7 e2 57 47 bd dc 01 45 00 00 00 00 0a 00 04 00 00 00 09 00 00 00 05 04 00 00 00 00 00 00 00 09 00 00 00 05 04 00 00 00 00 00 00 00 09 00 00 00 05 04 00 00 00 00 00 00 00 09 00 00 00 05 04 00 00 00 00 00 00 00 09 00 00 00 05 04 00 00 00 00 00 00 00 09 00 00 00 05 04 00 00 00 00 00 00 00 09 00 00 00 05 04 00 00 00 00 00 00 00 09 00 00 00 05 04 00 00 00 00 00 00 00 09 00 00 00 05 04 00 00 00 00 00 00 00 09 00 00 00 05 04 00 00 00 00 00 00 00"},{"sizeIndex":7,"ptrIndex":8,"size":518,"ptr":"0x3","hex":""},{"sizeIndex":8,"ptrIndex":9,"size":3,"ptr":"0x7a6edbc","hex":"88 ae a6"}],"time":"2026-04-25T06:42:45.908Z"}
|
||||
{"event":"nmx.leave","module":"NmxAdptr.dll","name":"CNmxAdapter.ProcessDataReceived","retval":"0x1","time":"2026-04-25T06:42:45.908Z"}
|
||||
{"event":"nmx.enter","module":"NmxAdptr.dll","name":"CNmxAdapter.ProcessDataReceived","address":"0x641912da","ecx":"0x94bc738","args":["0x2c2","0x7fcc2f0","0x769ee28","0x76ffedd8","0x94bc744","0x2c2","0x7fcc2f0","0x206","0x3","0x7a6edbc"],"candidates":[{"sizeIndex":5,"ptrIndex":6,"size":706,"ptr":"0x7fcc2f0","hex":"01 00 94 02 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 fb 7f 00 00 02 02 00 00 30 75 00 00 40 1f 50 80 08 a6 00 00 00 40 00 00 91 44 00 65 00 76 00 50 00 6c 00 61 00 74 00 66 00 6f 00 72 00 6d 00 2e 00 47 00 52 00 2e 00 54 00 69 00 6d 00 65 00 4f 00 66 00 4c 00 61 00 73 00 74 00 44 00 65 00 70 00 6c 00 6f 00 79 00 00 00 18 00 00 00 44 00 65 00 76 00 50 00 6c 00 61 00 74 00 66 00 6f 00 72 00 6d 00 00 00 28 00 00 00 47 00 52 00 2e 00 54 00 69 00 6d 00 65 00 4f 00 66 00 4c 00 61 00 73 00 74 00 44 00 65 00 70 00 6c 00 6f 00 79 00 00 00 02 00 00 00 00 00 01 01 00 01 00 01 00 53 f2 9a 00 6a 00 0a 00 5f f1 00 00 01 6c 00 00 00 41 00 6e 00 20 00 69 00 6e 00 74 00 65 00 72 00 6e 00 61 00 6c 00 20 00 65 00 72 00 72 00 6f"},{"sizeIndex":7,"ptrIndex":8,"size":518,"ptr":"0x3","hex":""},{"sizeIndex":8,"ptrIndex":9,"size":3,"ptr":"0x7a6edbc","hex":"88 ae a6"}],"time":"2026-04-25T06:42:45.910Z"}
|
||||
{"event":"nmx.leave","module":"NmxAdptr.dll","name":"CNmxAdapter.ProcessDataReceived","retval":"0x1","time":"2026-04-25T06:42:45.911Z"}
|
||||
{"event":"nmx.enter","module":"NmxAdptr.dll","name":"CNmxAdapter.ProcessDataReceived","address":"0x641912da","ecx":"0x94bc738","args":["0x97","0x1159758","0x769ee28","0x76ffedd8","0x94bc744","0x97","0x1159758","0x206","0x3","0x7a6edbc"],"candidates":[{"sizeIndex":5,"ptrIndex":6,"size":151,"ptr":"0x1159758","hex":"01 00 69 00 00 00 00 00 00 00 45 fb 08 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 fb 7f 00 00 01 02 00 00 30 75 00 00 32 01 00 02 00 00 00 41 b3 b4 fc 67 66 8e 47 a7 e8 3e d3 d8 05 c4 d5 6e 2b 87 df c8 91 19 4c b4 a2 4f 17 fb 1f 9f 80 01 00 00 00 03 00 00 00 c0 00 20 2e 5a 46 28 d3 dc 01 06 0a 00 00 00 00 a0 41 c3 55 bd dc 01 00 00 02 00 00 00 03 00 00 00 c0 00 80 18 5b 46 28 d3 dc 01 06 0a 00 00 00 80 c1 75 25 a5 bd dc 01 00 00"},{"sizeIndex":7,"ptrIndex":8,"size":518,"ptr":"0x3","hex":""},{"sizeIndex":8,"ptrIndex":9,"size":3,"ptr":"0x7a6edbc","hex":"88 ae a6"}],"time":"2026-04-25T06:42:45.912Z"}
|
||||
{"event":"nmx.leave","module":"NmxAdptr.dll","name":"CNmxAdapter.ProcessDataReceived","retval":"0x1","time":"2026-04-25T06:42:45.913Z"}
|
||||
{"event":"nmx.enter","module":"NmxAdptr.dll","name":"CNmxAdapter.TransferData","address":"0x64190996","ecx":"0x94bc738","args":["0x1","0x1","0x2","0x2e","0xa642020","0x1d4aa85e","0x94b7010","0x0","0x0","0x0"],"candidates":[{"sizeIndex":3,"ptrIndex":4,"size":46,"ptr":"0xa642020","hex":"01 00 00 00 00 00 00 00 00 00 db 7d 04 00 01 00 00 00 01 00 00 00 fb 7f 00 00 01 00 00 00 01 00 00 00 02 00 00 00 02 02 00 00 30 75 00 00"}],"time":"2026-04-25T06:42:46.010Z"}
|
||||
{"event":"nmx.leave","module":"NmxAdptr.dll","name":"CNmxAdapter.TransferData","retval":"0x0","time":"2026-04-25T06:42:46.011Z"}
|
||||
{"event":"nmx.enter","module":"NmxAdptr.dll","name":"CNmxAdapter.TransferData","address":"0x64190996","ecx":"0x94bc738","args":["0x1","0x1","0x1","0x2e","0xa642020","0x1d4aa85e","0x94b7010","0x0","0x0","0x0"],"candidates":[{"sizeIndex":3,"ptrIndex":4,"size":46,"ptr":"0xa642020","hex":"01 00 00 00 00 00 00 00 00 00 45 fb 08 00 01 00 00 00 01 00 00 00 fb 7f 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 02 00 00 30 75 00 00"}],"time":"2026-04-25T06:42:46.012Z"}
|
||||
{"event":"nmx.leave","module":"NmxAdptr.dll","name":"CNmxAdapter.TransferData","retval":"0x0","time":"2026-04-25T06:42:46.012Z"}
|
||||
{"event":"call.enter","module":"LmxProxy.dll","name":"CLMXProxyServer.Write.variantA","address":"0x65a52c0c","ecx":"0xbff250","args":["0x62f8ff0","0x1","0x1","0x2008","0x0","0x7fc1ee8","0x0","0x1","0xa1a740a3","0x74794704"],"time":"2026-04-25T06:42:46.795Z"}
|
||||
{"event":"call.leave","module":"LmxProxy.dll","name":"CLMXProxyServer.Write.variantA","retval":"0x0","time":"2026-04-25T06:42:46.796Z"}
|
||||
{"event":"nmx.enter","module":"NmxAdptr.dll","name":"CNmxAdapter.PutRequest","address":"0x64195169","ecx":"0x1","args":["0x94bc738","0x1","0x1","0x2","0x2","0x0","0x100","0x9599dc0","0xbfef20","0xe9fa2b6f"],"candidates":[{"sizeIndex":3,"ptrIndex":4,"size":2,"ptr":"0x2","hex":""},{"sizeIndex":6,"ptrIndex":7,"size":256,"ptr":"0x9599dc0","hex":"37 01 00 05 00 36 d7 02 00 a5 00 0a 00 5d 4b ff ff 45 00 00 00 00 0a 00 04 00 00 00 11 00 00 00 05 0c 00 00 00 08 00 00 00 41 00 30 00 31 00 00 00 11 00 00 00 05 0c 00 00 00 08 00 00 00 42 00 30 00 32 00 00 00 11 00 00 00 05 0c 00 00 00 08 00 00 00 43 00 30 00 33 00 00 00 11 00 00 00 05 0c 00 00 00 08 00 00 00 44 00 30 00 34 00 00 00 11 00 00 00 05 0c 00 00 00 08 00 00 00 45 00 30 00 35 00 00 00 11 00 00 00 05 0c 00 00 00 08 00 00 00 46 00 30 00 36 00 00 00 11 00 00 00 05 0c 00 00 00 08 00 00 00 47 00 30 00 37 00 00 00 11 00 00 00 05 0c 00 00 00 08 00 00 00 48 00 30 00 38 00 00 00 11 00 00 00 05 0c 00 00 00 08 00 00 00 49 00 30 00 39 00 00 00 11 00 00 00 05 0c 00 00 00 08 00 00 00 4a 00 31 00 30 00 00 00 ff ff 00 00 00 00 00 00 00 00 c3 da c6 08 01 00 00 00"}],"time":"2026-04-25T06:42:46.953Z"}
|
||||
{"event":"nmx.enter","module":"NmxAdptr.dll","name":"CNmxAdapter.TransferData","address":"0x64190996","ecx":"0x94bc738","args":["0x1","0x1","0x2","0x12e","0xa642020","0x1d4aabb2","0x94b77f4","0x94b77e4","0x641add04","0x0"],"candidates":[{"sizeIndex":3,"ptrIndex":4,"size":302,"ptr":"0xa642020","hex":"01 00 00 01 00 00 00 00 00 00 03 00 00 00 01 00 00 00 01 00 00 00 fb 7f 00 00 01 00 00 00 01 00 00 00 02 00 00 00 01 02 00 00 30 75 00 00 37 01 00 05 00 36 d7 02 00 a5 00 0a 00 5d 4b ff ff 45 00 00 00 00 0a 00 04 00 00 00 11 00 00 00 05 0c 00 00 00 08 00 00 00 41 00 30 00 31 00 00 00 11 00 00 00 05 0c 00 00 00 08 00 00 00 42 00 30 00 32 00 00 00 11 00 00 00 05 0c 00 00 00 08 00 00 00 43 00 30 00 33 00 00 00 11 00 00 00 05 0c 00 00 00 08 00 00 00 44 00 30 00 34 00 00 00 11 00 00 00 05 0c 00 00 00 08 00 00 00 45 00 30 00 35 00 00 00 11 00 00 00 05 0c 00 00 00 08 00 00 00 46 00 30 00 36 00 00 00 11 00 00 00 05 0c 00 00 00 08 00 00 00 47 00 30 00 37 00 00 00 11 00 00 00 05 0c 00 00 00 08 00 00 00 48 00 30 00 38 00 00 00 11 00 00 00 05 0c 00 00 00 08 00 00 00 49"}],"time":"2026-04-25T06:42:46.955Z"}
|
||||
{"event":"nmx.leave","module":"NmxAdptr.dll","name":"CNmxAdapter.TransferData","retval":"0x0","time":"2026-04-25T06:42:46.955Z"}
|
||||
{"event":"nmx.leave","module":"NmxAdptr.dll","name":"CNmxAdapter.PutRequest","retval":"0x0","time":"2026-04-25T06:42:46.955Z"}
|
||||
{"event":"nmx.enter","module":"NmxAdptr.dll","name":"CNmxAdapter.ProcessDataReceived","address":"0x641912da","ecx":"0x94bc738","args":["0x33","0x7f71998","0x769ee28","0x76ffedd8","0x94bc744","0x33","0x7f71998","0x206","0x3","0x7a6edbc"],"candidates":[{"sizeIndex":5,"ptrIndex":6,"size":51,"ptr":"0x7f71998","hex":"01 00 05 00 00 00 00 00 00 00 03 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 01 00 00 00 01 00 00 00 fb 7f 00 00 02 02 00 00 30 75 00 00 00 00 50 80 00"},{"sizeIndex":7,"ptrIndex":8,"size":518,"ptr":"0x3","hex":""},{"sizeIndex":8,"ptrIndex":9,"size":3,"ptr":"0x7a6edbc","hex":"88 ae a6"}],"time":"2026-04-25T06:42:47.005Z"}
|
||||
{"event":"nmx.leave","module":"NmxAdptr.dll","name":"CNmxAdapter.ProcessDataReceived","retval":"0x1","time":"2026-04-25T06:42:47.006Z"}
|
||||
{"event":"nmx.enter","module":"NmxAdptr.dll","name":"CNmxAdapter.ProcessDataReceived","address":"0x641912da","ecx":"0x94bc738","args":["0x130","0x1152020","0x769ee28","0x76ffedd8","0x94bc744","0x130","0x1152020","0x206","0x3","0x7a6edbc"],"candidates":[{"sizeIndex":5,"ptrIndex":6,"size":304,"ptr":"0x1152020","hex":"01 00 02 01 00 00 00 00 00 00 de 7d 04 00 01 00 00 00 01 00 00 00 02 00 00 00 01 00 00 00 01 00 00 00 fb 7f 00 00 01 02 00 00 30 75 00 00 33 01 00 01 00 00 00 d7 ef 00 6d e2 dc 01 41 9e 2b 46 ce c4 ca 88 07 03 00 00 00 c0 00 c0 a9 40 ba 7e d4 dc 01 45 00 00 00 00 0a 00 04 00 00 00 11 00 00 00 05 0c 00 00 00 08 00 00 00 41 00 30 00 31 00 00 00 11 00 00 00 05 0c 00 00 00 08 00 00 00 42 00 30 00 32 00 00 00 11 00 00 00 05 0c 00 00 00 08 00 00 00 43 00 30 00 33 00 00 00 11 00 00 00 05 0c 00 00 00 08 00 00 00 44 00 30 00 34 00 00 00 11 00 00 00 05 0c 00 00 00 08 00 00 00 45 00 30 00 35 00 00 00 11 00 00 00 05 0c 00 00 00 08 00 00 00 46 00 30 00 36 00 00 00 11 00 00 00 05 0c 00 00 00 08 00 00 00 47 00 30 00 37 00 00 00 11 00 00 00 05 0c 00 00 00 08 00 00 00 48 00"},{"sizeIndex":7,"ptrIndex":8,"size":518,"ptr":"0x3","hex":""},{"sizeIndex":8,"ptrIndex":9,"size":3,"ptr":"0x7a6edbc","hex":"88 ae a6"}],"time":"2026-04-25T06:42:47.007Z"}
|
||||
{"event":"nmx.leave","module":"NmxAdptr.dll","name":"CNmxAdapter.ProcessDataReceived","retval":"0x1","time":"2026-04-25T06:42:47.008Z"}
|
||||
{"event":"nmx.enter","module":"NmxAdptr.dll","name":"CNmxAdapter.TransferData","address":"0x64190996","ecx":"0x94bc738","args":["0x1","0x1","0x2","0x2e","0xa642020","0x1d4aa85e","0x94b7010","0x0","0x0","0x0"],"candidates":[{"sizeIndex":3,"ptrIndex":4,"size":46,"ptr":"0xa642020","hex":"01 00 00 00 00 00 00 00 00 00 de 7d 04 00 01 00 00 00 01 00 00 00 fb 7f 00 00 01 00 00 00 01 00 00 00 02 00 00 00 02 02 00 00 30 75 00 00"}],"time":"2026-04-25T06:42:47.113Z"}
|
||||
{"event":"nmx.leave","module":"NmxAdptr.dll","name":"CNmxAdapter.TransferData","retval":"0x0","time":"2026-04-25T06:42:47.114Z"}
|
||||
{"event":"nmx.enter","module":"NmxAdptr.dll","name":"CNmxAdapter.PutRequest","address":"0x64195169","ecx":"0x1","args":["0x94bc738","0x1","0x1","0x1","0x2","0x0","0x3a","0x958c710","0xbff0dc","0xe9fa2aa3"],"candidates":[{"sizeIndex":3,"ptrIndex":4,"size":1,"ptr":"0x2","hex":""},{"sizeIndex":6,"ptrIndex":7,"size":58,"ptr":"0x958c710","hex":"21 01 00 6e 2b 87 df c8 91 19 4c b4 a2 4f 17 fb 1f 9f 80 01 00 53 f2 9a 00 6a 00 0a 00 5f f1 00 00 01 00 00 00 22 01 00 01 00 53 f2 9a 00 6b 00 0a 00 87 3a 00 00 02 00 00 00"}],"time":"2026-04-25T06:42:51.838Z"}
|
||||
{"event":"nmx.enter","module":"NmxAdptr.dll","name":"CNmxAdapter.TransferData","address":"0x64190996","ecx":"0x94bc738","args":["0x1","0x1","0x1","0x68","0xa642020","0x1d4aa9ee","0x94b77f4","0x94b77e4","0x641add04","0x64"],"candidates":[{"sizeIndex":3,"ptrIndex":4,"size":104,"ptr":"0xa642020","hex":"01 00 3a 00 00 00 00 00 00 00 04 00 00 00 01 00 00 00 01 00 00 00 fb 7f 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 02 00 00 30 75 00 00 21 01 00 6e 2b 87 df c8 91 19 4c b4 a2 4f 17 fb 1f 9f 80 01 00 53 f2 9a 00 6a 00 0a 00 5f f1 00 00 01 00 00 00 22 01 00 01 00 53 f2 9a 00 6b 00 0a 00 87 3a 00 00 02 00 00 00"}],"time":"2026-04-25T06:42:51.839Z"}
|
||||
{"event":"nmx.leave","module":"NmxAdptr.dll","name":"CNmxAdapter.TransferData","retval":"0x0","time":"2026-04-25T06:42:51.840Z"}
|
||||
{"event":"nmx.leave","module":"NmxAdptr.dll","name":"CNmxAdapter.PutRequest","retval":"0x0","time":"2026-04-25T06:42:51.841Z"}
|
||||
{"event":"nmx.enter","module":"NmxAdptr.dll","name":"CNmxAdapter.PutRequest","address":"0x64195169","ecx":"0x1","args":["0x94bc738","0x1","0x1","0x2","0x2","0x0","0x25","0x958c908","0xbff0dc","0xe9fa2aa3"],"candidates":[{"sizeIndex":3,"ptrIndex":4,"size":2,"ptr":"0x2","hex":""},{"sizeIndex":6,"ptrIndex":7,"size":37,"ptr":"0x958c908","hex":"21 01 00 6e 2b 87 df c8 91 19 4c b4 a2 4f 17 fb 1f 9f 80 05 00 36 d7 02 00 a5 00 0a 00 5d 4b ff ff 03 00 00 00"}],"time":"2026-04-25T06:42:51.842Z"}
|
||||
{"event":"nmx.enter","module":"NmxAdptr.dll","name":"CNmxAdapter.TransferData","address":"0x64190996","ecx":"0x94bc738","args":["0x1","0x1","0x2","0x53","0xa642020","0x1d4aa9ee","0x9599a8c","0x9599a7c","0x641add04","0x64"],"candidates":[{"sizeIndex":3,"ptrIndex":4,"size":83,"ptr":"0xa642020","hex":"01 00 25 00 00 00 00 00 00 00 05 00 00 00 01 00 00 00 01 00 00 00 fb 7f 00 00 01 00 00 00 01 00 00 00 02 00 00 00 01 02 00 00 30 75 00 00 21 01 00 6e 2b 87 df c8 91 19 4c b4 a2 4f 17 fb 1f 9f 80 05 00 36 d7 02 00 a5 00 0a 00 5d 4b ff ff 03 00 00 00"}],"time":"2026-04-25T06:42:51.843Z"}
|
||||
{"event":"nmx.leave","module":"NmxAdptr.dll","name":"CNmxAdapter.TransferData","retval":"0x0","time":"2026-04-25T06:42:51.843Z"}
|
||||
{"event":"nmx.leave","module":"NmxAdptr.dll","name":"CNmxAdapter.PutRequest","retval":"0x0","time":"2026-04-25T06:42:51.843Z"}
|
||||
{"event":"nmx.enter","module":"NmxAdptr.dll","name":"CNmxAdapter.ProcessDataReceived","address":"0x641912da","ecx":"0x94bc738","args":["0x2e","0x1159758","0x769ee28","0x76ffedd8","0x94bc744","0x2e","0x1159758","0x206","0x3","0x7a6edbc"],"candidates":[{"sizeIndex":5,"ptrIndex":6,"size":46,"ptr":"0x1159758","hex":"01 00 00 00 00 00 00 00 00 00 05 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 01 00 00 00 01 00 00 00 fb 7f 00 00 02 02 00 00 30 75 00 00"},{"sizeIndex":7,"ptrIndex":8,"size":518,"ptr":"0x3","hex":""},{"sizeIndex":8,"ptrIndex":9,"size":3,"ptr":"0x7a6edbc","hex":"88 ae a6"}],"time":"2026-04-25T06:42:51.846Z"}
|
||||
{"event":"nmx.leave","module":"NmxAdptr.dll","name":"CNmxAdapter.ProcessDataReceived","retval":"0x1","time":"2026-04-25T06:42:51.847Z"}
|
||||
Process terminated
|
||||
|
||||
Thank you for using Frida!
|
||||
@@ -0,0 +1,19 @@
|
||||
2026-04-25T06:42:38.4044576+00:00 harness.start {"Scenario":"write","ClientName":"MxFridaTrace-033-frida-write-test-string-array","Tags":["TestChildObject.TestStringArray[]"],"WriteType":"string[]","WriteValue":"A01;B02;C03;D04;E05;F06;G07;H08;I09;J10","WriteValues":[],"UserId":1,"WriteDelayMilliseconds":1000,"WriteIntervalMilliseconds":500,"DurationSeconds":5,"ProcessBitness":"x86","Runtime":"4.0.30319.42000"}
|
||||
2026-04-25T06:42:45.3849048+00:00 mx.register.begin {"ClientName":"MxFridaTrace-033-frida-write-test-string-array"}
|
||||
2026-04-25T06:42:45.7501963+00:00 mx.register.end {"SessionHandle":1}
|
||||
2026-04-25T06:42:45.7512156+00:00 mx.additem.begin {"Tag":"TestChildObject.TestStringArray[]"}
|
||||
2026-04-25T06:42:45.7521542+00:00 mx.additem.end {"Tag":"TestChildObject.TestStringArray[]","ItemHandle":1}
|
||||
2026-04-25T06:42:45.7531803+00:00 mx.advise-supervisory.begin {"Tag":"TestChildObject.TestStringArray[]","ItemHandle":1}
|
||||
2026-04-25T06:42:45.7551420+00:00 mx.advise-supervisory.end {"Tag":"TestChildObject.TestStringArray[]","ItemHandle":1}
|
||||
2026-04-25T06:42:46.0074007+00:00 mx.event.data-change {"SessionHandle":1,"ItemHandle":1,"Value":{"Type":"System.String[]","Length":10,"Values":["","","","","","","","","",""]},"Quality":192,"Timestamp":{"Type":"System.String","Value":"3/26/2026 1:38:22.908 PM"},"Status":[{"Success":-1,"Category":"MxCategoryOk","Source":"MxSourceRequestingLmx","Detail":0}]}
|
||||
2026-04-25T06:42:46.7923059+00:00 mx.write.begin {"Tag":"TestChildObject.TestStringArray[]","ItemHandle":1,"WriteIndex":0,"Value":{"Type":"System.String[]","Length":10,"Values":["A01","B02","C03","D04","E05","F06","G07","H08","I09","J10"]},"UserId":1}
|
||||
2026-04-25T06:42:46.7963060+00:00 mx.write.end {"Tag":"TestChildObject.TestStringArray[]","ItemHandle":1,"WriteIndex":0}
|
||||
2026-04-25T06:42:47.1129309+00:00 mx.event.data-change {"SessionHandle":1,"ItemHandle":1,"Value":{"Type":"System.String[]","Length":10,"Values":["A01","B02","C03","D04","E05","F06","G07","H08","I09","J10"]},"Quality":192,"Timestamp":{"Type":"System.String","Value":"4/25/2026 2:42:47.004 AM"},"Status":[{"Success":-1,"Category":"MxCategoryOk","Source":"MxSourceRequestingLmx","Detail":0}]}
|
||||
2026-04-25T06:42:47.1168821+00:00 mx.event.write-complete {"SessionHandle":1,"ItemHandle":1,"Status":[{"Success":-1,"Category":"MxCategoryOk","Source":"MxSourceRespondingAutomationObject","Detail":0}]}
|
||||
2026-04-25T06:42:51.8233660+00:00 mx.unadvise.begin {"Tag":"TestChildObject.TestStringArray[]","ItemHandle":1}
|
||||
2026-04-25T06:42:51.8243643+00:00 mx.unadvise.end {"Tag":"TestChildObject.TestStringArray[]","ItemHandle":1}
|
||||
2026-04-25T06:42:51.8243643+00:00 mx.removeitem.begin {"Tag":"TestChildObject.TestStringArray[]","ItemHandle":1}
|
||||
2026-04-25T06:42:51.8243643+00:00 mx.removeitem.end {"Tag":"TestChildObject.TestStringArray[]","ItemHandle":1}
|
||||
2026-04-25T06:42:51.8253029+00:00 mx.unregister.begin {"SessionHandle":1}
|
||||
2026-04-25T06:42:55.7328658+00:00 mx.unregister.end {"SessionHandle":1}
|
||||
2026-04-25T06:42:55.7378647+00:00 harness.stop {}
|
||||
Reference in New Issue
Block a user