互操作性是逆向工程 API 的主要原因之一。
以下是關(guān)于逆向工程 API 的關(guān)鍵要點(diǎn):
互操作性是逆向工程 API 的主要原因之一。與幾十年前軟件可以獨(dú)立存在不同,如今程序運(yùn)行在復(fù)雜的操作系統(tǒng)上,并涉及與不同人創(chuàng)建的多個(gè)庫(kù)進(jìn)行通信。互操作性的逆向工程 API 涉及API 集成和學(xué)習(xí)程序交換和使用信息的新方法。逆向工程還有助于揭露安全故障和低效的隱私實(shí)踐。例如,根據(jù)衛(wèi)生和公眾服務(wù)部的數(shù)據(jù),醫(yī)療保健行業(yè)在 2021 年見(jiàn)證了創(chuàng)紀(jì)錄的數(shù)據(jù)泄露數(shù)量。逆向工程可以通過(guò)跟蹤源代碼來(lái)識(shí)別重大安全漏洞來(lái)解決此問(wèn)題,從而確保系統(tǒng)的安全。
對(duì)于希望了解和利用現(xiàn)有 API 的開(kāi)發(fā)人員和組織來(lái)說(shuō),逆向工程 API 具有多種優(yōu)勢(shì)。以下是一些主要優(yōu)勢(shì):
雖然逆向工程 API 可能是一種有價(jià)值的做法,但重要的是要考慮所涉及的潛在缺點(diǎn)和挑戰(zhàn)。以下是需要牢記的一些主要缺點(diǎn):
開(kāi)發(fā)人員使用工具來(lái)實(shí)現(xiàn)代理,以對(duì)私有或公共 API 進(jìn)行逆向工程。Web 代理服務(wù)器是一種備用服務(wù)器,可以捕獲網(wǎng)站的真實(shí)服務(wù)器和 Web 瀏覽器之間的 HTTP 請(qǐng)求。您可以使用任何透明的 HTTP/S 代理來(lái)實(shí)現(xiàn)此目的。
步驟 1:從mitmproxy.org安裝可執(zhí)行文件以啟動(dòng)服務(wù)器。
步驟2:打開(kāi)8080端口或者禁用防火墻。
步驟 3:轉(zhuǎn)到手機(jī)的 Wi-Fi 設(shè)置并導(dǎo)航到代理服務(wù)器以輸入 PC 的 IP 地址。
步驟 4:在 Android 手機(jī)上訪問(wèn) http://mitm.it/ 并安裝所需的證書(shū)。對(duì)于 iOS,您需要訪問(wèn) iPhone 的設(shè)置并確認(rèn)安裝最近下載的證書(shū)。
第五步:在你的Chrome瀏覽器上訪問(wèn)一個(gè)網(wǎng)站,你將能夠查看mitmproxy上的流量。
第 6 步:探索任何私有 API,并熟悉 API 的端點(diǎn)及其 JSON 有效負(fù)載格式。
步驟 7:復(fù)制 API 調(diào)用以查看不同的選項(xiàng)。
在 mitmproxy 中重放請(qǐng)求時(shí),您應(yīng)該識(shí)別必需的標(biāo)頭。要測(cè)試 API,您還可以使用瀏覽器擴(kuò)展程序(例如 Postman)。但是,這樣做無(wú)法避免創(chuàng)建不必要的標(biāo)頭。
Postman 通過(guò)使客戶端請(qǐng)求更加清晰可見(jiàn),使復(fù)制請(qǐng)求變得更加容易。您還可以使用 Postman 檢查單個(gè)請(qǐng)求或請(qǐng)求流。以下是導(dǎo)入單個(gè)請(qǐng)求的步驟。
步驟1:進(jìn)入ChromeDevTools,右鍵選擇Inspect打開(kāi)面板。
第 2 步:導(dǎo)航到“網(wǎng)絡(luò)”選項(xiàng)卡以查看網(wǎng)絡(luò)請(qǐng)求。
步驟3:選擇要導(dǎo)入到Postman的請(qǐng)求。
步驟4:右鍵單擊請(qǐng)求并選擇復(fù)制為cURL。
步驟5:現(xiàn)在,轉(zhuǎn)到 Postman 應(yīng)用程序并單擊導(dǎo)入按鈕。
步驟 6:導(dǎo)航到粘貼原始文本并粘貼您的 cURL 并授權(quán)導(dǎo)入。您的請(qǐng)求現(xiàn)已成功導(dǎo)入 Postman 以供進(jìn)一步檢查。
這些步驟只是幫助您開(kāi)始檢查網(wǎng)站上的 HTTP 流量并了解正在發(fā)生的事情。有時(shí)網(wǎng)站可能會(huì)使用 SSL 證書(shū)鎖定來(lái)限制對(duì)特定網(wǎng)站有效的證書(shū)。需要注意的是,如果網(wǎng)站使用證書(shū)鎖定,這些步驟可能不起作用。此外,您可能會(huì)遇到需要進(jìn)行身份驗(yàn)證的復(fù)雜請(qǐng)求。
在對(duì) API 進(jìn)行逆向工程時(shí),您經(jīng)常會(huì)遇到加密或混淆的數(shù)據(jù)。這可能包括發(fā)送和接收的數(shù)據(jù),以及所涉及的身份驗(yàn)證機(jī)制。理解和解密這些數(shù)據(jù)對(duì)于全面分析 API 的功能至關(guān)重要。
加密算法旨在保護(hù)數(shù)據(jù),這使得逆向工程更具挑戰(zhàn)性。API 中使用的常見(jiàn)算法包括AES(高級(jí)加密標(biāo)準(zhǔn))、RSA 等,但也可能遇到自定義或?qū)S屑用芊椒āR韵率悄梢匀绾螌?duì)加密 API 進(jìn)行逆向工程:
提取加密通信中使用的密鑰或令牌通常是解密數(shù)據(jù)和了解 API 行為所必需的。以下是提取這些關(guān)鍵元素的技術(shù):
逆向工程是一種強(qiáng)大的工具,可幫助軟件開(kāi)發(fā)人員改進(jìn)其代碼以及不同程序之間的互操作性。有時(shí),API 編寫不正確,因此第三方開(kāi)發(fā)人員別無(wú)選擇,只能對(duì)他們想要使用的程序進(jìn)行逆向工程。
本文翻譯源自:https://blog.dreamfactory.com/reverse-engineering-apis-the-benefits-and-tools