有幾個程序員不是被遊戲外掛和酷炫的黑客技術所吸引入行的呢?(你非要說高薪?那你還能來看這篇文章?)算法
從初中我纔有第一臺電腦,那個時候仍是windows95系統連互聯網尚未普及,那個時候還只有一些單機小遊戲,最火的也就是紅色警惕。個人第一款大型單機遊戲是西山居的《劍俠情緣外傳月影傳說》,當時使用4張cd光盤安裝(我也不知道是否是正版)。遊戲打通關以後就想着有沒有別的玩法,在搜索的時候就發現了修改器這個東西,當時比較流行的說法叫金手指。一開始是用別人作好的修改器,到後來就本身用金山遊戲本身製做修改器。從那時起就以爲作修改器遠比遊戲自己有意思。windows
後來網遊興起,手裏的金山遊俠忽然就不香了,雖然能改本地顯示可是數據自己沒有改變,因而新的技術出現了,CE修改器。接觸到CE修改器後才知道原來還有基址和偏移量這種東西,有些遊戲取得仍是客戶端的數據可是和顯示的數據不是用的同一個內存地址,經過CE找到基址和偏移量就能改一些設計不嚴密的網遊。可是畢竟網遊的重要數據全在服務端,手中的CE還沒發光發熱而後又不香了。而後新的技術又出現了!修改遊戲封包,經過僞造客戶端數據來欺騙服務器。然而沒有不少時間去學習這種技術了,由於上高中要努力學習(英雄聯盟出現了!這遊戲真香)。安全
高中起知道一些研究破解的論壇(這裏就不點名了),起初是爲了一些"好用"的軟件去逛這些地方,後來就翻了翻一些技術文章,全是看不懂的,相似:脫殼,斷點,爆破,關鍵跳。。。這些漢字我都認識就是組到一塊兒不知道什麼東西。因而就泡在這些知識的海洋裏潛水,畢竟要以學業爲重(打英雄聯盟)!直到大學才正式去研究這些東西,它叫逆向。服務器
學習逆向必定要爲了學習而不是要作違法的事!!!
因此這裏只有思路沒有具體操做網絡
逆向目的有兩個:學習
逆向分爲動態和靜態,動態就是將程序啓動起來進行逆向,靜態是直接分析程序指令(彙編語言)分析算法。編碼
動態分析逆向:加密
靜態分析逆向:操作系統
動態分析有個先天的優點,能夠在運行時自動脫殼,因此動態分析是首選。 靜態分析通常是跨平臺沒法進行動態分析或者很是困難,好比Android和IOS的動態庫。 動態分析廣泛用於windows操做系統軟件逆向(你非要跟我槓Kali?那你贏了) 靜態分析我暫時只用在分析不一樣平臺的動態庫
大學畢業以後放棄本行工做(工地搬磚)轉行加入程序員大軍(網上搬磚),起先從事遊戲行業,如今從事物聯網行業。 在遊戲行業一般要借鑑別人家的資源,而別人家的資源一般是加密過,好比cocos經常使用的xxtea加密。這種加密屬於算法公開而隱藏祕鑰的方式,只要獲取到祕鑰就能夠解開資源,須要增長破解難度。 如今的工做是物聯網平臺開發,給客戶的都是可執行程序,因此須要進行軟件受權,就須要研究多種加密算法。
接下來就軟件受權和個人逆向經驗來簡單分析下各類加密方式。
不管是軟件受權仍是互聯網傳輸,對於用戶一方來講消息都是透明的。互聯網傳輸本就是服務器與用戶之間通訊,不管發出消息仍是接收消息用戶都是能夠監聽到,即便採用非對稱加密方式也只是防止第三方竊取。軟件受權就比較難監聽,可是畢竟是軟件讀取受權信息而後再解釋稱軟件能用的配置,只要監視軟件內部就能夠獲取到受權消息,只不過期間成本大小。因此不管哪一種狀況用戶均可以獲取到消息,那隻能讓獲取的難度增大,時間成本增長。
加密方式:
非對稱加密:
非對稱加密在互聯網上能夠防止第三方竊取,而在軟件受權上只能用做驗證,由於不管是公鑰仍是私鑰都是能夠在軟件內部獲取其中一個,並且最終信息都是要被解密,因此失去了非對稱加密的特性。
自定義算法:
能夠根據已有算法進行改動來建立本身的加密算法
受權方式:
以上提到的加密算法和受權方式是我所遇到的和比較常見的,其餘的一些算法不是已經失去加密性質再就是我還沒遇到。(槓精退散)
重要性 不高 的軟件受權加密建議:2種以上對稱加密加一種非對稱加密。非對稱加密驗籤,對稱加密解密,能加殼就加殼最好能加花指令和添加無用指令。(你說運行速度慢了?那必定是你選的加密方式有問題)
重要性 高 的軟件受權加密建議:去買專業作安全的商業產品吧
加密和逆向一直是矛與盾的關係,加密算法一直在改進,逆向的方法也在改進。安全這方面我也只是個小白,只是分享下工做總結和以往的心得。但不管是作什麼都不要損害別人的利益,不要觸犯國家的法律,想要提升逆向水平在各個論壇都有教程和一些專門用來練習破解的Creakeme。