日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

360加固逆向脱壳之过反调试

發布時間:2025/3/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 360加固逆向脱壳之过反调试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

寫在最前,本來是想把360加固全部脫殼后,寫一篇教程。不過在我過了360加固調試后,最后卡在了native void onCreate函數的提取。最后就無結果了。但又發現許多人卡在了360加固的反調試,為了幫助其他人能成功(其實我沒有這么偉大,只是發現寫這篇文章對我沒有害處,就決定放出來),而且希望,如果有人把native void onCreate函數dump下來的話,請覓我,我真的很想知道360加固的原理與逆向方法(這才是重點)。哦,對了,360加固版本是1.3,如果用的Android的 art 模式,在網上有一篇文章是修改系統的,可直接dump出源碼,不過我沒有親測,而我用的是dalvik模式,主要是為了弄清360加固的加固原理與反調試原理。

?

我的360加固1.3樣本下載地址:?http://pan.baidu.com/s/1pKSP22n


好了,讓我們開始吧。

?

一、使用系統上,我用android4.4編譯了一個自己的android系統,并且運行在虛擬機上運行,(由此不用把APK改為什么Debug模式了,因為我用的系統就是Debug模式)修改的地方是在Native.cpp 文件中的dvmLoadNativeCode函數中 version =(*func)(gDvmJni.jniVm, NULL); 之前加入sleep(20); 之后IDA會自動斷點在sleep之后,是不是很神奇?


二、啟動虛擬機,并使用編譯好的android 系統包(具體怎么編譯,是另外的一篇教程了,可以網上搜索到,很多的。),不過也可以直接是用jdb作為橋接。

?

寫在第三步之前,其實這里面還有一個可有可無的東西,需要把apk用apktool可解壓,但是直接用現有的apktool解壓會失敗,解決方法是直接去獲取apktool的源碼,并且修改一個地方就OK了,至于修改哪里,有興趣的朋友可以自己查找。應該都能過的。

?

三、虛擬機啟動后,打開一個cmd,在其中輸入adb forward tcp:23946 tcp:23946

再打開一個cmd,在之中運行adb shell, 然后在運行/data/local/tmp/android_server(是用IDA里面的android_server,放入到虛擬機的,并且修改了權限,網上有很多教程,可搜索)

然后在虛擬機中運行Test360_2(也就是我制作的一個360加固的hello_world樣本,已經簽名好了的)

?

四、然后就開始用IDA attach Test360_2進程了。關鍵性的東西來了。

一開始,IDA會自動斷點在這里


經過4,5步F7后,來到libdvm.so


紅色圓圈是我在系統源碼中打的調試信息,然后在BLX R10處F7,也就是進入函數jni_onload()然后來到并在紅色進入F7

來到,紅色出 F7


來到,并在紅色處 F7


進入上面第一個紅色后,鼠標滾輪往下找到switch 函數,并在case 25下斷點,如下圖



然后F9(好像是按了2次F9,呵呵),反正是來到case 25,然后在 case ?14 下斷點如圖


F7進入

多次單步F7后,來到


?把R3寄存器的6000010改為A000010 (這里的反調試檢測,可能是檢測rtld_db_dlactivity 函數,不過不太確定,因為沒有看見源代碼)

?

然后單步,把case 14與case 25的斷點給取消掉,并在case 29下斷點,并且進入,當BLX? LR調用 strtol 的時候,需要單步出來修改一些值,來到MOV R7,R0的時候

修改R0的之后0,

?



并且把 R1的hex處改為0,如下圖中的紅色出,需要修改為0

這里以上是檢測 TracePID


然后繼續F9,在多次 case 29 多次下斷點后,來到


在CMP處,把R0的值修改為0(這里是檢測調試端口),然后F9

還是來到


在MOV R7,R0處下端點,并修改R0與R2的值,



修改為堆棧中的值(可能你的這個值不一樣,因為這個值是之前調試的時候的一個時間。這里是時間檢測)

?然后就沒有反調試的代碼了,多次F9后,就來到了

來到了全新的世界。可是我最后沒有dump出native void onCreate,遺憾。


原文地址:?http://blog.csdn.net/chen249191508/article/details/52779264



總結

以上是生活随笔為你收集整理的360加固逆向脱壳之过反调试的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。