編輯:關於android開發
【版權所有,轉載請注明出處。出處: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項目地址】
第三方開源水面波浪波形view:WaveView,viewwaveview一個比較有趣的Android第三方開源波形view:WaveView,這種WaveView在一些
1.在程序中添加一個斷點 如果所示:在Eclipse中添加了一個程序斷點 在Eclipse中一共有三種添加斷點的方法 第一種: 在紅框區域右鍵
Android筆記——Button點擊事件幾種寫法,androidbuttonButton點擊事件:大概可以分為以下幾種: 首先我們簡單地定義一個帶But
與MySQL傳統復制相比,GTID有哪些獨特的復制姿勢?本文為DBA+社群的投稿文章:http://dbaplus.cn/news-11-857-1.html與MySQL