android加固系列—5.加固前先學會破解,hook(鉤子)jni層系統api,androidjni

來源:互聯網
上載者:User

android加固系列—5.加固前先學會破解,hook(鉤子)jni層系統api,androidjni

【著作權,轉載請註明出處。出處:http://www.cnblogs.com/joey-hua/p/5138585.html】

crackme項目jni的關鍵代碼(項目地址見文章底部),擷取當前程式的包名com.example.shelldemo和com.example.nocrack對比,正常運行結果是this app is illegal,這裡的破解內容是hook strcmp函數來修改函數傳回值來改變程式走向以達到running successfully。

 

1.工具介紹

Eclipse + ndk,編譯jni源碼

cmd視窗

 

2.準備工作

手機root。

在編譯以下的c檔案之前有個地方需要你自行修改,mystrcmp.c下的

 

com.example.crackme-2有可能是com.example.crackme-1

A.編譯inject.c並傳輸

在Android.mk中輸入,並編譯產生inject:

LOCAL_PATH := $(call my-dir)  include $(CLEAR_VARS)  LOCAL_MODULE := inject   LOCAL_SRC_FILES := inject.c   LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llog  include $(BUILD_EXECUTABLE)

 

然後開啟cmd命令視窗進入到檔案的目錄下並輸入:

adb push inject /data/local/tmp

將檔案inject推送到手機的/data/local/tmp目錄下

 

B.編譯mystrcmp.c並傳輸

在Android.mk中輸入,並編譯產生libmystrcmp.so:

LOCAL_PATH := $(call my-dir)  include $(CLEAR_VARS)  LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llog -lEGL  LOCAL_MODULE    := mystrcmp  LOCAL_SRC_FILES := mystrcmp.c  include $(BUILD_SHARED_LIBRARY)

 

然後在命令視窗輸入:

adb push libmystrcmp.so /data/local/tmp

 

 

3.開始hook

首先在手機上啟動crackme,然後在pc端開啟一個新的命令視窗,並輸入:

adb shell

su

cd  /data/local/tmp

chmod 777 *

ps | grep com.example.crackme

./inject 3166(這裡對應的是你進程的pid)

 

這時候觀察eclipse的logcat的INJECT標籤就會發現

 

觀察com.example.crackme

 

表明注入成功了,並且找到了strcmp函數,完整的意思就是已經把我們的libstrcmp.so注入到進程com.example.crackme裡了。並且把我們自己新寫的strcmp函數的地址替換掉了系統的strcmp函數地址,請看關鍵代碼:

got_item = *(uint32_t *)(out_addr + i);                    if (got_item  == old_strcmp) {                        LOGD("Found strcmp in got\n");                        got_found = 1;                        uint32_t page_size = getpagesize();                        uint32_t entry_page_start = (out_addr + i) & (~(page_size - 1));                        mprotect((uint32_t *)entry_page_start, page_size, PROT_READ | PROT_WRITE);                        *(uint32_t *)(out_addr + i) = new_strcmp;

現在其實已經成功了,那麼就來運行吧,首先在命令視窗按斷行符號

 

然後在手機上點擊按鈕“檢測是否被crack”

 

這時調用了我們自訂的strcmp,並獲得了傳遞過來的兩個字串參數,並且始終返回成功0,見關鍵代碼:

 

至此程式已破解。

 

 

crackme項目地址

Hook項目地址

聯繫我們

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