一種軟體網路驗證方式的實現 + 網路驗證轉本地驗證的一種實現(附VC源碼)

來源:互聯網
上載者:User

目前很多軟體都是通過網路驗證來實現的,一種比較流行的方式便是把伺服器端(如驗證網頁)放在伺服器上,軟體為用戶端,當軟體註冊或啟動時通過網路與伺服器端進行資料交換,重新實現驗證的目的。
      個人覺得網路驗證將是一種趨勢,做得好的網路驗證方式將是對軟體的一種極大保護,如把軟體的關鍵資料或關鍵代碼放在伺服器端,當認證通過後再發回到軟體,且在傳輸過程中都用比較成熟的大型演算法加密,從而達到一種防破解的目的。舉個簡單的例子,軟體SMC加傳輸資料的RSA加密便是一個強度還可以的保護。
      這段程式只是一個樣本,顯示其最簡單的實現方式,程式很好的可移植性和很大的發揮空間。
      服務端為一個驗證網頁Conn.asp,getinfo.asp,data.mdb,只需把它放至空間上,其中訪問getinfo.asp的格式為:getinfo.asp?username = XXXXXXX & password = XXXXXXX,(XXXXXX表示需要提交確認的使用者名稱和密碼)。
      軟體的實現方式為經典的wininet編程,其流程(類似closehandle之類的就不列出來了)基本上為:

      1,  hInternet = OpenInternet ()
      2,  hConnection = OpenConnection (hInternet, szUrl, szUsrName, szUsrPwd) ;
      3,  hRequest = OpenRequest (hConnection, HttpTool::szPost, szUrl, dwFlags, szReferer) ;
      4,  AddRequestHeader (hRequest) ;
      5,  SendRequest (hRequest, dwTotalByte.Value ()) ;
      6,  EndRequest (hRequest)
      通過反組譯碼分析發現其實SendRequest 後記憶體中即已發現返回包的值,接下去便為對接受到的包的讀取部分,分別為其頭部和內容部分的讀取,再根據實際傳回值判斷使用者名稱或密碼是否正確。
    以上即是對網路驗證的最簡單的實現,詳細內容見原始碼(目前原始碼中wininet部分為Ryeol的封裝類,佩服他的完美封裝。另:使用者需要根據服務端的實際網址修改對應代碼,如更改為:m_strSvrURL=(_T("http://127.0.0.1/softreg/getinfo.asp"));

絡驗證轉本地驗證的一種實現方式:
抓取包的分析過程我就不說了,這裡面牽扯到太多東西了,我的來源程式只是一個很簡單的本機伺服器,當有驗證資訊過來時根據需要發相應的包回去(socket),從而達到欺騙軟體得到驗證的結果。

BIN檔案.rar是上面產生的兩個程式,一個是網路驗證程式(我已經把驗證的IP改為127.0.0.1,現實中也可通過該host方式實現),另一個即是本機伺服器端,只要在發送的內容中填寫123456789即可對軟體進行欺騙驗證。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.