remote dll injection into chrome to extract cookies and passwords via the chrome elevator com interface. this works for v20 cookies/passwords (app bound encryption), for prior versions just call cryptunprotect as curr user
- scans all chrome.exe processes for open handles to database files (cookies, login data, web data)
- identifies which chrome process owns the database handles
- duplicates the handles and extracts locked database files directly into memory
- downloads the payload dll from https endpoint
- injects the dll into the chrome process that owns the database handles using manual pe mapping
- the dll uses chrome's elevation service to decrypt the master key
- the dll sends the decrypted master key back to the injector via named pipe
- injector decrypts all data in-memory using the master key
- saves everything to
chrome_data.json(no temp files created)
- uses
ntquerysysteminformationto enumerate all chrome processes and their handles - iterates through handles with 100ms timeout per handle to avoid hanging on pipes/blocking handles
- extracts file path from each handle using
ntqueryinformationfile - duplicates target handles with
ntduplicateobjectto read locked database files - early exits once all three target files are found (cookies, login data, web data)
- duplicated handles allow reading sqlite databases that are locked by chrome
- database contents are read directly into memory (no temp files)
- sqlite parsing uses in-memory deserialization via
zombiezen.com/go/sqlite - injector performs all sqlite queries and decryption locally after receiving the master key
- all database processing happens in the injector, not the dll
- dll uses chrome's
ielevatorcom interface to decrypt app-bound master key - dll sends master key back to injector as hex string via named pipe
- injector uses windows cng apis (
bcryptdecrypt) for aes-gcm decryption of v20 values - no go crypto libraries used - all decryption via native windows apis
- supports extraction from all chrome profiles (default, profile 1, profile 2, etc)
cd cmd
go build -o gobound.exe
cd dll/main
go build -buildmode=c-shared -ldflags="-s -w" -trimpath -o gobound.dll
- build the dll:
cd dll/main && go build -buildmode=c-shared -ldflags="-s -w" -trimpath -o gobound.dll - host it at an https endpoint (default pulls latest dll from releases page)
- update the download url in
cmd/main.goto your https url - build the injector:
go build -o gobound.exe cmd/main.go - run
gobound.exewhile chrome is running
chrome_data.json contains:
- master key (base64 and hex)
- cookies (profile, host, name, value)
- passwords (profile, url, username, password)
- cards (profile, name on card, expiration, number)
- only responsible for decrypting the master key via chrome's com interface
- init com → decrypt key → send to pipe → exit
- no database handling, no file operations, no sqlite
- handle scanning and in-memory file extraction
- dll injection using manual pe mapping
- in-memory sqlite database parsing (cookies, passwords, cards)
- aes-gcm decryption using windows cng apis (bcrypt)
- output generation
- github.com/carved4/go-wincall - syscalls and win32 api
- zombiezen.com/go/sqlite - sqlite with in-memory deserialization support