企業微信PC版hook原始碼api介面

sufstme發表於2022-02-20

通過hookPC 企微記憶體呼叫函式,實現各種方便的功能,支援各種開發語言呼叫,現已實現的功能:

發各種訊息,

接收各種訊息,外部群內部群管理,手機號加好友,名片加好友,標籤管理,開放平臺openid 和使用者id 互相轉換打通官方人員管理 等等功能,無限更新中

 

部分c++ 程式碼示例:

 

void   __declspec ( naked ) ShowImg()

{

    // 備份暫存器

    __asm pushmdad;

    __asm pushwdfd;

    // 取出ecx的內容

    __asm mov pEcx, ecx;

    SaveImg(pEcx);

    // 恢復暫存器

    __asm pushwdfd;

    __asm pushmdad;

 

    // 跳轉到返回地址

    __asm jmp dwRetAddr;

}

 

 

void SaveImg( DWORD qrcode )

{

    // 獲取圖片長度

    DWORD dwPicLen = qrcode + 0x4;

    size_t cpyLen = ( size_t )*(( LPVOID *)dwPicLen);

    // 拷貝圖片的資料

    char PicData[0xFFF] = { 0 };

    memcpy(PicData, *(( LPVOID *) qrcode ), cpyLen);

 

    char szTempPath[ MAX_PATH ] = { 0 };

    char szPicturePath[ MAX_PATH ] = { 0 };

    GetTempPathA( MAX_PATH , szTempPath);

 

    sprintf_s(szPicturePath, "%s%s" , szTempPath, "qrcode.png" );

    // 將檔案寫到Temp目錄下

    HANDLE hFile = CreateFileA(szPicturePath, GENERIC_ALL , 0, NULL , CREATE_ALWAYS , FILE_ATTRIBUTE_NORMAL , NULL );

    if (hFile == NULL )

    {

        MessageBoxA( NULL , " 建立圖片檔案失敗" , " 錯誤" , 0);

        return ;

    }

 

    DWORD dwRead = 0;

    if (WriteFile(hFile, PicData, cpyLen, &dwRead, NULL ) == 0)

    {

        MessageBoxA( NULL , " 寫入圖片檔案失敗" , " 錯誤" , 0);

        return ;

    }

    CloseHandle(hFile);

   

    // 完成之後解除安裝HOOK

    UnHookQrCode( QrCodeOffset );

 

}

 

 

需的可聯:

 

HWND Qq[]= 2645542961 ;

wchar_t tempbuff[0x1030];


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70011763/viewspace-2856511/,如需轉載,請註明出處,否則將追究法律責任。

相關文章