YY 語音登入協議分析

2021-10-06 12:25:48 字數 3264 閱讀 7122

來自

摘要:本文件詳細記錄了yy語音登入按鈕事件所觸發的一系列呼叫和相應庫檔案函式的呼叫,並對函式和類結構進行重新命名,以簡便記憶該名稱,更詳細的內容請參考反彙編檔案.

登入按鈕事件: 使用者在登入介面,填寫使用者名稱和密碼,單擊登入按鈕則觸發本事件

yymainframe.dll

0x6253fa8a ,yyloginwidget::on_loginbutton_clicked(void)

1.1. 獲取控制項上輸入,判斷登入使用者名稱和密碼是否為空,為空則給出相應的提示,並退出本函式

1.2. 呼叫0x6250a673 accountinfomanager::getaccountinfo(class accountinfo const &) 獲取賬戶資訊

1.3. 呼叫0x6253f521 yyloginwidget::_loginwithaccountinfo(accountinfo const &) 依據賬戶資訊登入

0x6253cad2 yyloginwidget::passportlogin(qstring & username,string password &, enum im_status)

1.1. 呼叫0x6371e52f,cpassportsingletonwrap::reset(void) 登入重置 (bizcore.dll)

1.2. 呼叫0x6371e455 cpassportsingletonwrap::setusername(char * username) 設定登入名稱 (bizcore.dll)

1.3. 呼叫0x6371e48f cpassportsingletonwrap::setpassword(char * password) 設定登入密碼 (bizcore.dll)

1.4. 呼叫0x6371e4cb cpassportsingletonwrap::setimstatus(int im_status) 設定登入狀態 imstatus (bizcore.dll)

1.5. 呼叫 0x6371e4df cpassportsingletonwrap::setproductversion( char * productversion) 設定yy客戶端版本號 「"6.0.0.1」 (bizcore.dll)

1.6. 呼叫 0x6371e557 cpassportsingletonwrap::asynclogin(void) 非同步登入 (bizcore.dll)

0x6371e557 cpassportsingletonwrap::asynclogin(void) bizcore.dll

1.1. 呼叫0x6371e0b0 cpassportsingletonwrap::validaterealpassport(void) 當cpassportwrap 還沒有建立時,則建立該物件,當該物件已經被建立時,則直接返回1

1.2. 呼叫 0x637190ea cpassportwrap::asynclogin(void) 非同步登入

0x637190ea cpassportwrap::asynclogin(void) 非同步登入

1.1. 呼叫0x6370c597 casyncbase::start(cmasterobject &,cobject &,void ** functioncallback,int field,cobject &) 建立非同步物件,並執行非同步物件的主函式

0x6370c597 casyncbase::start(cmasterobject &,cobject &,void ** functioncallback,int field,cobject &)

1.1. 呼叫0x6370c487 casync * createcasync(casync & async,void ** functioncallback,int field,cobject &) 建立casync 非同步物件,返回值為casync物件的位址,當為登入的事件時cobject == cpassportwrap 物件

1.2. 呼叫0x6370cddb sub_6370cddb ,本函式把呼叫傳給0x6370cb25 cbizdrivermt::dopostfntobiz(void)

0x6370cb25 cbizdrivermt::dopostfntobiz(void)

1.1. 呼叫0x6370c216 cpostfntobiz::cpostfntobiz(int field1,cobject &,cbizdrivermt &,casync &,string,int field2,int field3) cpostfntobiz 建構函式,當為登入訊息時 cobject == cpassportwrap 物件

1.2. 呼叫0x6370c547 cpostfntobiz::copycpostfntobiz(cpostfntobiz &) 拷貝函式

1.3. 把cpostfntobiz物件賦值給 threadparamterinfo執行緒函式引數

1.4. 呼叫setevent 函式置為有訊號hevent

0x6370cc03 cbizdrivermt::threadproc(void) 執行緒函式等待hevent 事件控制代碼是否有訊息,有訊息則呼叫相應的處理方法

1.1. 呼叫0x6370bd72 waitfndeqonbiz() 等待hevent 是否有訊息

1.2. 當訊息是登入訊息時,則呼叫0x63707439 casync::bizlogin(void),

1.3. bizlogin() 函式裡面對 0x6371553b cpassportwrap::bizlogin(void)進行呼叫

0x6371553b cpassportwrap::bizlogin(void)

1.1. 呼叫0x63531ce9,cloginimp::login(string username,string password,int normal,int field1,int field2,int im_status,int yylangnameid) 實現登入, username 為使用者名稱, password 為使用者密碼, normal 不為email 則normal = 1, im_status 為登入狀態, yylangnameid 為yy客戶端語言版本** (login.dll)

0x63531ce9 cloginimp::login(string username,string password,int normal,int field1,int field2,int im_status,int yylangnameid)

1.1. 呼叫0x635318a8 cloginimp::dologin(string username,string password,int normal,int field1,int field2,int im_status,int yylangnameid) 實現登入

替代YY語音,自行搭建語音實時伺服器

先講一下原因 前幾天某y自行在電腦上安裝a某錄製軟體,本來用著就不爽了,現在未經使用者同意還送全家桶的咯。直接刪除尋找替代品google 了幾個小時發現一款不錯的軟體,teamspeak 3。先將服務端搭建起來,需自行準備具備公網ip的伺服器或電腦 環境 服務端系統 centos 7 客戶端系統 w...

MSN登入協議

msnp15登入協議 也適用於msnp18 登入過程 命令序列 代表傳送,代表結果 1.連線ds dispatcher server 得到ns notification server 2.連線ns,進行登入 其中policy mbi key old,nonce cfznppivkoe2glnv6z3...

遠端登入協議

一 telnet telnet是通過客戶端與伺服器之間的選項協商機制,實現了提供特定功能的雙方通訊。如下圖所示,telnet客戶程序同時與終端驅動,tcp ip協議模組進行互動,負責資訊的傳輸。telnet服務程序負責與偽終端驅動,tcp ip進行資料互動。所謂的為終端驅動就是實現一種登入外殼 sh...