淺談android反調試之 轉送連接埠

來源:互聯網
上載者:User

標籤:nbsp   十進位   雙擊   修改   sock   arm   接下來   位移地址   版本   

反調試方案:我們最通常使用的動態工具是IDA, IDA的動態調試連接埠預設為23946,我們可以通過/pro/net/tcp 查看android 系統所有TCP Socket啟動android_server之後,/proc/net/tcp ,連接埠號碼是0x5D8A,十進位為23946

我們可以利用預設的調試連接埠23946 來實現反調試。實現代碼如下, 實現原理: Android作業系統不允許一個IP可能同時存在多個相同的連接埠的通訊端  解決方案:最常見的解決的解決方案, 我們不使用預設轉送連接埠23946。 android_server 提供命令指定轉送連接埠命令: ./android_server -p12345 ,注意連接埠號碼和參數之間沒有空格連接埠號碼變為0x3039,即12345雖然這種做法很簡單,但是對於一個崇尚簡約的程式員而言,每次都要都要指定連接埠,煩不煩。我們能不能和之前的通過逆向android_server, 通過修改android_server的預設連接埠來永久改變連接埠號碼。不同IDA版本的android_server 使用指令集不太一樣,比如IDA6.6 使用是ARM指令集, IDA6.8 使用的是Thumb指令集。不過修改方案是一致的, 筆者以使用Thumb指令集的IDA6.8的android_server.1. IDA開啟android_server, 找到main函數,如下:對應的二進位指令代碼

2.這裡需要知道一點關於ARM指令的知識,這裡的LDR R5, =5D8A, 一條偽指令, =5D8A指的指令和變數(儲存值為5D8A)的相對位移地址,這句為什麼同一條ARM彙編對應16進位不一樣了,因為指令地址不一樣,導致位移地址不一樣。 按照慣例,這個儲存5D8A的地址就在所在函數結束的後面.如下:

右側有個DATA_XREF可知,這裡有兩處被應用,即兩個偽指令LDR, R5, =0x5D8A的地址, 雙擊可以驗證。 3.接下來我們用二進位編輯工具010 Editor 編輯檔案位移B8D8將這個值改成我們指定連接埠號碼:12345(0x3039),儲存,測試 3. 測試OK 

 

淺談android反調試之 轉送連接埠

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.