小白,要使用這個武器,就要先打通經脈。
1.Root,手機root,無root不安卓。打通root經脈我們才能進行之後的操作。
2.Xposed框架安裝,想要使用Xposed這個武器,就要先能拿的起來才能談使用。
xposedBridgeApi-82.jar.jar。
這個就是我們的武器了,小白,來,我給你示範示範這個武器的基本使用方法。
我們這裡使用Xposed武器攔截packageName,然後進行輸出。
其實這個武器還是搭配內功才能發揮最大的能力。
搭配內功,師傅,這個怎麼搞。
莫急莫急,我們一步一步來。
小白,我先傳授你第一重內功的運行穴位。要好好聽哦。
我們先來提供內容運作一個環境。
(1)先建立一個不需要Activity的專案
(2)然後導入jar套件。並且右鍵add as Library。
(3)填入Androidmanifest.xml檔。
<meta-data></meta-data> <meta-data></meta-data> <meta-data></meta-data>
(4) 修改依賴方式
Xposed裡已有該jar套件內容,再次打包進去會衝突。
(5)基本Xposed模型建立
使用alt enter實作一個方法。
小白,聽我囉嗦兩句。
handleLoadPackage,這個方法用於在載入應用程式的套件的時候執行使用者的操作。
LoadPackageParam loadPackageParam:,這個參數包含了載入的應用程式的一些基本資訊。
這裡一句話就可以實作。
XposedBridge.log("HAI_app: " loadPackageParam.packageName);
這裡我們要進行思考了,什麼是 XposedBridge.log了。
The print of posedBridge.log will be output to the logging feature of the xposed framework's startup program.。這樣也更方便我們的查看。
我們來做設定的最後一步。設定開始地方。
新建assets目錄裡,新建一個file。 file名稱為xposed_init。
寫入套件名稱 類別。
Build APK
#安裝進行測試。
手機安裝然後重新啟動即可。
所謂師父領進門,修行看個人。所以啊。
我知道了師傅,我們是不是可以透過這個簡單的來進行過濾啊。例如寫一個簡單的分析系統。或者是其他的東西,我們還可以對這個進行過濾。我先自己去試試。
透過這個運行路徑,對報名進行分析和過濾。
進行簡單的嘗試。
使用昨天學的java字串的substring來進行對字串過濾。
然後進行測試。
當然也可以針對這個進行更詳細的說明。
小白,來來,師傅這裡給你找了一個木樁,我打給你看看。這個hook是怎麼法功的,怎麼打的。要學好。
知道了師傅。
小白啊,用我們之前使用過的一個武器,來收集這些基本資訊。
師傅,我們一般都會收集什麼資訊啊。
恩,我們一般要收集
1.木樁的包名
2.木樁的簡單的邏輯
....
小白啊,收集玩了吗?
收集完了师傅。
好,我们接下来收集反编译信息。知己知彼,方能百战不殆。
首先我们来看看我们要收集的东西。
1.关键的类名。
2.关键的函数位置。
来用Android Killer武器反编译木桩。
定位。
查看类名,进行记录。
小白,看清楚,是这个样子进行记录。
原来是这样。com/example/login/MainActivity;
但是我们要改成这样的。com.example.login.MainActivity
现在就需要定位到关键函数了。
这个login就是我们要Hook住的函数啦。
Ljava/lang/String;Ljava/lang/String;从这里我们可以看到是两个输入内容。并且类型是String。我们现在要做的就是要hook住这个输出,然后对其进行输出。
好了,小白,前期资料收集的差不多了。我现在要发功了,要看清楚我的使用哦。
先把环境调整好。
然后先做一个简单的过滤。
这个时候,收集的包名就排上用场了。
因为是hook的是方法,所以我们这里使用一个方法。
第一个参数,要hook的包名+方法名,这个也是我们收集好的。
第二个参数不动
第三个参数方法名
第四个参数 输入的参数
我们有两个String类型的参数,所以才这样写
最后一个参数,就是做一个监听。可以监听这个方法的使用前和使用后。
小白,一切准备你就须,看为师给你f这个木桩。
小白,你看这第一招
XposedBridge.log("ZHUZHU520:LoginName:"+param.args[0]);
这一招搞它的第一个输入。
然后再来看这一招
XposedBridge.log("ZHUZHU520:Passward:"+param.args[1]);
这一招搞它的第二个输入。
然后最后一招。
XposedBridge.log("ZHUZHU520:end???:"+param.getResult());
这一招就是拦截返回值。
小白啊,这里有一个需要思考的内容。
这样hook的意义或者作用是什么?
师傅,我觉得首先,这样可以拦截下输入的参数,还有返回的值。如果在hook里做一个转发信息的技能。那不就可以成功的对登录账户的人进行账号和密码的获取。
这不就是和钓鱼一样了嘛。
我觉得这是一个很大的漏洞,如果登录厂商没有做相应的处理,那这里我可以拿这个搞死他。
好了,小白,你说的很对,我们现在来对这个进行下测试吧。
小白啊,你看这里我们就成功的拦截内容了。小白分配给你一个任务,使用hook f来拦截木桩,并确保不管我是否输入正确,木桩能够成功登录。
XposedBridge.log("ZHUZHU520:end???:"+param.getResult());
师傅之前使用了一个param.getResult()获取了返回值,那我是不是可以使用相同的set方法,重新对这个进行赋值啊。
根据各种方式,我们知道了这里的返回值就是Z,也就是布尔型。
说干就干,争取f掉木桩。
以上是Android逆向進階的方法是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!