武装少女在线观看高清完整版免费,丝袜+亚洲区,少妇被cao高潮呻吟声,午夜伦情电午夜伦情电影,日日躁夜夜躁狠狠躁

小程序模板網(wǎng)

Android"掛逼"修練之行--微信小程序逆向輔助插件工具開發(fā)詳解 ...

發(fā)布時(shí)間:2018-05-16 15:58 所屬欄目:小程序開發(fā)教程

一、前言

之前一篇文章已經(jīng)詳細(xì)介紹了 微信小程序包的格式 ,在之前文章中也了解到小程序包存放在沙盒目錄,但是微信為了讓小程序包安全就對(duì)文件名做了一個(gè)處理,導(dǎo)致我們很難找到對(duì)應(yīng)的小程序?qū)?yīng)的包文件,所以本文就來(lái)開發(fā)一個(gè)輔助插件,可以查看微信小程序的appid以及快速找到對(duì)應(yīng)的小程序包文件,然后利用之前的解析工具直接本地解析程序包即可,下面就開始我們的表演吧!

二、添加小程序菜單

首先第一步還是國(guó)際慣例,我們?nèi)绻霑簳r(shí)小程序的一些信息包括appid,版本號(hào),本地存放路徑文件名等,那么如何在微信頁(yè)面中展示呢?首先來(lái)看一下小程序的頁(yè)面:

 

然后我們就開始找到這個(gè)布局菜單,添加我們想要的菜單信息了,這個(gè)找入口有很多方式,比如可以通過(guò)字符串信息反編譯之后去找對(duì)應(yīng)的id值,或者是利用ui工具直接查看id信息,這里我就用這種方式:

 

看到了id是c8p,然后去反編譯微信之后在values/public.xml中查找這個(gè)值,記得是type=id,name=c8p這一項(xiàng)哦:

 

找到之后,把id值轉(zhuǎn)化成十進(jìn)制,然后去Jadx中搜索吧,這里要注意我也說(shuō)了很多遍了,微信做了拆包操作,而且微信包很大,直接用Jadx打開微信會(huì)卡死的,所以需要解壓依次打開它的所有dex文件即可,然后就是挨個(gè)dex中搜這個(gè)值即可:

 

然后繼續(xù)查找:

 

查看引用的地方:

 

點(diǎn)擊進(jìn)去查看定義:

 

然后就來(lái)到這個(gè)類,用的是RecyclerView控件了,這個(gè)類應(yīng)該就是操作初始化底部菜單的地方了,我們需要找到這個(gè)控件的adapter,查看如何添加菜單的,因?yàn)椴鸢鼘?dǎo)致這個(gè)類被分的很開,而這個(gè)類有很多內(nèi)部類,所以我們依次在每個(gè)dex中查找這個(gè)包下的這個(gè)類以及他的內(nèi)部類,最終在這個(gè)地方看到:

 

這里就要對(duì)android應(yīng)用開發(fā)有點(diǎn)熟練了,應(yīng)用開發(fā)都用過(guò)RecyclerView控件,他的adapter編寫格式都是統(tǒng)一的,這里看到及時(shí)混淆了,一看大致邏輯就清楚了。不過(guò)可惜的是,這個(gè)地方有個(gè)很大的坑,害得我浪費(fèi)很多時(shí)間:

 

我一直在g類中找a這個(gè)方法,但是找了好幾遍都沒(méi)找到,結(jié)果在smali代碼中找到了:

 

所以說(shuō)沒(méi)有一個(gè)工具是萬(wàn)能的,千萬(wàn)別相信任何一個(gè)工具。被坑殘了。然后我們看到返回值其實(shí)是g類的局部變量qWf,類型是com.tencent.mm.ui.base.n可以直接搜這個(gè)類看看:

 

 

 

看到這里就明白了,這個(gè)是微信內(nèi)部的統(tǒng)一菜單類,有一個(gè)菜單子選項(xiàng)的列表,然后繼續(xù)回去看g類的那個(gè)變量qWf:

 

看看他在哪里初始化的:

 

點(diǎn)擊進(jìn)行查看:

 

好了,在這里初始化的,所以我們就可以進(jìn)行hook操作了:

 

hook操作就不多解釋了,很簡(jiǎn)單了結(jié)合反射即可:

 

注意這里的菜單內(nèi)容先不要關(guān)心,后面會(huì)介紹如何獲取小程序的appid和版本號(hào)以及保存路徑的,然后運(yùn)行模塊,查看添加的菜單信息:

 

好了到這里我們就把這三個(gè)菜單添加好了,第一個(gè)菜單是為了查看小程序的appid和版本號(hào)信息,點(diǎn)擊可以復(fù)制,第二菜單是小程序包的保存路徑,點(diǎn)擊可以復(fù)制路徑。第三個(gè)是解析小程序包源碼。主要借助之前介紹的解析小程序包工具。

三、獲取小程序的相關(guān)信息

那么下面繼續(xù)來(lái)看如何獲取小程序包的appid和版本號(hào)信息,以及本地保存的文件路徑,入口也很操作,用ui工具查看當(dāng)前布局即可,不過(guò)這里我在介紹新的技巧就是用adb shell dumpsys activity top命令查看view結(jié)構(gòu):

 

我們知道WX內(nèi)部的所有WebView都是自己開發(fā)的x5內(nèi)核,而小程序加載肯定得用WebView的,所以從這找到突破口,然后去Jadx找這個(gè)u類,而且在之前分析過(guò)了,微信小程序的功能都在com.tencent.mm.plugin.appbrand這個(gè)包下面的:

 

看到這個(gè)類果然是繼承微信的內(nèi)部統(tǒng)一WebView,然后無(wú)意中發(fā)現(xiàn)這個(gè)類中有appid字段了,為什么我們會(huì)按照這思路去找appid呢?因?yàn)樾〕绦蛉肟谠趙ebview加載的,那么肯定在這個(gè)地方用到了appid了,所以我們的思路沒(méi)有問(wèn)題的,繼續(xù)查看這個(gè)字段的使用:

 

看到這個(gè)地方在構(gòu)造一個(gè)webview需要加載的url信息,看到appid參與其中了,還有一個(gè)字段,其實(shí)這個(gè)就是小程序的版本號(hào),后面我們會(huì)看到。我們可以先hook這個(gè)方法看看appid是否能獲取到:

 

這里做了一個(gè)處理,就是把a(bǔ)ppid分離出來(lái)以及版本號(hào),然后保存到全局變量中,用于菜單顯示使用,我們運(yùn)行模塊,看看運(yùn)行結(jié)果:

 

我們知道小程序的appid都是wx開頭的,這里可以看到的確拿到了appid值,那么第二個(gè)到底是不是版本號(hào)呢?后面會(huì)說(shuō),先來(lái)看看如何獲取小程序包路徑信息,這里我們這么操作,因?yàn)槲覀冊(cè)谥耙呀?jīng)知道了小程序包都是放在這個(gè)目錄下:

/data/data/com.tencent.mm/MicroMsg/4d0238658a35658e7bc9597a2de4d49e/appbrand/pkg/ 

 

我們?nèi)炙阉鱳xapkg,看看這個(gè)文件名是如何定義的:

 

找到這個(gè)地方,格式和我們看到的很類似,這樣我們直接hook這個(gè)方法,看看返回值路徑是什么,以及傳入的參數(shù)是啥:

 

運(yùn)行模塊查看結(jié)果:

 

看到這里發(fā)現(xiàn)第一個(gè)參數(shù)就是小程序appid,第二個(gè)參數(shù)很有可能就是版本號(hào),返回的路徑也是上面我們知道的,那么有的同學(xué)好奇了,這里直接hook然后保存一下路徑不就可以了嗎?其實(shí)我們?cè)趆ook發(fā)現(xiàn),這個(gè)方法只有首次加載程序包會(huì)調(diào)用。但是我們想要的效果是每次打開小程序點(diǎn)擊菜單都能看到。如果保存很不方便。所以這里我們直接用appid和版本號(hào)進(jìn)行構(gòu)造,構(gòu)造方式如下:

 

小程序appid字符串的hashCode值和版本號(hào)即可。有了之前的固定路徑那么就可以了。下面再來(lái)看一下這個(gè)參數(shù)到底是不是版本號(hào)呢?查看這個(gè)ae方法的調(diào)用地方:

 

這里通過(guò)字段名稱就可以看到就是版本號(hào)了。所以到這里我們就把小程序的appid,版本號(hào),路徑構(gòu)造方法獲取到了,下面操作就簡(jiǎn)單了。需要hook上面繼承webview類的u類的aeN方法即可,然后通過(guò)分解獲取到appid和版本號(hào),上面已經(jīng)運(yùn)行有結(jié)果了,這里不在演示了:

 

看到這個(gè)方法是每次打開小程序都會(huì)調(diào)用,我們只要做個(gè)簡(jiǎn)單判斷,有appid和版本號(hào)就保存到全局變量。然后在打開菜單的時(shí)候,把這兩個(gè)信息放到菜單中,然后在利用這兩個(gè)字段構(gòu)造出本地小程序包的路徑放在第二菜單中。最后一個(gè)菜單就是解析小程序了。這里我們的操作很簡(jiǎn)單了,先把沙盒中的wxapkg拷貝到SD卡下的指定目錄,然后在借助之前寫的解析小程序包工具直接解析即可。

四、添加菜單點(diǎn)擊事件

下面還有一個(gè)問(wèn)題就是菜單的點(diǎn)擊事件,這個(gè)我們還是要回到之前的g類中以及內(nèi)部類中進(jìn)行查看,最終找到這個(gè)類,因?yàn)間類和內(nèi)部類不是很多,按個(gè)找dex很快就定位到了:

 

然后我們攔截這個(gè)onItemClick方法,處理0,1,2這三個(gè)我們添加的菜單點(diǎn)擊事件即可:

這樣我們就處理了三個(gè)菜單選項(xiàng)的點(diǎn)擊事件了,菜單名稱使用之前hook成功的appid值,路徑構(gòu)造是appid值和版本號(hào)即可,主要說(shuō)一下最后的解析工作:

先把wxapkg包從沙盒中拷貝到SD卡的指定目錄中,然后傳入路徑,開始執(zhí)行我之前寫的解析小程序包的工具即可。

嚴(yán)重聲明

本文的意圖只有一個(gè)就是通過(guò)分析app學(xué)習(xí)更多的逆向技術(shù),如果有人利用本文知識(shí)和技術(shù)進(jìn)行非法操作進(jìn)行牟利,帶來(lái)的任何法律責(zé)任都將由操作者本人承擔(dān),和本文作者無(wú)任何關(guān)系,最終還是希望大家能夠秉著學(xué)習(xí)的心態(tài)閱讀此文。 鑒于安全問(wèn)題,樣本和源碼都去編碼美麗小密圈自取!微信掃一掃進(jìn)入小密圈:

五、總結(jié)

好了到這里,我們就把整個(gè)工具插件寫完了,我們主要分為三部分:

第一部分:添加菜單用于展示小程序的信息,包括appid,版本號(hào),本地程序包路徑。

第二部分:通過(guò)分析獲取到小程序的appid,版本號(hào)信息保存用于第一步的菜單內(nèi)容展示。

第三部分:添加子菜單的點(diǎn)擊事件,路徑和appid點(diǎn)擊就是賦值信息。解析小程序包直接調(diào)用之前的工具即可。

而在這三部分的突破口都是利用界面View分析獲取到的,有兩種方式:一種是借助UI分析工具,一種是利用adb命令;兩種方式都是可以操作使用的。下面來(lái)看看我們操作的效果吧:

 

復(fù)制路徑和appid值

 

解析程序包到本地

到這里我們就完成了本次操作,大家可以看到這個(gè)插件對(duì)于小白用戶沒(méi)啥用途,但是對(duì)于我們后續(xù)的逆向操作非常有用的,我們?nèi)绻肽嫦蚰膫€(gè)小程序,直接解壓看源碼即可。也可以拷貝到電腦上進(jìn)行分析更方便了。其實(shí)每次寫微信插件都很費(fèi)勁的,原因就在于微信包太大了,導(dǎo)致電腦非常的卡。所以寫個(gè)插件不容易,喜歡的就點(diǎn)個(gè)贊分享吧!



易優(yōu)小程序(企業(yè)版)+靈活api+前后代碼開源 碼云倉(cāng)庫(kù):starfork
本文地址:http://www.kknew.com.cn/wxmini/doc/course/24437.html 復(fù)制鏈接 如需定制請(qǐng)聯(lián)系易優(yōu)客服咨詢: 點(diǎn)擊咨詢
在線客服
易小優(yōu)
轉(zhuǎn)人工 ×