1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        程序員如何寫更安全的代碼?

        共 1324字,需瀏覽 3分鐘

         ·

        2021-03-24 14:00

        點擊上方藍字關注小道安全



        技術背景


        作為程序開發(fā)人員,我們害怕,聽到開發(fā)的代碼,被測試出bug;我們更害怕,聽到我們所開發(fā)出來的產(chǎn)品上線了,被新手安全研究員給反匯編逆向破解,代碼功能直接被人給盜取了。下面根據(jù)我自己的一些項目經(jīng)驗,跟大家分享兩點如何能開發(fā)出相對安全的代碼。以下方案不局限于任何語言代碼開發(fā),是一個相對通用的安全編碼方案。



        字符串的安全方案


        直接使用字符串


        不建議使用理由:直接定義使用字符串,因為字符串是一個常量,所以我們直接能在靜態(tài)反匯編中直接看到字符串的數(shù)據(jù)信息。

        下圖可以很清晰的看懂字符串信息”ntdll.dll”,這樣就把代碼的字符串信息直接暴露給大家,這樣大家就可以通過字符串信息做一些對代碼不安全的事情了。


        字符串賦值到數(shù)組使用


        建議使用理由:將字符串寫到數(shù)組里面并進行賦值,使得字符串存放在堆里面,這樣在程序的字符串常量信息就無法直接看到字符串信息,這樣進行靜態(tài)分析(IDA)的時候字符串信息就沒有展示了,這個需要進行動態(tài)分析(ollydbg)才能分析到字符串信息。


        下圖展示的是通過將字符串信息存儲在數(shù)組中的匯編代碼,在實際的匯編代碼中展示的是一串數(shù)據(jù),而不是直接的字符串,這就無法直接看到字符串信息去理解代碼,要想理解這串字符串信息,那么就需要去做動態(tài)調(diào)試分析。從而加強代碼的安全性。



        調(diào)用系統(tǒng)函數(shù)安全方案



        直接調(diào)用系統(tǒng)的函數(shù)


        不建議使用理由:我們在編碼過程中,有很多功能系統(tǒng)都已經(jīng)有提供的函數(shù)接口,一般情況下我們都是直接調(diào)用系統(tǒng)函數(shù)直接進行實現(xiàn)功能。但你知道嗎?你這樣直接調(diào)用系統(tǒng)函數(shù)在一些場景下是不安全的,當你的程序在被安全逆向研究的時候,直接可以通過程序的導入表,以及反匯編看到調(diào)用的系統(tǒng)函數(shù),這樣我們只要一查下系統(tǒng)函數(shù)的功能,那么就可以知道大概的功能點,還有只要一掛鉤(HOOK技術)上系統(tǒng)的函數(shù),那么你所調(diào)用的系統(tǒng)函數(shù)的功能就失效了。

        下圖展示上面函數(shù)通過調(diào)用系統(tǒng)函數(shù)實現(xiàn)的匯編代碼。大家可以直接通過展示的系統(tǒng)函數(shù)去分析功能。


        自定義實現(xiàn)函數(shù)再調(diào)用函數(shù)

        建議使用理由:我們對于關鍵功能函數(shù)建議還是采用自己去實現(xiàn)函數(shù)功能,再去調(diào)用,這樣可以加強程序被直接分析的難度,從而加強程序的安全性。

        下圖是自定義實現(xiàn)函數(shù)調(diào)用的匯編代碼,可以從下面匯編代碼看到關鍵函數(shù)是自己實現(xiàn)的,那么要了解該函數(shù)功能就需要進入到函數(shù)內(nèi)部去做分析。這從而加強了關鍵函數(shù)功能的相對安全



        總結(jié)


        最后說明,以上是經(jīng)過項目實踐總結(jié)出來的安全開發(fā)方案。我們在項目開發(fā)中需要寫高內(nèi)聚,多耦合的代碼,同樣也需要寫一些沒有bug的代碼,更需要寫一些更加相對安全的代碼,更需要寫一些能增加逆向破解者分析程序的難度(注:這里會有專業(yè)人士會說代碼直接加VMP保護,不啥問題都沒有了嗎?不過這這里只進行說明代碼開發(fā)的一點安全思路),這個才是我們程序員的終極目標,希望本文所闡述的思想能夠讓大家有所啟發(fā)。


        End


        更多最新IT資訊,可以關注下面公眾號

        瀏覽 21
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            老师让我她我爽了电影 | jizjiz中国少妇高潮水多 | 超碰人人看人人 | 亚洲av无码在线看 | 成人AAAAA片免费观看 | 成人免费无码淫片在线观看免费 | 国产女主播一区二区三区 | 99热在线精品观看 | 毛片A| 中文字幕在线亚洲 |