360加固逆向脱壳之过反调试
寫在最前,本來是想把360加固全部脫殼后,寫一篇教程。不過在我過了360加固調(diào)試后,最后卡在了native void onCreate函數(shù)的提取。最后就無結(jié)果了。但又發(fā)現(xiàn)許多人卡在了360加固的反調(diào)試,為了幫助其他人能成功(其實我沒有這么偉大,只是發(fā)現(xiàn)寫這篇文章對我沒有害處,就決定放出來),而且希望,如果有人把native void onCreate函數(shù)dump下來的話,請覓我,我真的很想知道360加固的原理與逆向方法(這才是重點)。哦,對了,360加固版本是1.3,如果用的Android的 art 模式,在網(wǎng)上有一篇文章是修改系統(tǒng)的,可直接dump出源碼,不過我沒有親測,而我用的是dalvik模式,主要是為了弄清360加固的加固原理與反調(diào)試原理。
?
我的360加固1.3樣本下載地址:?http://pan.baidu.com/s/1pKSP22n
好了,讓我們開始吧。
?
一、使用系統(tǒng)上,我用android4.4編譯了一個自己的android系統(tǒng),并且運行在虛擬機上運行,(由此不用把APK改為什么Debug模式了,因為我用的系統(tǒng)就是Debug模式)修改的地方是在Native.cpp 文件中的dvmLoadNativeCode函數(shù)中 version =(*func)(gDvmJni.jniVm, NULL); 之前加入sleep(20); 之后IDA會自動斷點在sleep之后,是不是很神奇?
二、啟動虛擬機,并使用編譯好的android 系統(tǒng)包(具體怎么編譯,是另外的一篇教程了,可以網(wǎng)上搜索到,很多的。),不過也可以直接是用jdb作為橋接。
?
寫在第三步之前,其實這里面還有一個可有可無的東西,需要把apk用apktool可解壓,但是直接用現(xiàn)有的apktool解壓會失敗,解決方法是直接去獲取apktool的源碼,并且修改一個地方就OK了,至于修改哪里,有興趣的朋友可以自己查找。應該都能過的。
?
三、虛擬機啟動后,打開一個cmd,在其中輸入adb forward tcp:23946 tcp:23946
再打開一個cmd,在之中運行adb shell, 然后在運行/data/local/tmp/android_server(是用IDA里面的android_server,放入到虛擬機的,并且修改了權(quán)限,網(wǎng)上有很多教程,可搜索)
然后在虛擬機中運行Test360_2(也就是我制作的一個360加固的hello_world樣本,已經(jīng)簽名好了的)
?
四、然后就開始用IDA attach Test360_2進程了。關(guān)鍵性的東西來了。
一開始,IDA會自動斷點在這里
經(jīng)過4,5步F7后,來到libdvm.so
紅色圓圈是我在系統(tǒng)源碼中打的調(diào)試信息,然后在BLX R10處F7,也就是進入函數(shù)jni_onload()然后來到并在紅色進入F7
來到,紅色出 F7
來到,并在紅色處 F7
進入上面第一個紅色后,鼠標滾輪往下找到switch 函數(shù),并在case 25下斷點,如下圖
然后F9(好像是按了2次F9,呵呵),反正是來到case 25,然后在 case ?14 下斷點如圖
F7進入
多次單步F7后,來到
?把R3寄存器的6000010改為A000010 (這里的反調(diào)試檢測,可能是檢測rtld_db_dlactivity 函數(shù),不過不太確定,因為沒有看見源代碼)
?
然后單步,把case 14與case 25的斷點給取消掉,并在case 29下斷點,并且進入,當BLX? LR調(diào)用 strtol 的時候,需要單步出來修改一些值,來到MOV R7,R0的時候
修改R0的之后0,
?
并且把 R1的hex處改為0,如下圖中的紅色出,需要修改為0
這里以上是檢測 TracePID
然后繼續(xù)F9,在多次 case 29 多次下斷點后,來到
在CMP處,把R0的值修改為0(這里是檢測調(diào)試端口),然后F9
還是來到
在MOV R7,R0處下端點,并修改R0與R2的值,
修改為堆棧中的值(可能你的這個值不一樣,因為這個值是之前調(diào)試的時候的一個時間。這里是時間檢測)
?然后就沒有反調(diào)試的代碼了,多次F9后,就來到了
來到了全新的世界。可是我最后沒有dump出native void onCreate,遺憾。
原文地址:?http://blog.csdn.net/chen249191508/article/details/52779264
總結(jié)
以上是生活随笔為你收集整理的360加固逆向脱壳之过反调试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习利器: TensorFlow系统
- 下一篇: 360脱壳-native函数还原笔记-2