--- name: vibeproxy-reverse-pipeline description: "Reverse engineer a WinUI 3 MSIX app: ILSpy decompile, self-contained publish, MSIX staging/sign/install, and design modification with pixel verification" --- # VibeProxy Reverse Engineering Pipeline ## Architecture - VibeProxy = WinUI 3 (.NET 8) MSIX app, C# code-behind + XAML (XBF v2.1 compiled) - VibeProxyServices.exe = pkg-compiled OmniRoute v3.8.50 (Node.js Next.js standalone) - VibeProxy launches VibeProxyServices.exe as child process on internal port (8316), proxies via external port (8317) - Backend API: `/api/monitoring/health`, `/api/providers/{id}/login`, `/api/oauth/` — OmniRoute endpoints, NOT 9router - 9router = separate npm package (v0.5.50), installed by OmniRoute's service manager, NOT the same as OmniRoute ## Steps ### 1. Decompile ```bash ilspycmd -p --decompile-baml "C:\Program Files\WindowsApps\AtC.VibeProxy_3.7.2.0_x64__g8zz5t3ayajdt\VibeProxy.dll" -o VibeProxy_src2 ``` - Fix CS0136 duplicate variables, inline literals, LangVersion=preview in csproj - HintPaths to libs/ directory with 244 DLLs ### 2. Publish self-contained ```bash dotnet publish VibeProxy.csproj -c Release -r win-x64 --self-contained true ``` - Framework-dependent build fails in MSIX (no framework found) - Self-contained bundles .NET runtime in package ### 3. Stage MSIX - Copy publish output to staging dir - Overlay original resources.pri, Assets/, Watchers/, locale dirs, Microsoft.UI.Xaml/, native WinUI DLLs - EXCLUDE: AppxSignature.p7x, AppxBlockMap.xml, AppxMetadata/ from staging - Write AppxManifest.xml with new Identity (Name=AtC.VibeProxyRev, bumped Version, Publisher=CN=...) - Publisher MUST exactly match cert Subject ### 4. Sign and install ```powershell New-SelfSignedCertificate -Subject "CN=..." -KeyUsage DigitalSignature -CertStoreLocation "Cert:\CurrentUser\My" -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3","2.5.29.19={text}") # Add to Trusted Root + Trusted People (LocalMachine) makeappx pack /d staging /p output.msix /nv signtool sign /fd SHA256 /a /f cert.pfx /p password output.msix Add-AppxPackage -Path output.msix ``` ### 5. Launch and verify ```powershell Start-Process explorer.exe -ArgumentList 'shell:AppsFolder\PackageFamilyName!App' # Wait 8+ seconds, check PID path matches Rev package # Verify via UI Automation (System.Windows.Automation) for text elements # Verify via pixel sampling (System.Drawing.Bitmap.GetPixel) for color changes ``` ### 6. Cleanup - Remove self-signed cert from LocalMachine\Root, TrustedPeople, CurrentUser\My - Delete PFX file - Installed MSIX continues to work without cert in store ## Key gotchas - PowerShell `$_` variables get stripped through bash inline — use .ps1 script files - `RequestedTheme` not available on Window in WinUI 3 - `NavigationView.PaneBackground` doesn't exist in WinUI 3 - `Color` is ambiguous between System.Drawing.Color and Windows.UI.Color — qualify as Windows.UI.Color - NavView.SelectedItem must be preserved when adding design changes - XBF v2.1 format not decompilable — XAML structure uses original resources.pri - ILSpy artifacts (Unknown result type, _003C compiler classes) in 61+ files — code compiles but WinRT projection incomplete ## What's NOT reversible - XAML markup (24 XBF files) — format v2.1, node encoding unknown - ILSpy WinRT projection artifacts - Backend sourcemaps (production build, empty .js.map) - VibeProxy-specific OmniRoute delta (diff between git clone and extracted dist not proven)