企業微信HOOK逆向(sdk)——登入二維碼api
阿新 • • 發佈:2022-03-17
一、逆向分析
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