You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CLAUDE.md
+15Lines changed: 15 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -42,9 +42,24 @@ go mod tidy
42
42
go mod verify
43
43
```
44
44
45
+
## Chrome ABE Payload (Windows only)
46
+
47
+
Chrome 127+ cookies (v20) decrypt via a C payload reflectively injected into `chrome.exe`. Sources in `crypto/windows/abe_native/`; design in [RFC-010](rfcs/010-chrome-abe-integration.md).
48
+
49
+
```bash
50
+
make payload # build the DLL (needs zig: brew install zig)
51
+
make build-windows # cross-compile hack-browser-data.exe with payload embedded
52
+
make gen-layout # regenerate Go layout constants from bootstrap_layout.h
53
+
make payload-clean # rm crypto/*.bin
54
+
```
55
+
56
+
- Default `go build` links a stub that errors at runtime when ABE is needed — contributors not touching Windows ABE need no zig.
57
+
-`-tags abe_embed` embeds the payload via `//go:embed` (see `crypto/abe_embed_windows.go` / `crypto/abe_stub_windows.go`).
58
+
45
59
## Code Conventions
46
60
47
61
-**Platform code**: use build tags (`_darwin.go`, `_windows.go`, `_linux.go`)
62
+
-**C payload**: all sources in `crypto/windows/abe_native/` are first-party (no vendored C). See RFC-010 §9.2 for why Stephen Fewer's reflective loader was rejected.
48
63
-**Error handling**: `fmt.Errorf("context: %w", err)` for wrapping, never `_ =` to ignore errors
49
64
-**Logging**: `log.Debugf` for record-level diagnostics, `log.Infof` for user-facing progress/status, `log.Warnf` for unexpected conditions. Extract methods should return errors, not log them.
50
65
-**Naming**: follow Go conventions — `Config` not `BrowserConfig`, `Extract` not `BrowsingData`
0 commit comments