国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

從制作一個(gè)“微信多開版”看微信安全

UsherChen / 1663人閱讀

摘要:多開思路從開發(fā)角度來說,擁有不同包名的個(gè)應(yīng)用,系統(tǒng)會(huì)認(rèn)為是個(gè)應(yīng)用,所以微信多開的思路是修改微信的包名,讓安卓系統(tǒng)認(rèn)為這是個(gè)應(yīng)用,從而達(dá)到多開的目的。微信團(tuán)隊(duì)一直在努力維護(hù)微信這個(gè)生態(tài)圈,期待加入更多的技術(shù)手段來完善應(yīng)用安全,祝一切順利。

前言

第一次聽到微信多開大概在2013年,一個(gè)做微商的朋友,問我能不能做一個(gè)微信安卓版的多開程序,我覺得挺有意思估計(jì)也不難,便研究起來。研究后也發(fā)現(xiàn)其實(shí)也有一些技術(shù)難點(diǎn),和了解到的一些微信的安全策略,寫出來與大家分享,不足之處多多指教。

0x00 多開思路

從Android開發(fā)角度來說,擁有不同包名的2個(gè)應(yīng)用,Android系統(tǒng)會(huì)認(rèn)為是2個(gè)應(yīng)用,所以微信
多開的思路是修改微信的包名,讓安卓系統(tǒng)認(rèn)為這是2個(gè)應(yīng)用,從而達(dá)到多開的目的。

0x01 工具準(zhǔn)備

系統(tǒng)環(huán)境是OS X 10.11

apktool 2

dex2jar

JD-GUI

baksmali & smali

0xED

Sublime Text

0x02 APK解包與分析

使用apltool進(jìn)行解包,我們可以看到一些關(guān)鍵的文件和目錄:

AndroidManifest.xml文件

assets目錄(微信插件和一些資源文件)

lib目錄(封裝好的二進(jìn)制類庫,so文件)

res目錄(圖片,布局,字符串等資源)

smali目錄(微信源碼)

0x03 應(yīng)用名稱修改

要制作多開的微信,也許我們需要把應(yīng)用修改一個(gè)名稱,以便使用的時(shí)候和原版的區(qū)分,找到
以下文件:

 res/values/strings.xml

修改app_name 和 launcher_name,比如:微信01、wechat01、超級(jí)微信、搜客微信等等

0x04 包名修改

查看AndroidMainfest.xml的manifest節(jié)點(diǎn)package屬性,得知微信的包名為: com.tencent.mm。
我們需要修改包名,我們將使用這個(gè)包名作為示例:com.tendk01.mm(dk是多開的意思;01是序號(hào)需要的話可以制作更多的多開版本;包名可以隨便起但是最好保持包名跟原版長度一致,避免一些奇怪的問題出現(xiàn)。)
做過Android開發(fā)或者Java開發(fā)的都知道每一個(gè)“包”對(duì)應(yīng)一個(gè)真實(shí)的文件夾,除了修改 AndroidMainfest.xml文件還需要將smali/com/tencent文件夾名修改為tendk01。

0x05 smali文件基礎(chǔ)修改(調(diào)用)

我們先來看一個(gè)smali文件的幾個(gè)代碼片段:
一個(gè)smali文件的開頭:

.class public final Lcom/tencent/mm/a/a;
.super Ljava/lang/Object;
.source "SourceFile"

smali文件關(guān)于“com.tencent.mm”的引用:

sput-object v0, Lcom/tencent/mm/a/a;->coh:[C

.line 76
const/16 v0, 0x100

new-array v0, v0, [I

.line 78
sput-object v0, Lcom/tencent/mm/a/a;->coi:

.field private static final coh:[C

.field private static final coi:[I

在文件中可以看到很多com/tencent/mm的代碼,我們既然修改了包名,也要將所有的該包下 面所有的定義以及調(diào)用全部修改好(用sublime text的簡單的查找替換即可解決問題),例 如:

com/tencent/mm 修改為 com/tendk01/mm
com.tencent/mm 修改為 com.tendk01.mm
0x06 微信插件調(diào)用修改

微信的插件封裝在/assets/preload目錄下的jar文件和so文件里,你們看到的可能是這樣子的:

com.tencent.mm.plugin.mutidex.jar.0
libvoipCodec.so
com.tencent.mm.plugin.mutidex.jar.1
libvoipCodec_v7a.so.0
libvoipCodec_v7a.so.1
libvoipCodec_v5.so
libvoipCodec.so

仔細(xì)觀察,這種帶有0和1結(jié)尾的文件,仔細(xì)觀察一下便可會(huì)發(fā)現(xiàn)0結(jié)尾的文件都是1M大小,顯然原來的文件是按照1M進(jìn)行分隔的,我們修改之前,需要先將他們合并回一個(gè)完整的文件,參考Linux的split和cat命令,合并猴進(jìn)行解包,然后需要按照0x05的步驟進(jìn)行修改。

0x07 *.so文件修改

在/lib/armeabi目錄下的so文件,封裝了很多JNI的方法,由于包名的修改,也需要同步修改
JNI方法的調(diào)用。 關(guān)于so文件的修改,用一般的16進(jìn)制編輯器即可,查找替換:

com.tencent 修改為 com.tendk01
com/tencent 修改為 com/tendk01
com_tencent 修改為 com_tendk01

但是有一點(diǎn)需要注意的,so文件這樣修改完,還不能用的,會(huì)提示找不到修改后的方法。

方法名明明已經(jīng)修改好了,和smali也是對(duì)應(yīng)的,為什么會(huì)提示找不到方法呢? 其實(shí)so文件本
質(zhì)上是一個(gè)arm架構(gòu)的elf文件,如果了解elf的文件結(jié)構(gòu),便知道問題在哪里。

查看ELF文件格式說明

簡單來說,在elf文件的開頭有一段hash用來快速尋找文件內(nèi)的方法位置,如果方法名修改了, hash不對(duì)應(yīng)則找不到方法的位置。

根據(jù)這個(gè)原理,我寫了一個(gè)小工具來輔助修改so文件,該項(xiàng)目已開源在github:https://github.com/chinaameri...,在此提供修改流程圖和思路,如果大家有興趣可以一期研究修改。

修改so文件hash的流程圖:

0x08 smali文件進(jìn)階修改(防封&注入)

前面我們通過查找替換的方式來對(duì)smali文件進(jìn)行過簡單的修改,現(xiàn)在我們需要深入的修改smali文件,以達(dá)到繞過微信檢測機(jī)制注入我們自己的代碼的目的:

基于我研究的這個(gè)版本的微信(wechat400.apk),雖然比較老,但是官方已經(jīng)有防止篡改的機(jī)制在代碼里了,若修改多開不bypass微信的防篡改機(jī)制則會(huì)很快被封號(hào)。經(jīng)過分析,得知檢測手段是通過應(yīng)用簽名來和服務(wù)器的保存的簽名來比對(duì),若重新打包簽名則會(huì)改變,在特定的情況就執(zhí)行檢測,確認(rèn)當(dāng)前的微信客戶端程序是合法的且沒有被修改。

我們需要做以下的工作來繞過微信監(jiān)測機(jī)制:

獲取官方微信的應(yīng)用簽名信息(字符串形式)

替換所有調(diào)用獲取簽名的系統(tǒng)方法為我們自己寫的方法(詳見0x09)

如果可以我們還要把微信強(qiáng)制更新的提示給閹割掉:
修改com.tendk01.mm.sandbox.updater.AppUpdaterUI.smali,代碼如下:

.method public onResume()V
    .locals 0

    .prologue
    invoke-super {p0}, Landroid/app/Activity;->onResume()V
    
    invoke-virtual {p0},
    Lcom/tence01/mm/sandbox/updater/AppUpdaterUI;->finish()V
    
    return-void
.end method

直接給他finish掉,成功閹割。

0x09 編寫希望注入微信的代碼

新建一個(gè)Android項(xiàng)目,如圖:

MockDevice.java用于模擬虛假的設(shè)備ID,虛假的簽名

SyncTask.java用于同步微信用戶的信息到第三方API

provider包里面的是是若干ContentProvider,可用于接收微信App傳遞的數(shù)據(jù)

編寫好后編譯成apk,反編譯該apk獲取MockDevice.smali和SyncTask.smali(混淆為a.smali)文件,并放入微信的smali源碼文件夾里面,如圖:

0x0A APK打包、簽名、安裝、測試

生成自己的android簽名(需保存好該簽名)

使用apktool重新將微信打包好

使用自己的android簽名對(duì)打包好的apk簽名

安裝登錄一切正常,見圖

0x0B 微信自動(dòng)化腳本

利用Android的測試框架,可以對(duì)微信進(jìn)行模擬人工自動(dòng)化操作(市面上所有微商神器自動(dòng)化
的原理)。
為了測試開發(fā)方便,引入robotium測試框架,可以做到打開某個(gè)界面、查找某個(gè)按鈕、在某個(gè)文本框輸入內(nèi)容、獲取界面信息等等操作。

0x0C 提出幾個(gè)問題供大家思考

微信還可以采用什么方式防止微信程序被篡改?

我用于研究的該多開版本(wechat400.apk),地理位置發(fā)送始終失敗,仍未解決。

0x0D 掌握這些技術(shù)可以做什么?

竊取用戶信息

自動(dòng)化完成加人、關(guān)注、點(diǎn)贊等操作

獲取公眾號(hào)文章閱讀量、點(diǎn)贊量等數(shù)據(jù)

制作插件:如自動(dòng)打飛機(jī)、自動(dòng)搶紅包等

0x0E 對(duì)微信團(tuán)隊(duì)說的話

該文章僅僅是對(duì)技術(shù)的研究和探討,希望不會(huì)收到律師信。微信團(tuán)隊(duì)一直在努力維護(hù)微信這個(gè)生態(tài)圈,期待加入更多的技術(shù)手段來完善應(yīng)用安全,祝一切順利。

0x0F 給安卓用戶的建議

建議不要從亂七八糟的應(yīng)用市場下載應(yīng)用,盡量在官方渠道下載,避免下載到被篡改過的應(yīng)用,不知道這些程序在背后注入了什么代碼,若隱私泄露或者經(jīng)濟(jì)損失就不好了。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/11256.html

相關(guān)文章

  • 微信小程序調(diào)研文檔

    摘要:關(guān)于微信小程序之前只是聽說,并沒有引起我太大的興趣。剛好團(tuán)隊(duì)內(nèi)部有個(gè)需求需要微信小程序。暫時(shí)沒有上線經(jīng)歷,沒辦法給出這個(gè)時(shí)間微信小程序的代碼包大小當(dāng)前限制是。 關(guān)于微信小程序之前只是聽說,并沒有引起我太大的興趣。周一被小程序刷屏,然后就順手搜索了解了一下。發(fā)現(xiàn)小程序已經(jīng)火遍了整個(gè)程序員圈子。剛好團(tuán)隊(duì)內(nèi)部有個(gè)需求需要微信小程序。就緊急對(duì)微信小程序進(jìn)行了調(diào)研,閱讀過開發(fā)者文檔后總結(jié)了以下的...

    kidsamong 評(píng)論0 收藏0
  • Python爬蟲學(xué)習(xí):微信、知乎、新浪等主流網(wǎng)站的模擬登陸爬取方法

    摘要:微信知乎新浪等主流網(wǎng)站的模擬登陸爬取方法摘要微信知乎新浪等主流網(wǎng)站的模擬登陸爬取方法。先說說很難爬的知乎,假如我們想爬取知乎主頁的內(nèi)容,就必須要先登陸才能爬,不然看不到這個(gè)界面。圖片描述知乎需要手機(jī)號(hào)才能注冊(cè)登陸。 微信、知乎、新浪等主流網(wǎng)站的模擬登陸爬取方法摘要:微信、知乎、新浪等主流網(wǎng)站的模擬登陸爬取方法。 網(wǎng)絡(luò)上有形形色色的網(wǎng)站,不同類型的網(wǎng)站爬蟲策略不同,難易程度也不一樣。從是...

    Kahn 評(píng)論0 收藏0
  • 微信小程序開發(fā)由0到1開發(fā),快速開發(fā)上線

    摘要:首先先注冊(cè)微信小程序管理一登錄微信公眾平臺(tái)二點(diǎn)擊立即注冊(cè)。注意這里不要用微信公眾號(hào)登錄,小程序賬號(hào)和微信公眾號(hào)是不同的。最好從項(xiàng)目直接入手,這里有微信小程序個(gè)例子,鏈接密碼有可能會(huì)過期,留言或者加我,給你最新的 首先先注冊(cè)微信小程序管理 一、登錄微信公眾平臺(tái)https://mp.weixin.qq.com 二、點(diǎn)擊立即注冊(cè)。 注意:這里不要用微信公眾號(hào)登錄,小程序賬號(hào)和微信公眾號(hào)是不...

    seal_de 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<