1. 程式人生 > 其它 >企業微信HOOK逆向(sdk)——登入二維碼api

企業微信HOOK逆向(sdk)——登入二維碼api

一、逆向分析 1、開啟企業微信,如果自動登入需要先退出登入,再次代開停留在二維碼掃碼登入介面。附加到OD中。用手機掃描二維碼,在OD的KERNELBASE.CreateFileW下斷點,手機點選取消登入。這時二維碼會獲取一個最新的,並且儲存到本地,在CreateFileW斷點處觀察入參是否是圖片,如果不是繼續F9,直到入參是一個jpg圖片

 

 

  2、Alt+F9執行到使用者程式碼,一步步走找一個容易取到圖片路徑的合適的位置,用來下HOOK

 

 

  二、編寫程式碼   void WINAPI CallBack_WechatLogin(unsigned int nObject) { __try { if ((0 == nObject)) { return; }   wchar_t* pImgBuf = (wchar_t*)(nObject);   if ((NULL == pImgBuf)) { return; }   rapidjson::StringBuffer strBuf; rapidjson::Writer<rapidjson::StringBuffer> writer(strBuf);   writer.StartObject();   writer.Key("data"); writer.StartObject(); writer.Key("file"); char* filedt = UnicodeToUtf8(pImgBuf); writer.String(filedt); writer.EndObject();   writer.Key("type"); writer.Uint(MT_MSG_LOGIN_QRCODE); writer.EndObject();   BackReturn(strBuf.GetString());//回撥   } __except (EXCEPTION_EXECUTE_HANDLER) {   } }   __declspec(naked) void My_WechatLogin() { __asm { pushad pushfd   push[ebp - 0x28] call dword ptr CallBack_WechatLogin   popfd popad   lea eax, [ebp - 0xF0]   jmp dword ptr CLogin::m_nJmpAddress } }   呼叫hook語句 Hook("WXWork.dll", 0x2E012B6, (unsigned int)My_WechatLogin, &m_nJmpAddress);     目前已實現大部分功能 接收和傳送各種型別訊息、群管理、加好友、自動進群、群發、群群發等 支援多開並記錄上次登入狀態(避免重複掃碼),可提供介面,方便各種語言二次開發,歡迎技術交流。 qq:1031694913