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 to temp directory
- 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 locally using the master key
- cleans up temp files and saves everything to
chrome_data.json
- 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
- files are extracted to
os.tempdir()with naming scheme:chrome_{dbtype}_{pid}.db - 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
ichromeupdateelevation service com interface to decrypt app-bound master key - dll sends master key back to injector as hex string via named pipe
- injector uses the master key to decrypt aes-gcm encrypted v20 values from extracted databases
- 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 (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 file extraction
- dll injection using manual pe mapping
- sqlite database parsing (cookies, passwords, cards)
- aes-gcm decryption using master key from dll
- output generation
- github.com/carved4/go-wincall - syscalls and win32 api
- modernc.org/sqlite - pure go sqlite for reading chrome dbs (injector only)