mirror of
https://github.com/ttttupup/wxhelper.git
synced 2025-04-20 03:49:17 +08:00
790 lines
23 KiB
C++
790 lines
23 KiB
C++
#ifndef WXHELPER_WECHAT_FUNCTION_H_
|
|
#define WXHELPER_WECHAT_FUNCTION_H_
|
|
#include <vector>
|
|
#include <string>
|
|
|
|
// snsDataMgr
|
|
#define WX_SNS_DATA_MGR_OFFSET 0xc3a500
|
|
// chatRoomMgr
|
|
#define WX_CHAT_ROOM_MGR_OFFSET 0x78d9d0
|
|
// contactMgr
|
|
#define WX_CONTACT_MGR_OFFSET 0x75af30
|
|
// syncMgr
|
|
#define WX_SYNC_MGR_OFFSET 0xa87fd0
|
|
// preDownloadMgr
|
|
#define WX_GET_PRE_DOWNLOAD_MGR_OFFSET 0x80fe50
|
|
// chatMgr
|
|
#define WX_CHAT_MGR_OFFSET 0x7931b0
|
|
// videoMgr
|
|
#define WX_VIDEO_MGR_OFFSET 0x82a560
|
|
// patMgr
|
|
#define WX_PAT_MGR_OFFSET 0x932470
|
|
// searchContactMgr
|
|
#define WX_SEARCH_CONTACT_MGR_OFFSET 0xa6d860
|
|
// appMsgMgr
|
|
#define WX_APP_MSG_MGR_OFFSET 0x76b8c0
|
|
// sendMessageMgr
|
|
#define WX_SEND_MESSAGE_MGR_OFFSET 0x768be0
|
|
// shareRecordMgr
|
|
#define WX_SHARE_RECORD_MGR_OFFSET 0x78d5f0
|
|
|
|
|
|
// setChatMsgValue
|
|
#define WX_INIT_CHAT_MSG_OFFSET 0xf5b3f0
|
|
|
|
// chatMsg
|
|
#define WX_NEW_CHAT_MSG_OFFSET 0x76fab0
|
|
#define WX_FREE_CHAT_MSG_OFFSET 0x7573f0
|
|
// #define WX_FREE_CHAT_MSG_2_OFFSET 0x6f4ea0
|
|
#define WX_FREE_CHAT_MSG_INSTANCE_COUNTER_OFFSET 0x7578c0
|
|
|
|
|
|
//sns
|
|
#define WX_SNS_GET_FIRST_PAGE_OFFSET 0x14e36e0
|
|
#define WX_SNS_GET_NEXT_PAGE_OFFSET 0x14e3780
|
|
|
|
//chat room
|
|
#define WX_GET_CHAT_ROOM_DETAIL_INFO_OFFSET 0xbdef30
|
|
// chatRoomInfo
|
|
#define WX_NEW_CHAT_ROOM_INFO_OFFSET 0xe9abd0
|
|
#define WX_FREE_CHAT_ROOM_INFO_OFFSET 0xe9aed0
|
|
#define WX_DEL_CHAT_ROOM_MEMBER_OFFSET 0xbd3140
|
|
#define WX_ADD_MEMBER_TO_CHAT_ROOM_OFFSET 0xbd2c60
|
|
|
|
|
|
// chatRoom
|
|
#define WX_INIT_CHAT_ROOM_OFFSET 0xe98820
|
|
#define WX_FREE_CHAT_ROOM_OFFSET 0xe98a40
|
|
|
|
#define WX_GET_MEMBER_FROM_CHAT_ROOM_OFFSET 0xbe0100
|
|
#define WX_MOD_CHAT_ROOM_MEMBER_NICK_NAME_OFFSET 0xbda520
|
|
|
|
#define WX_TOP_MSG_OFFSET 0xbe26e0
|
|
#define WX_REMOVE_TOP_MSG_OFFSET 0xbe24c0
|
|
|
|
#define WX_GET_MEMBER_NICKNAME_OFFSET 0xbe0290
|
|
|
|
#define WX_FREE_CONTACT_OFFSET 0xea8800
|
|
|
|
// wcpayinfo
|
|
#define WX_NEW_WCPAYINFO_OFFSET 0x7b3900
|
|
#define WX_FREE_WCPAYINFO_OFFSET 0x79cd00
|
|
#define WX_CONFIRM_RECEIPT_OFFSET 0x15e41d0
|
|
|
|
|
|
//contact
|
|
#define WX_CONTACT_GET_LIST_OFFSET 0xc09890
|
|
#define WX_CONTACT_DEL_OFFSET 0xb9b3b0
|
|
|
|
#define WX_SET_VALUE_OFFSET 0x1f80900
|
|
#define WX_DO_DEL_CONTACT_OFFSET 0xca6480
|
|
#define WX_GET_CONTACT_OFFSET 0xc05ca0
|
|
#define WX_DO_VERIFY_USER_OFFSET 0xc02f90
|
|
#define WX_VERIFY_MSG_OFFSET 0xf5b2f0
|
|
#define WX_VERIFY_OK_OFFSET 0xa19940
|
|
#define WX_NEW_ADD_FRIEND_HELPER_OFFSET 0xa18ac0
|
|
#define WX_FREE_ADD_FRIEND_HELPER_OFFSET 0xa18be0
|
|
|
|
// pushAttachTask
|
|
|
|
|
|
#define WX_PUSH_ATTACH_TASK_OFFSET 0x82c880
|
|
|
|
#define WX_GET_MGR_BY_PREFIX_LOCAL_ID_OFFSET 0xbc11d0
|
|
#define WX_APP_MSG_INFO_OFFSET 0x7b3d20
|
|
#define WX_GET_APP_MSG_XML_OFFSET 0xe628a0
|
|
#define WX_FREE_APP_MSG_INFO_OFFSET 0x79e3b0
|
|
#define WX_PUSH_THUMB_TASK_OFFSET 0x82c780
|
|
#define WX_DOWNLOAD_VIDEO_IMG_OFFSET 0xd46c30
|
|
|
|
|
|
// revoke
|
|
#define WX_REVOKE_MSG_OFFSET 0xbb6dc0
|
|
|
|
|
|
// pat
|
|
#define WX_SEND_PAT_MSG_OFFSET 0x1422f30
|
|
#define WX_RET_OFFSET 0x1D59DB1
|
|
|
|
|
|
//search hook
|
|
#define WX_SEARCH_CONTACT_ERROR_CODE_HOOK_OFFSET 0xe17ed4
|
|
#define WX_SEARCH_CONTACT_ERROR_CODE_HOOK_NEXT_OFFSET 0xf58fd0
|
|
#define WX_SEARCH_CONTACT_DETAIL_HOOK_OFFSET 0xa8dc00
|
|
#define WX_SEARCH_CONTACT_DETAIL_HOOK_NEXT_OFFSET 0xa8de50
|
|
#define WX_SEARCH_CONTACT_OFFSET 0xcd2370
|
|
|
|
|
|
|
|
//login
|
|
#define WX_LOGOUT_OFFSET 0xe596d0
|
|
#define WX_ACCOUNT_SERVICE_OFFSET 0x769720
|
|
#define WX_GET_APP_DATA_SAVE_PATH_OFFSET 0xf3bbd0
|
|
#define WX_GET_CURRENT_DATA_PATH_OFFSET 0xc88120
|
|
#define WX_QR_CODE_LOGIN_MGR_OFFSET 0xaeab70
|
|
#define WX_GET_QR_CODE_IMAGE_OFFSET 0xcdb560
|
|
|
|
//forward
|
|
#define WX_FORWARD_MSG_OFFSET 0xce75a0
|
|
// send file
|
|
#define WX_SEND_FILE_OFFSET 0xb6dfd0
|
|
// send image
|
|
#define WX_SEND_IMAGE_OFFSET 0xce74b0
|
|
// send text
|
|
#define WX_SEND_TEXT_OFFSET 0xce7af0
|
|
|
|
|
|
//ocr
|
|
#define WX_INIT_OBJ_OFFSET 0x80b540
|
|
#define WX_OCR_MANAGER_OFFSET 0x80ffc0
|
|
#define WX_DO_OCR_TASK_OFFSET 0x13db9a0
|
|
|
|
|
|
//storage
|
|
|
|
#define CONTACT_G_PINSTANCE_OFFSET 0x2fffe08
|
|
#define DB_MICRO_MSG_OFFSET 0x68
|
|
#define DB_CHAT_MSG_OFFSET 0x1C0
|
|
#define DB_MISC_OFFSET 0x3D8
|
|
#define DB_EMOTION_OFFSET 0x558
|
|
#define DB_MEDIA_OFFSET 0x9B8
|
|
#define DB_BIZCHAT_MSG_OFFSET 0x1120
|
|
#define DB_FUNCTION_MSG_OFFSET 0x11B0
|
|
#define DB_NAME_OFFSET 0x14
|
|
|
|
#define STORAGE_START_OFFSET 0x13f8
|
|
#define STORAGE_END_OFFSET 0x13fc
|
|
|
|
#define PUBLIC_MSG_MGR_OFFSET 0x30400a4
|
|
#define MULTI_DB_MSG_MGR_OFFSET 0x30424dc
|
|
#define FAVORITE_STORAGE_MGR_OFFSET 0x3041e70
|
|
#define FTS_FAVORITE_MGR_OFFSET 0x3000948
|
|
|
|
#define OP_LOG_STORAGE_VFTABLE 0x2AD3A20
|
|
#define CHAT_MSG_STORAGE_VFTABLE 0x2AC10F0
|
|
#define CHAT_CR_MSG_STORAGE_VFTABLE 0x2ABEF14
|
|
#define SESSION_STORAGE_VFTABLE 0x2AD3578
|
|
#define APP_INFO_STORAGE_VFTABLE 0x2ABCC58
|
|
#define HEAD_IMG_STORAGE_VFTABLE 0x2ACD9DC
|
|
#define HEAD_IMG_URL_STORAGE_VFTABLE 0x2ACDF70
|
|
|
|
#define BIZ_INFO_STORAGE_VFTABLE 0x2ABD718
|
|
#define TICKET_INFO_STORAGE_VFTABLE 0x2AD5400
|
|
#define CHAT_ROOM_STORAGE_VFTABLE 0x2AC299C
|
|
#define CHAT_ROOM_INFO_STORAGE_VFTABLE 0x2AC245C
|
|
#define MEDIA_STORAGE_VFTABLE 0x2ACE998
|
|
#define NAME_2_ID_STORAGE_VFTABLE 0x2AD222C
|
|
#define EMOTION_PACKAGE_STORAGE_VFTABLE 0x2AC6400
|
|
|
|
#define EMOTION_STORAGE_VFTABLE 0x2AC7018
|
|
#define BUFINFO_STORAGE_VFTABLE 0x2AC3178
|
|
|
|
#define CUSTOM_EMOTION_STORAGE_VFTABLE 0x2AC4E90
|
|
#define DEL_SESSIONINFO_STORAGE_VFTABLE 0x2AC5F98
|
|
#define FUNCTION_MSG_STORAGE_VFTABLE 0x2ACD10C
|
|
|
|
#define FUNCTION_MSG_TASK_STORAGE_VFTABLE 0x2ACC5C8
|
|
#define REVOKE_MSG_STORAGE_VFTABLE 0x2AD27BC
|
|
|
|
|
|
|
|
/*******************hook*********************************************/
|
|
|
|
|
|
// hook image
|
|
#define WX_HOOK_IMG_OFFSET 0xd723dc
|
|
#define WX_HOOK_IMG_NEXT_OFFSET 0xe91d90
|
|
|
|
|
|
|
|
// hook log
|
|
#define WX_HOOK_LOG_OFFSET 0xf59317
|
|
#define WX_HOOK_LOG_NEXT_OFFSET 0x24102b4
|
|
|
|
// hook msg
|
|
|
|
#define WX_RECV_MSG_HOOK_OFFSET 0xd1a89b
|
|
#define WX_RECV_MSG_HOOK_NEXT_OFFSET 0x7573f0
|
|
#define WX_SNS_HOOK_OFFSET 0x14fb3b5
|
|
#define WX_SNS_HOOK_NEXT_OFFSET 0x14fb640
|
|
|
|
|
|
// hook voice
|
|
#define WX_HOOK_VOICE_OFFSET 0xd4d8d8
|
|
#define WX_HOOK_VOICE_NEXT_OFFSET 0x203d130
|
|
#define WX_SELF_ID_OFFSET 0x2FFD484
|
|
|
|
/*******************hook end*********************************************/
|
|
|
|
|
|
/***************************sqlite3***************************************/
|
|
#define SQLITE_OK 0 /* Successful result */
|
|
/* beginning-of-error-codes */
|
|
#define SQLITE_ERROR 1 /* Generic error */
|
|
#define SQLITE_INTERNAL 2 /* Internal logic error in SQLite */
|
|
#define SQLITE_PERM 3 /* Access permission denied */
|
|
#define SQLITE_ABORT 4 /* Callback routine requested an abort */
|
|
#define SQLITE_BUSY 5 /* The database file is locked */
|
|
#define SQLITE_LOCKED 6 /* A table in the database is locked */
|
|
#define SQLITE_NOMEM 7 /* A malloc() failed */
|
|
#define SQLITE_READONLY 8 /* Attempt to write a readonly database */
|
|
#define SQLITE_INTERRUPT 9 /* Operation terminated by sqlite3_interrupt()*/
|
|
#define SQLITE_IOERR 10 /* Some kind of disk I/O error occurred */
|
|
#define SQLITE_CORRUPT 11 /* The database disk image is malformed */
|
|
#define SQLITE_NOTFOUND 12 /* Unknown opcode in sqlite3_file_control() */
|
|
#define SQLITE_FULL 13 /* Insertion failed because database is full */
|
|
#define SQLITE_CANTOPEN 14 /* Unable to open the database file */
|
|
#define SQLITE_PROTOCOL 15 /* Database lock protocol error */
|
|
#define SQLITE_EMPTY 16 /* Internal use only */
|
|
#define SQLITE_SCHEMA 17 /* The database schema changed */
|
|
#define SQLITE_TOOBIG 18 /* String or BLOB exceeds size limit */
|
|
#define SQLITE_CONSTRAINT 19 /* Abort due to constraint violation */
|
|
#define SQLITE_MISMATCH 20 /* Data type mismatch */
|
|
#define SQLITE_MISUSE 21 /* Library used incorrectly */
|
|
#define SQLITE_NOLFS 22 /* Uses OS features not supported on host */
|
|
#define SQLITE_AUTH 23 /* Authorization denied */
|
|
#define SQLITE_FORMAT 24 /* Not used */
|
|
#define SQLITE_RANGE 25 /* 2nd parameter to sqlite3_bind out of range */
|
|
#define SQLITE_NOTADB 26 /* File opened that is not a database file */
|
|
#define SQLITE_NOTICE 27 /* Notifications from sqlite3_log() */
|
|
#define SQLITE_WARNING 28 /* Warnings from sqlite3_log() */
|
|
#define SQLITE_ROW 100 /* sqlite3_step() has another row ready */
|
|
#define SQLITE_DONE 101 /* sqlite3_step() has finished executing */
|
|
/* end-of-error-codes */
|
|
|
|
/*
|
|
** CAPI3REF: Extended Result Codes
|
|
** KEYWORDS: {extended result code definitions}
|
|
**
|
|
** In its default configuration, SQLite API routines return one of 30 integer
|
|
** [result codes]. However, experience has shown that many of
|
|
** these result codes are too coarse-grained. They do not provide as
|
|
** much information about problems as programmers might like. In an effort to
|
|
** address this, newer versions of SQLite (version 3.3.8 [dateof:3.3.8]
|
|
** and later) include
|
|
** support for additional result codes that provide more detailed information
|
|
** about errors. These [extended result codes] are enabled or disabled
|
|
** on a per database connection basis using the
|
|
** [sqlite3_extended_result_codes()] API. Or, the extended code for
|
|
** the most recent error can be obtained using
|
|
** [sqlite3_extended_errcode()].
|
|
*/
|
|
#define SQLITE_ERROR_MISSING_COLLSEQ (SQLITE_ERROR | (1 << 8))
|
|
#define SQLITE_ERROR_RETRY (SQLITE_ERROR | (2 << 8))
|
|
#define SQLITE_ERROR_SNAPSHOT (SQLITE_ERROR | (3 << 8))
|
|
#define SQLITE_IOERR_READ (SQLITE_IOERR | (1 << 8))
|
|
#define SQLITE_IOERR_SHORT_READ (SQLITE_IOERR | (2 << 8))
|
|
#define SQLITE_IOERR_WRITE (SQLITE_IOERR | (3 << 8))
|
|
#define SQLITE_IOERR_FSYNC (SQLITE_IOERR | (4 << 8))
|
|
#define SQLITE_IOERR_DIR_FSYNC (SQLITE_IOERR | (5 << 8))
|
|
#define SQLITE_IOERR_TRUNCATE (SQLITE_IOERR | (6 << 8))
|
|
#define SQLITE_IOERR_FSTAT (SQLITE_IOERR | (7 << 8))
|
|
#define SQLITE_IOERR_UNLOCK (SQLITE_IOERR | (8 << 8))
|
|
#define SQLITE_IOERR_RDLOCK (SQLITE_IOERR | (9 << 8))
|
|
#define SQLITE_IOERR_DELETE (SQLITE_IOERR | (10 << 8))
|
|
#define SQLITE_IOERR_BLOCKED (SQLITE_IOERR | (11 << 8))
|
|
#define SQLITE_IOERR_NOMEM (SQLITE_IOERR | (12 << 8))
|
|
#define SQLITE_IOERR_ACCESS (SQLITE_IOERR | (13 << 8))
|
|
#define SQLITE_IOERR_CHECKRESERVEDLOCK (SQLITE_IOERR | (14 << 8))
|
|
#define SQLITE_IOERR_LOCK (SQLITE_IOERR | (15 << 8))
|
|
#define SQLITE_IOERR_CLOSE (SQLITE_IOERR | (16 << 8))
|
|
#define SQLITE_IOERR_DIR_CLOSE (SQLITE_IOERR | (17 << 8))
|
|
#define SQLITE_IOERR_SHMOPEN (SQLITE_IOERR | (18 << 8))
|
|
#define SQLITE_IOERR_SHMSIZE (SQLITE_IOERR | (19 << 8))
|
|
#define SQLITE_IOERR_SHMLOCK (SQLITE_IOERR | (20 << 8))
|
|
#define SQLITE_IOERR_SHMMAP (SQLITE_IOERR | (21 << 8))
|
|
#define SQLITE_IOERR_SEEK (SQLITE_IOERR | (22 << 8))
|
|
#define SQLITE_IOERR_DELETE_NOENT (SQLITE_IOERR | (23 << 8))
|
|
#define SQLITE_IOERR_MMAP (SQLITE_IOERR | (24 << 8))
|
|
#define SQLITE_IOERR_GETTEMPPATH (SQLITE_IOERR | (25 << 8))
|
|
#define SQLITE_IOERR_CONVPATH (SQLITE_IOERR | (26 << 8))
|
|
#define SQLITE_IOERR_VNODE (SQLITE_IOERR | (27 << 8))
|
|
#define SQLITE_IOERR_AUTH (SQLITE_IOERR | (28 << 8))
|
|
#define SQLITE_IOERR_BEGIN_ATOMIC (SQLITE_IOERR | (29 << 8))
|
|
#define SQLITE_IOERR_COMMIT_ATOMIC (SQLITE_IOERR | (30 << 8))
|
|
#define SQLITE_IOERR_ROLLBACK_ATOMIC (SQLITE_IOERR | (31 << 8))
|
|
#define SQLITE_IOERR_DATA (SQLITE_IOERR | (32 << 8))
|
|
#define SQLITE_IOERR_CORRUPTFS (SQLITE_IOERR | (33 << 8))
|
|
#define SQLITE_LOCKED_SHAREDCACHE (SQLITE_LOCKED | (1 << 8))
|
|
#define SQLITE_LOCKED_VTAB (SQLITE_LOCKED | (2 << 8))
|
|
#define SQLITE_BUSY_RECOVERY (SQLITE_BUSY | (1 << 8))
|
|
#define SQLITE_BUSY_SNAPSHOT (SQLITE_BUSY | (2 << 8))
|
|
#define SQLITE_BUSY_TIMEOUT (SQLITE_BUSY | (3 << 8))
|
|
#define SQLITE_CANTOPEN_NOTEMPDIR (SQLITE_CANTOPEN | (1 << 8))
|
|
#define SQLITE_CANTOPEN_ISDIR (SQLITE_CANTOPEN | (2 << 8))
|
|
#define SQLITE_CANTOPEN_FULLPATH (SQLITE_CANTOPEN | (3 << 8))
|
|
#define SQLITE_CANTOPEN_CONVPATH (SQLITE_CANTOPEN | (4 << 8))
|
|
#define SQLITE_CANTOPEN_DIRTYWAL (SQLITE_CANTOPEN | (5 << 8)) /* Not Used */
|
|
#define SQLITE_CANTOPEN_SYMLINK (SQLITE_CANTOPEN | (6 << 8))
|
|
#define SQLITE_CORRUPT_VTAB (SQLITE_CORRUPT | (1 << 8))
|
|
#define SQLITE_CORRUPT_SEQUENCE (SQLITE_CORRUPT | (2 << 8))
|
|
#define SQLITE_CORRUPT_INDEX (SQLITE_CORRUPT | (3 << 8))
|
|
#define SQLITE_READONLY_RECOVERY (SQLITE_READONLY | (1 << 8))
|
|
#define SQLITE_READONLY_CANTLOCK (SQLITE_READONLY | (2 << 8))
|
|
#define SQLITE_READONLY_ROLLBACK (SQLITE_READONLY | (3 << 8))
|
|
#define SQLITE_READONLY_DBMOVED (SQLITE_READONLY | (4 << 8))
|
|
#define SQLITE_READONLY_CANTINIT (SQLITE_READONLY | (5 << 8))
|
|
#define SQLITE_READONLY_DIRECTORY (SQLITE_READONLY | (6 << 8))
|
|
#define SQLITE_ABORT_ROLLBACK (SQLITE_ABORT | (2 << 8))
|
|
#define SQLITE_CONSTRAINT_CHECK (SQLITE_CONSTRAINT | (1 << 8))
|
|
#define SQLITE_CONSTRAINT_COMMITHOOK (SQLITE_CONSTRAINT | (2 << 8))
|
|
#define SQLITE_CONSTRAINT_FOREIGNKEY (SQLITE_CONSTRAINT | (3 << 8))
|
|
#define SQLITE_CONSTRAINT_FUNCTION (SQLITE_CONSTRAINT | (4 << 8))
|
|
#define SQLITE_CONSTRAINT_NOTNULL (SQLITE_CONSTRAINT | (5 << 8))
|
|
#define SQLITE_CONSTRAINT_PRIMARYKEY (SQLITE_CONSTRAINT | (6 << 8))
|
|
#define SQLITE_CONSTRAINT_TRIGGER (SQLITE_CONSTRAINT | (7 << 8))
|
|
#define SQLITE_CONSTRAINT_UNIQUE (SQLITE_CONSTRAINT | (8 << 8))
|
|
#define SQLITE_CONSTRAINT_VTAB (SQLITE_CONSTRAINT | (9 << 8))
|
|
#define SQLITE_CONSTRAINT_ROWID (SQLITE_CONSTRAINT | (10 << 8))
|
|
#define SQLITE_CONSTRAINT_PINNED (SQLITE_CONSTRAINT | (11 << 8))
|
|
#define SQLITE_CONSTRAINT_DATATYPE (SQLITE_CONSTRAINT | (12 << 8))
|
|
#define SQLITE_NOTICE_RECOVER_WAL (SQLITE_NOTICE | (1 << 8))
|
|
#define SQLITE_NOTICE_RECOVER_ROLLBACK (SQLITE_NOTICE | (2 << 8))
|
|
#define SQLITE_WARNING_AUTOINDEX (SQLITE_WARNING | (1 << 8))
|
|
#define SQLITE_AUTH_USER (SQLITE_AUTH | (1 << 8))
|
|
#define SQLITE_OK_LOAD_PERMANENTLY (SQLITE_OK | (1 << 8))
|
|
#define SQLITE_OK_SYMLINK (SQLITE_OK | (2 << 8)) /* internal use only */
|
|
|
|
|
|
#define SQLITE_INTEGER 1
|
|
#define SQLITE_FLOAT 2
|
|
#define SQLITE_BLOB 4
|
|
#define SQLITE_NULL 5
|
|
#define SQLITE_TEXT 3
|
|
|
|
#define SQLITE3_EXEC_OFFSET 0x1e26770
|
|
#define SQLITE3_BACKUP_INIT_OFFSET 0x1dec100
|
|
#define SQLITE3_PREPARE_OFFSET 0x1E2D0C0
|
|
#define SQLITE3_OPEN_OFFSET 0x1e5b090
|
|
#define SQLITE3_BACKUP_STEP_OFFSET 0x1DEC500
|
|
#define SQLITE3_BACKUP_REMAINING_OFFSET 0x1DECC40
|
|
#define SQLITE3_BACKUP_PAGECOUNT_OFFSET 0x1DECC50
|
|
#define SQLITE3_BACKUP_FINISH_OFFSET 0x1DECB40
|
|
#define SQLITE3_SLEEP_OFFSET 0x1e5b8d0
|
|
#define SQLITE3_ERRCODE_OFFSET 0x1e59d30
|
|
#define SQLITE3_CLOSE_OFFSET 0x1e584b0
|
|
#define SQLITE3_STEP_OFFSET 0x1df4f70
|
|
#define SQLITE3_COLUMN_COUNT_OFFSET 0x1df5480
|
|
#define SQLITE3_COLUMN_NAME_OFFSET 0x1df5d70
|
|
#define SQLITE3_COLUMN_TYPE_OFFSET 0x1df5c10
|
|
#define SQLITE3_COLUMN_BLOB_OFFSET 0x1df54c0
|
|
#define SQLITE3_COLUMN_BYTES_OFFSET 0x1df55a0
|
|
#define SQLITE3_FINALIZE_OFFSET 0x1df3f40
|
|
|
|
typedef int (*Sqlite3_callback)(void*, int, char**, char**);
|
|
|
|
typedef int(__cdecl* Sqlite3_exec)(DWORD, /* An open database */
|
|
const char* sql, /* SQL to be evaluated */
|
|
Sqlite3_callback, /* Callback function */
|
|
void*, /* 1st argument to callback */
|
|
char** errmsg /* Error msg written here */
|
|
);
|
|
typedef DWORD(__cdecl* Sqlite3_backup_init)(
|
|
DWORD* pDest, /* Destination database handle */
|
|
const char* zDestName, /* Destination database name */
|
|
DWORD* pSource, /* Source database handle */
|
|
const char* zSourceName /* Source database name */
|
|
);
|
|
typedef int(__cdecl* Sqlite3_prepare)(
|
|
DWORD db, /* Database handle */
|
|
const char* zSql, /* SQL statement, UTF-8 encoded */
|
|
int nByte, /* Maximum length of zSql in bytes. */
|
|
DWORD** ppStmt, /* OUT: Statement handle */
|
|
const char** pzTail /* OUT: Pointer to unused portion of zSql */
|
|
);
|
|
typedef int(__cdecl* Sqlite3_open)(const char* filename, DWORD** ppDb);
|
|
typedef int(__cdecl* Sqlite3_backup_step)(DWORD* p, int nPage);
|
|
typedef int(__cdecl* Sqlite3_backup_remaining)(DWORD* p);
|
|
typedef int(__cdecl* Sqlite3_backup_pagecount)(DWORD* p);
|
|
typedef int(__cdecl* Sqlite3_backup_finish)(DWORD* p);
|
|
typedef int(__cdecl* Sqlite3_sleep)(int);
|
|
typedef int(__cdecl* Sqlite3_errcode)(DWORD* db);
|
|
typedef int(__cdecl* Sqlite3_close)(DWORD*);
|
|
|
|
typedef int(__cdecl* Sqlite3_step)(DWORD*);
|
|
typedef int(__cdecl* Sqlite3_column_count)(DWORD* pStmt);
|
|
typedef const char*(__cdecl* Sqlite3_column_name)(DWORD*, int N);
|
|
typedef int(__cdecl* Sqlite3_column_type)(DWORD*, int iCol);
|
|
typedef const void*(__cdecl* Sqlite3_column_blob)(DWORD*, int iCol);
|
|
typedef int(__cdecl* Sqlite3_column_bytes)(DWORD*, int iCol);
|
|
typedef int(__cdecl* Sqlite3_finalize)(DWORD* pStmt);
|
|
|
|
|
|
/***************************sqlite3 end*************************************/
|
|
|
|
struct SqlResult {
|
|
char *column_name;
|
|
DWORD column_name_len;
|
|
char *content;
|
|
DWORD content_len;
|
|
BOOL is_blob;
|
|
};
|
|
|
|
struct WeChatString {
|
|
wchar_t *ptr;
|
|
DWORD length;
|
|
DWORD max_length;
|
|
DWORD c_ptr = 0;
|
|
DWORD c_len = 0;
|
|
WeChatString() { WeChatString(NULL); }
|
|
|
|
WeChatString(std::wstring &s) {
|
|
ptr = (wchar_t *)(s.c_str());
|
|
length = s.length();
|
|
max_length = s.length() * 2;
|
|
}
|
|
WeChatString(const wchar_t *pStr) { WeChatString((wchar_t *)pStr); }
|
|
WeChatString(int tmp) {
|
|
ptr = NULL;
|
|
length = 0x0;
|
|
max_length = 0x0;
|
|
}
|
|
WeChatString(wchar_t *pStr) {
|
|
ptr = pStr;
|
|
length = wcslen(pStr);
|
|
max_length = wcslen(pStr) * 2;
|
|
}
|
|
void set_value(const wchar_t *pStr) {
|
|
ptr = (wchar_t *)pStr;
|
|
length = wcslen(pStr);
|
|
max_length = wcslen(pStr) * 2;
|
|
}
|
|
};
|
|
|
|
|
|
struct SelfInfoInner{
|
|
std::string name;
|
|
std::string city;
|
|
std::string province;
|
|
std::string country;
|
|
std::string account;
|
|
std::string wxid;
|
|
std::string mobile;
|
|
std::string head_img;
|
|
std::string data_save_path;
|
|
std::string signature;
|
|
std::string current_data_path;
|
|
std::string db_key;
|
|
};
|
|
|
|
struct VectorInner {
|
|
#ifdef _DEBUG
|
|
DWORD head;
|
|
#endif
|
|
DWORD start;
|
|
DWORD finsh;
|
|
DWORD end;
|
|
};
|
|
|
|
struct TableInfo {
|
|
char *name;
|
|
DWORD name_len;
|
|
char *table_name;
|
|
DWORD table_name_len;
|
|
char *sql;
|
|
DWORD sql_len;
|
|
char *rootpage;
|
|
DWORD rootpage_len;
|
|
};
|
|
|
|
struct DatabaseInfo {
|
|
DWORD handle = 0;
|
|
wchar_t *db_name = NULL;
|
|
DWORD db_name_len = 0;
|
|
std::vector<TableInfo> tables;
|
|
DWORD count = 0;
|
|
DWORD extrainfo = 0;
|
|
};
|
|
|
|
|
|
struct Contact {
|
|
WeChatString wxid;
|
|
WeChatString custom_account;
|
|
WeChatString encrypt_name;
|
|
WeChatString nick_name;
|
|
WeChatString pinyin;
|
|
WeChatString pinyin_all;
|
|
int del_flag;
|
|
int type;
|
|
int verify_flag;
|
|
};
|
|
|
|
struct ChatRoomInfo {
|
|
DWORD vftable;
|
|
WeChatString chat_room_id;
|
|
WeChatString notice;
|
|
WeChatString admin;
|
|
DWORD filed_40;
|
|
DWORD filed_44;
|
|
DWORD filed_48;
|
|
DWORD filed_4C;
|
|
WeChatString xml;
|
|
DWORD filed_64;
|
|
DWORD filed_68;
|
|
DWORD filed_6C;
|
|
DWORD filed_70;
|
|
DWORD filed_74;
|
|
DWORD filed_78;
|
|
DWORD filed_7C;
|
|
DWORD filed_80;
|
|
DWORD filed_84;
|
|
DWORD filed_88;
|
|
DWORD filed_8c;
|
|
DWORD filed_90;
|
|
DWORD filed_94;
|
|
DWORD filed_98;
|
|
DWORD filed_9C;
|
|
DWORD filed_A0;
|
|
};
|
|
|
|
struct ChatRoomInfoInner {
|
|
WeChatString chat_room_id;
|
|
WeChatString notice;
|
|
WeChatString admin;
|
|
WeChatString xml;
|
|
|
|
~ChatRoomInfoInner(){
|
|
if(chat_room_id.ptr){
|
|
delete []chat_room_id.ptr;
|
|
chat_room_id.ptr = nullptr;
|
|
}
|
|
if(notice.ptr){
|
|
delete []notice.ptr;
|
|
notice.ptr = nullptr;
|
|
}
|
|
if(admin.ptr){
|
|
delete []admin.ptr;
|
|
admin.ptr = nullptr;
|
|
}
|
|
if(xml.ptr){
|
|
delete []xml.ptr;
|
|
xml.ptr = nullptr;
|
|
}
|
|
}
|
|
};
|
|
|
|
struct ChatRoomInner{
|
|
char* members;
|
|
wchar_t* chat_room;
|
|
wchar_t* admin;
|
|
~ChatRoomInner(){
|
|
delete []members;
|
|
delete []chat_room;
|
|
delete []admin;
|
|
}
|
|
};
|
|
|
|
struct UserInfo {
|
|
int error_code;
|
|
wchar_t *keyword;
|
|
int keyword_len;
|
|
wchar_t *v3;
|
|
int v3_len;
|
|
wchar_t *V3;
|
|
int V3_len;
|
|
wchar_t *account;
|
|
int account_len;
|
|
wchar_t *friend_name;
|
|
int friend_name_len;
|
|
wchar_t *nickname;
|
|
int nickname_len;
|
|
wchar_t *signature;
|
|
int signature_len;
|
|
wchar_t *v2;
|
|
int v2_len;
|
|
wchar_t *py;
|
|
int py_len;
|
|
wchar_t *nation;
|
|
int nation_len;
|
|
wchar_t *province;
|
|
int province_len;
|
|
wchar_t *city;
|
|
int city_len;
|
|
wchar_t *big_image;
|
|
int big_image_len;
|
|
wchar_t *small_image;
|
|
int small_image_len;
|
|
DWORD sex;
|
|
BOOL over;
|
|
};
|
|
|
|
struct AtInner{
|
|
DWORD start;
|
|
DWORD finsh;
|
|
DWORD end;
|
|
};
|
|
|
|
struct ChatMsg {
|
|
DWORD **field0_0x0;
|
|
DWORD field1_0x4;
|
|
ULONG64 sequence;
|
|
DWORD field3_0x10;
|
|
DWORD field4_0x14;
|
|
ULONG64 msgSequence;
|
|
DWORD localId;
|
|
DWORD field7_0x24;
|
|
DWORD field8_0x28;
|
|
DWORD field9_0x2c;
|
|
ULONG64 msgId;
|
|
DWORD type;
|
|
DWORD isSendMsg;
|
|
DWORD msgStatus;
|
|
DWORD timestamp;
|
|
WeChatString talker;
|
|
DWORD field16_0x5c;
|
|
DWORD field17_0x60;
|
|
DWORD field18_0x64;
|
|
DWORD field19_0x68;
|
|
DWORD field20_0x6c;
|
|
WeChatString content;
|
|
DWORD field22_0x84;
|
|
DWORD field23_0x88;
|
|
DWORD field24_0x8c;
|
|
DWORD field25_0x90;
|
|
DWORD field26_0x94;
|
|
DWORD field27_0x98;
|
|
DWORD field28_0x9c;
|
|
DWORD field29_0xa0;
|
|
DWORD field30_0xa4;
|
|
DWORD field31_0xa8;
|
|
DWORD field32_0xac;
|
|
DWORD field33_0xb0;
|
|
DWORD field34_0xb4;
|
|
DWORD field35_0xb8;
|
|
DWORD field36_0xbc;
|
|
DWORD field37_0xc0;
|
|
DWORD field38_0xc4;
|
|
DWORD field39_0xc8;
|
|
DWORD field40_0xcc;
|
|
DWORD field41_0xd0;
|
|
DWORD field42_0xd4;
|
|
DWORD field43_0xd8;
|
|
DWORD field44_0xdc;
|
|
DWORD field45_0xe0;
|
|
DWORD field46_0xe4;
|
|
DWORD field47_0xe8;
|
|
DWORD field48_0xec;
|
|
DWORD field49_0xf0;
|
|
DWORD field50_0xf4;
|
|
DWORD field51_0xf8;
|
|
DWORD field52_0xfc;
|
|
DWORD field53_0x100;
|
|
DWORD field54_0x104;
|
|
DWORD field55_0x108;
|
|
DWORD field56_0x10c;
|
|
DWORD field57_0x110;
|
|
DWORD field58_0x114;
|
|
DWORD field59_0x118;
|
|
DWORD field60_0x11c;
|
|
DWORD field61_0x120;
|
|
DWORD field62_0x124;
|
|
DWORD field63_0x128;
|
|
DWORD field64_0x12c;
|
|
DWORD field65_0x130;
|
|
DWORD field66_0x134;
|
|
DWORD field67_0x138;
|
|
DWORD field68_0x13c;
|
|
DWORD field69_0x140;
|
|
DWORD field70_0x144;
|
|
DWORD field71_0x148;
|
|
DWORD field72_0x14c;
|
|
DWORD field73_0x150;
|
|
DWORD field74_0x154;
|
|
DWORD field75_0x158;
|
|
DWORD field76_0x15c;
|
|
DWORD field77_0x160;
|
|
DWORD field78_0x164;
|
|
DWORD field79_0x168;
|
|
DWORD field80_0x16c;
|
|
DWORD field81_0x170;
|
|
WeChatString fromGroup;
|
|
WeChatString sign;
|
|
WeChatString thumbPath;
|
|
WeChatString path;
|
|
DWORD field86_0x1c4;
|
|
DWORD field87_0x1c8;
|
|
DWORD field88_0x1cc;
|
|
DWORD field89_0x1d0;
|
|
DWORD field90_0x1d4;
|
|
DWORD field91_0x1d8;
|
|
DWORD field92_0x1dc;
|
|
DWORD field93_0x1e0;
|
|
DWORD field94_0x1e4;
|
|
DWORD field95_0x1e8;
|
|
DWORD field96_0x1ec;
|
|
WeChatString signature;
|
|
DWORD field98_0x204;
|
|
DWORD field99_0x208;
|
|
DWORD field100_0x20c;
|
|
DWORD field101_0x210;
|
|
DWORD field102_0x214;
|
|
DWORD field103_0x218;
|
|
DWORD field104_0x21c;
|
|
DWORD field105_0x220;
|
|
DWORD field106_0x224;
|
|
DWORD field107_0x228;
|
|
DWORD field108_0x22c;
|
|
DWORD field109_0x230;
|
|
DWORD field110_0x234;
|
|
DWORD field111_0x238;
|
|
DWORD field112_0x23c;
|
|
DWORD field113_0x240;
|
|
DWORD field114_0x244;
|
|
DWORD field115_0x248;
|
|
DWORD field116_0x24c;
|
|
DWORD field117_0x250;
|
|
DWORD field118_0x254;
|
|
DWORD field119_0x258;
|
|
DWORD field120_0x25c;
|
|
DWORD field121_0x260;
|
|
DWORD field122_0x264;
|
|
DWORD field123_0x268;
|
|
DWORD field124_0x26c;
|
|
DWORD field125_0x270;
|
|
DWORD field126_0x274;
|
|
DWORD field127_0x278;
|
|
DWORD field128_0x27c;
|
|
DWORD field129_0x280;
|
|
DWORD field130_0x284;
|
|
DWORD field131_0x288;
|
|
DWORD field132_0x28c;
|
|
DWORD field133_0x290;
|
|
DWORD field134_0x294;
|
|
DWORD field135_0x298;
|
|
DWORD field136_0x29c;
|
|
DWORD field137_0x2a0;
|
|
DWORD field138_0x2a4;
|
|
DWORD field139_0x2a8;
|
|
DWORD field140_0x2ac;
|
|
DWORD field141_0x2b0;
|
|
int field142_0x2b4;
|
|
};
|
|
|
|
struct InnerMessageStruct {
|
|
char *buffer;
|
|
int length;
|
|
~InnerMessageStruct() {
|
|
if (this->buffer != NULL) {
|
|
delete[] this->buffer;
|
|
this->buffer = NULL;
|
|
}
|
|
}
|
|
};
|
|
|
|
struct Unkown{
|
|
DWORD field1 = 0;
|
|
DWORD field2= 0;
|
|
DWORD field3= 0;
|
|
DWORD field4= 0;
|
|
DWORD field5= 0;
|
|
DWORD field6= 0;
|
|
};
|
|
|
|
struct ContactProfile{
|
|
std::wstring wxid;
|
|
std::wstring account;
|
|
std::wstring v3;
|
|
std::wstring nickname;
|
|
std::wstring head_image;
|
|
};
|
|
#endif |