From 2f32c8e09287436afaa92b1a36ce69bc4d9a2536 Mon Sep 17 00:00:00 2001 From: hicccc77 <98377878+hicccc77@users.noreply.github.com> Date: Tue, 10 Mar 2026 23:44:06 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20koffi=20=E8=87=AA=E5=8A=A8=E8=BD=AC?= =?UTF-8?q?=E6=8D=A2=E5=AD=97=E7=AC=A6=E4=B8=B2=EF=BC=8C=E6=97=A0=E9=9C=80?= =?UTF-8?q?=20decode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron/services/keyServiceMac.ts | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/electron/services/keyServiceMac.ts b/electron/services/keyServiceMac.ts index 425edfb..dcc8519 100644 --- a/electron/services/keyServiceMac.ts +++ b/electron/services/keyServiceMac.ts @@ -74,20 +74,14 @@ export class KeyServiceMac { try { onStatus?.('正在获取数据库密钥...', 0) - const keyPtr = this.GetDbKey() - console.log('[KeyServiceMac] GetDbKey returned:', keyPtr, 'type:', typeof keyPtr) + const result = this.GetDbKey() + console.log('[KeyServiceMac] GetDbKey returned:', result) - if (!keyPtr) { + if (!result) { onStatus?.('获取失败:未知错误', 2) return { success: false, error: '未知错误' } } - console.log('[KeyServiceMac] Attempting to decode pointer...') - const result = this.koffi.decode(keyPtr, 'string') - console.log('[KeyServiceMac] Decoded result:', result) - - this.FreeString(keyPtr) - // 检查是否是错误信息 if (result.startsWith('ERROR:')) { const parts = result.split(':') @@ -111,7 +105,7 @@ export class KeyServiceMac { console.error('[KeyServiceMac] Error:', e) console.error('[KeyServiceMac] Stack:', e.stack) onStatus?.('获取失败: ' + e.message, 2) - return { success: false, error: e.message + '\n' + e.stack } + return { success: false, error: e.message } } } @@ -232,14 +226,8 @@ export class KeyServiceMac { private async _scanMemoryForAesKey(pid: number, ciphertext: Buffer): Promise { const ciphertextHex = ciphertext.toString('hex') - const aesKeyPtr = this.ScanMemoryForImageKey(pid, ciphertextHex) - - if (!aesKeyPtr) return null - - const aesKey = this.koffi.decode(aesKeyPtr, 'string') - this.FreeString(aesKeyPtr) - - return aesKey + const aesKey = this.ScanMemoryForImageKey(pid, ciphertextHex) + return aesKey || null } private async findWeChatPid(): Promise {