科技打破壟斷全球的霸權(quán)鄭州seo排名優(yōu)化公司
聲明:本文僅限學(xué)習(xí)交流使用,禁止用于非法用途、商業(yè)活動(dòng)等。否則后果自負(fù)。如有侵權(quán),請告知?jiǎng)h除,謝謝!本教程也沒有專門針對某個(gè)網(wǎng)站而編寫,單純的技術(shù)研究
目錄
- 案例分析
- 技術(shù)依賴
- 參數(shù)分析
- 效果展示
- 代碼分享
案例分析
aHR0cHM6Ly9kZWFsZXJjbG91ZGFwaS5jaGUxNjguY29tL3RyYWRlcmNsb3VkL3NlYWxlZC9sb2dpbi9sb2dpbi5hc2h4
- 對應(yīng)接口和難點(diǎn)
技術(shù)依賴
電腦需要的依賴
python 版本3.8
frida—14.2.18
frida-tools —9.2.5
我這邊用的真機(jī),所以真機(jī)的依賴也需要裝證書我們上一期都已經(jīng)說了,不知道的可以看
https://blog.csdn.net/w62181310/article/details/134162716
frida-server 安裝,因?yàn)槲沂姓鏅C(jī)所以對應(yīng)是不同的,如果使用其他模擬器什么的要下載對應(yīng)的,并且要跟frida版本對應(yīng)
frida要裝在手機(jī)的/data/local/tmp/下
需要加權(quán)限,我這邊是已經(jīng)加了,就不演示了
chmod 777 frida-server-14.2.18-android-arm64
那么我們可以啟動(dòng)frida,這樣是已經(jīng)啟動(dòng)了
啟動(dòng)了frida,還需要轉(zhuǎn)發(fā)端口
adb forward tcp:27042 tcp:27042
adb forward tcp:27043 tcp:27043
frida不懂可以百度下,還要準(zhǔn)備jadx
這個(gè)可以網(wǎng)上下載哈,同樣需要java環(huán)境,我這邊是1.8的版本,如果打不開可能是java版本不匹配
我們環(huán)境都準(zhǔn)備好了那么可以開始了
參數(shù)分析
我們通過jadx打開這個(gè)app的apk,還記得之前搞web的搜索大法嘛,這個(gè)同樣適用
點(diǎn)進(jìn)去查看發(fā)現(xiàn)有點(diǎn)像但是不確定,那么我們可以借助frida進(jìn)行hook,在hook之前要查到他對應(yīng)的包名,我使用的是python的方法
import frida# 獲取設(shè)備信息
rdev = frida.get_remote_device()
# 獲取在前臺運(yùn)行的APP
front_app = rdev.get_frontmost_application()
print(front_app)
效果
我們知道了包名就可以使用frida進(jìn)行hook了, 1.js就是我們些的hook腳本
通過搜索md5可以找到這里是最像的,進(jìn)去之后進(jìn)入md5,我們對md5進(jìn)行hook
hook他查看入?yún)?br />
結(jié)果,我們看到一個(gè)md5hook出來兩個(gè)參數(shù)美滋滋,密碼就是輸入的,另一個(gè)是拼接的
我們來看sign的解密參數(shù)里面有包含udid,我們可以發(fā)現(xiàn)udid后半段是會變的,其他都是固定的,那么我們還需要在hook下udid看看什么情況
通過抓包可以看到他是進(jìn)行的3Des
到這里整體的加密就全部知道了,那么我們用python還原一下就行,中間的一些值就自行hook下
整體來說很簡單,frida等于web的動(dòng)態(tài)調(diào)試,只是需要找找位置
其他位置可以自己寫下試試,hook代碼下面有分享
我們下期再見
效果展示
代碼分享
1.DES3的分享
import base64from Crypto.Cipher import DES3def getDES3Token(text):# PKCS5Padding# 字符串長度需要是8的倍數(shù)BS = 8pad = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS).encode()unpad = lambda s: s[0:-ord(s[-1])]# 后端給的key是 YcwjZGpmZZhpAmtsbW5qcHFyc3R1pnd4 長度位32位# 注意3DES的MODE_CBC模式下只有前24位有意義# key和iv都需要是bytearraykey = b'appapiche168comappapiche'iv = b'appapich'# text也需要encode成bytearrayplaintext = pad(text.encode())# 使用MODE_CBC創(chuàng)建ciphercipher = DES3.new(key, DES3.MODE_CBC, iv)# 加密result = cipher.encrypt(plaintext)# base64 encoderesult = base64.b64encode(result)return str(result, encoding='utf-8').replace('\n', '')
2.hook代碼分享
Java.perform(function () {console.log('--------------------- hook start ---------------------------')let wb = Java.use('com.autohome.ahview.utils.AHViewUtils');wb.encodeMD5.implementation = function (str){console.log('=====================================================================================')console.log(str)let res = this.encodeMD5(str);console.log("加密結(jié)果:" + res);return res;}
})