国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

實(shí)戰(zhàn) 逆向最新黃鳥(niǎo)抓包軟件

這篇具有很好參考價(jià)值的文章主要介紹了實(shí)戰(zhàn) 逆向最新黃鳥(niǎo)抓包軟件。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

前言

觀眾器者為良匠,觀眾病者為良醫(yī)。這篇文章分析了知名抓包軟件HttpCanary高級(jí)功能的使用限制,使用了許多實(shí)用的工具,過(guò)程寫(xiě)的盡可能的詳細(xì),希望對(duì)大家有所幫助。

筆者實(shí)踐環(huán)境:

  1. pixel 6
  2. Android 12
  3. frida 15.1.27
  4. HttpCanary v3.3.5

脫殼

在jadx中查看原包,檢查軟件是否加固

實(shí)戰(zhàn) 逆向最新黃鳥(niǎo)抓包軟件

由于包下的類比較少且看見(jiàn)了stub,因此可以確定是360加固了,直接用工具脫殼,我用的是hluwa巨佬的frida-dexdump,具體用法可以看官網(wǎng),這里直接進(jìn)行嘗試脫殼

實(shí)戰(zhàn) 逆向最新黃鳥(niǎo)抓包軟件

在眾多dex文件中通過(guò)入口類進(jìn)行篩選

實(shí)戰(zhàn) 逆向最新黃鳥(niǎo)抓包軟件

脫殼完畢~~

核心代碼定位與分析

兩種思路:

  1. 從激活功能下手,修改成功邏輯

實(shí)戰(zhàn) 逆向最新黃鳥(niǎo)抓包軟件

  1. 從vip功能下手,定位身份判斷關(guān)鍵點(diǎn)

實(shí)戰(zhàn) 逆向最新黃鳥(niǎo)抓包軟件

對(duì)比兩種思路,第二種思路感覺(jué)更加的簡(jiǎn)單和直接,當(dāng)然第一種也是可以做的,只不過(guò)會(huì)比想想中的更加復(fù)雜,我這里直接給出第一種思路的frida版本,但它是不完善的,重啟軟件會(huì)失效,有興趣的可以研究一下

function pojie() {
    // remove app detect expression
    Java.choose("com.guoshi.httpcanary.ui.premium.PremiumActivateActivity", {
        onMatch: function (instance) {
            console.log("f7834 before value is " + instance.\uFC82.value)
            instance.\uFC82.value = 1
        },
        onComplete: function () {

        }
    })

    // break vip step1
    let C2217 = Java.use("com.guoshi.\uFC70.\uFC71.\uFC72");
    C2217["\uFC70"].implementation = function () {
        let ret = this.\uFC70.apply(this, arguments);
        var CodeActivateResBody = Java.use("com.guoshi.httpcanary.model.CodeActivateResBody")
        var obj = CodeActivateResBody.$new()
        obj.status.value = 1;
        obj.encryptToken.value = "mdcg";
        obj.token.value = "mdcg";
        console.log("Create obj --> " + obj)
        console.log("status --> " + obj.status.value)
        console.log("encryptToken --> " + obj.encryptToken.value)
        console.log("token --> " + obj.token.value)

        return obj;
    };

    // break vip step2
    let PremiumActivateActivity = Java.use("com.guoshi.httpcanary.ui.premium.PremiumActivateActivity");
    PremiumActivateActivity["\uFC71"].overload('java.lang.String', 'java.lang.String').implementation = function (arg1, arg2) {
        let ret = this.\uFC71(arg1, arg2);
        console.log('\uFC71 ret before value is ' + ret);
        ret = true
        console.log('\uFC71 ret after value is ' + ret);
        return ret;
    };
}

function main() {
    Java.perform(function () {
        pojie()
    })
}

setImmediate(main)

實(shí)戰(zhàn) 逆向最新黃鳥(niǎo)抓包軟件

下面主要對(duì)第二種思路進(jìn)行分析,極速模式屬于高級(jí)功能,由一個(gè)按鈕進(jìn)行控制,最迅速的定位方式為hook點(diǎn)擊事件,并反推出核心判斷。我使用r0ysue巨佬的hookEvent.js快速定位點(diǎn)擊事件,代碼不復(fù)雜,建議研究一下

var jclazz = null;
var jobj = null;
function getObjClassName(obj) {
	if (!jclazz) {
		var jclazz = Java.use("java.lang.Class");
	}
	if (!jobj) {
		var jobj = Java.use("java.lang.Object");
	}
	return jclazz.getName.call(jobj.getClass.call(obj));
}

function watch(obj, mtdName) {
	var listener_name = getObjClassName(obj);
	var target = Java.use(listener_name);
	if (!target || !mtdName in target) {
		return;
	}
	target[mtdName].overloads.forEach(function (overload) {
		overload.implementation = function () {
			console.log("[WatchEvent] " + mtdName + ": " + getObjClassName(this))
			return this[mtdName].apply(this, arguments);
		};
	})
}

function OnClickListener() {
	Java.perform(function () {
		Java.use("android.view.View").setOnClickListener.implementation = function (listener) {
			if (listener != null) {
				watch(listener, 'onClick');
			}
			return this.setOnClickListener(listener);
		};
		
		Java.choose("android.view.View$ListenerInfo", {
			onMatch: function (instance) {
				instance = instance.mOnClickListener.value;
				if (instance) {
					console.log("mOnClickListener name is :" + getObjClassName(instance));
					watch(instance, 'onClick');
				}
			},
			onComplete: function () {
			}
		})
	})
}
setImmediate(OnClickListener);

實(shí)戰(zhàn) 逆向最新黃鳥(niǎo)抓包軟件

注冊(cè)點(diǎn)擊事件的類是com.guoshi.httpcanary.ui.-$ L a m b d a Lambda LambdaHomeActivity$L0WEKAV1lAcNYjl4nGyTdnm61r8,在jadx中查看

實(shí)戰(zhàn) 逆向最新黃鳥(niǎo)抓包軟件

實(shí)戰(zhàn) 逆向最新黃鳥(niǎo)抓包軟件

后面的注釋是我加上去的,下面從第一處判斷開(kāi)始分析

m6185函數(shù)傳入了一串加密字符串,我們需要知道它代表了什么意思,可以看一下這個(gè)函數(shù)

實(shí)戰(zhàn) 逆向最新黃鳥(niǎo)抓包軟件

實(shí)戰(zhàn) 逆向最新黃鳥(niǎo)抓包軟件

可以確定是一個(gè)解密函數(shù),但我們不需要逆向出解密的邏輯,因?yàn)榭梢灾苯觝ook獲取返回值

function hook_1(){
    let C2146 = Java.use("com.guoshi.httpcanary.\uFC72");
    C2146["\uFC70"].implementation = function (str) {
        console.log('input str: ' + str);
        let ret = this.\uFC70(str);
        console.log('ret value is ' + ret);
        return ret;
    };
}

function main(){
    Java.perform(function(){
        hook_1()
    })
}
setImmediate(main)

實(shí)戰(zhàn) 逆向最新黃鳥(niǎo)抓包軟件

解密的字符串是settings_turbo_mode,翻譯成漢語(yǔ)就是設(shè)置極速模式,那m6317函數(shù)是什么呢?點(diǎn)進(jìn)去看看

實(shí)戰(zhàn) 逆向最新黃鳥(niǎo)抓包軟件

懂了,m6317是從sharedPreferences中取出相應(yīng)key的value,而settings_turbo_mode保存的是當(dāng)前極速模式是打開(kāi)還是關(guān)閉,如果返回值為true,那么表明當(dāng)前屬于開(kāi)啟的狀態(tài),這樣就要進(jìn)入判斷成功的邏輯,把開(kāi)啟狀態(tài)變成關(guān)閉狀態(tài)。

下面分析第二處判斷,該處判斷取決于a函數(shù)和z函數(shù)的返回值,點(diǎn)開(kāi)看一下

實(shí)戰(zhàn) 逆向最新黃鳥(niǎo)抓包軟件

有native關(guān)鍵字就意味著我們要分析so層了,那么第一步就是要確定這些函數(shù)在哪個(gè)so文件中,首先我們假設(shè)這些函數(shù)都是動(dòng)態(tài)注冊(cè)的,那么就可以使用yang神的hook_RegistNatives.js腳本迅速判斷,注意要以spawn模式啟動(dòng),腳本如下:

function find_RegisterNatives(params) {
    var symbols = Module.enumerateSymbolsSync("libart.so");
    var addrRegisterNatives = null;
    for (var i = 0; i < symbols.length; i++) {
        var symbol = symbols[i];
        
        //_ZN3art3JNI15RegisterNativesEP7_JNIEnvP7_jclassPK15JNINativeMethodi
        if (symbol.name.indexOf("art") >= 0 &&
                symbol.name.indexOf("JNI") >= 0 && 
                symbol.name.indexOf("RegisterNatives") >= 0 && 
                symbol.name.indexOf("CheckJNI") < 0) {
            addrRegisterNatives = symbol.address;
            console.log("RegisterNatives is at ", symbol.address, symbol.name);
            hook_RegisterNatives(addrRegisterNatives)
        }
    }

}

function hook_RegisterNatives(addrRegisterNatives) {

    if (addrRegisterNatives != null) {
        Interceptor.attach(addrRegisterNatives, {
            onEnter: function (args) {
                console.log("[RegisterNatives] method_count:", args[3]);
                var env = args[0];
                var java_class = args[1];
                var class_name = Java.vm.tryGetEnv().getClassName(java_class);
			   var methods_ptr = ptr(args[2]);
                var method_count = parseInt(args[3]);
                for (var i = 0; i < method_count; i++) {
                    var name_ptr = Memory.readPointer(methods_ptr.add(i * Process.pointerSize * 3));
                    var sig_ptr = Memory.readPointer(methods_ptr.add(i * Process.pointerSize * 3 + Process.pointerSize));
                    var fnPtr_ptr = Memory.readPointer(methods_ptr.add(i * Process.pointerSize * 3 + Process.pointerSize * 2));

                    var name = Memory.readCString(name_ptr);
                    var sig = Memory.readCString(sig_ptr);
                    var find_module = Process.findModuleByAddress(fnPtr_ptr);
                    console.log("[RegisterNatives] java_class:", class_name, "name:", name, "sig:", sig, "fnPtr:", fnPtr_ptr,  " fnOffset:", ptr(fnPtr_ptr).sub(find_module.base), " callee:", DebugSymbol.fromAddress(this.returnAddress));
                }
            }
        });
    }
}

setImmediate(find_RegisterNatives);

實(shí)戰(zhàn) 逆向最新黃鳥(niǎo)抓包軟件

確定了我們要分析的是libHttpCanary.so文件,并且函數(shù)的偏移地址也拿到了,把文件拖進(jìn)ida中看一下,重新命名的過(guò)程就不展示了

實(shí)戰(zhàn) 逆向最新黃鳥(niǎo)抓包軟件

a方法調(diào)用了z方法和l方法,點(diǎn)進(jìn)z方法看一下

實(shí)戰(zhàn) 逆向最新黃鳥(niǎo)抓包軟件

由上面的偽代碼可以推出,z方法就是判斷當(dāng)前是否是高級(jí)模式,如果是高級(jí)模式則返回true,下面看看l方法是什么

實(shí)戰(zhàn) 逆向最新黃鳥(niǎo)抓包軟件

由偽代碼可以看出l方法返回用戶試用的剩余天數(shù),如果為正數(shù)則表明用戶的試用還沒(méi)有到期,如果為負(fù)數(shù)則表明用戶的試用到期了,現(xiàn)在重新看a方法應(yīng)該清晰了很多

實(shí)戰(zhàn) 逆向最新黃鳥(niǎo)抓包軟件

這個(gè)邏輯表達(dá)式表示的是如果用戶不是vip且試用還沒(méi)有到期,那么結(jié)果為true。

那么兩個(gè)核心函數(shù)就找到了,一個(gè)是a方法,一個(gè)是z方法,a方法判斷是否是試用模式,z方法判斷是否是vip模式,那么這兩個(gè)方法只要有一個(gè)為真就能使用軟件的高級(jí)功能了,下面使用frida簡(jiǎn)單測(cè)試一下

function hook_2(){
    let Cont = Java.use("com.guoshi.httpcanary.jni.Cont");
    Cont["a"].implementation = function (context) {
        let ret = this.a(context);
        ret = true
        console.log('a ret value is ' + ret);
        return ret;
    };

    Cont["z"].implementation = function (context) {
        let ret = this.z(context);
        ret = false
        console.log('z ret value is ' + ret);
        return ret;
    };
}

function main(){
    Java.perform(function(){
        // hook_1()
        hook_2()
    })
}
setImmediate(main)

使用腳本之前

實(shí)戰(zhàn) 逆向最新黃鳥(niǎo)抓包軟件

使用腳本之后

實(shí)戰(zhàn) 逆向最新黃鳥(niǎo)抓包軟件

結(jié)尾

這個(gè)軟件整體的防護(hù)還是很到位的,java層的混淆也是很給力,但如果加一些frida的反調(diào)試并且在so層多加一點(diǎn)防護(hù)那么就更安全了。上面只是使用了frida腳本進(jìn)行了功能的分析,我也把它寫(xiě)成了xposed模塊,方便大家的使用,原包與模塊都放在了下面的鏈接中,當(dāng)然有能力的還是要支持下正版。因?yàn)樾氯藙?chuàng)作不易,希望大家點(diǎn)個(gè)贊鼓勵(lì)一下((′▽`〃))

HttpCanary_v3.3.5.apk

httpCanaryBreaker.apk文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-455196.html

到了這里,關(guān)于實(shí)戰(zhàn) 逆向最新黃鳥(niǎo)抓包軟件的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【k8s完整實(shí)戰(zhàn)教程0】前言

    系列文章:這個(gè)系列已完結(jié),如對(duì)您有幫助,求點(diǎn)贊收藏評(píng)論。 讀者寄語(yǔ): 再小的帆,也能遠(yuǎn)航! 【k8s完整實(shí)戰(zhàn)教程0】前言 【k8s完整實(shí)戰(zhàn)教程1】源碼管理-Coding 【k8s完整實(shí)戰(zhàn)教程2】騰訊云搭建k8s托管集群 【k8s完整實(shí)戰(zhàn)教程3】k8s集群部署kubesphere 【k8s完整實(shí)戰(zhàn)教程4】使用

    2023年04月24日
    瀏覽(30)
  • 安卓逆向?qū)W習(xí)及APK抓包(二)--Google Pixel一代手機(jī)的ROOT刷入面具

    安卓逆向?qū)W習(xí)及APK抓包(二)--Google Pixel一代手機(jī)的ROOT刷入面具

    在手機(jī)選擇上,優(yōu)先選擇谷歌系列手機(jī),Nexus和Pixel系列,剛好手頭有Pixel一代,就直接root了,大家感興趣可以某寶幾百塊錢(qián)入手一臺(tái)。Pixel手機(jī)花了本人一天,中間踩坑無(wú)數(shù),終于還是root成功,感觸頗深,所以先記錄一下Pixel手機(jī)的root之旅。 安卓逆向?qū)W習(xí)及APK抓包(一)【Ka

    2024年02月11日
    瀏覽(36)
  • 最新微信小程序抓包方法

    最新微信小程序抓包方法

    一、安裝 fiddler 官網(wǎng)下載:https://www.telerik.com/download/fiddler 二、配置 打開(kāi)fiddler tools- options,genneral: 全選 https: connections: 配置代理地址 gateway: 三、打開(kāi)電腦端小程序 退出微信,登錄微信時(shí)設(shè)置代理 打開(kāi)小程序 抓包成功 如果沒(méi)成功 打開(kāi)小程序、打開(kāi)任務(wù)管理器,找到小程序

    2024年02月11日
    瀏覽(20)
  • 微信小程序抓包-夜神模擬器結(jié)合BurpSuite抓包(可用于現(xiàn)在最新版本微信)

    微信小程序抓包-夜神模擬器結(jié)合BurpSuite抓包(可用于現(xiàn)在最新版本微信)

    2023年3月23日18.37.46:很多人說(shuō)網(wǎng)絡(luò)錯(cuò)誤,目前我再次自己試過(guò)了,都沒(méi)有出現(xiàn)這個(gè)問(wèn)題,如果害怕出現(xiàn)網(wǎng)絡(luò)異常等情況,就不要看下去了 之前總是通過(guò)電腦來(lái)抓包,時(shí)常失效,這里就用夜神模擬器配合Burp來(lái)抓包 也可以參考這位博主的文章 Fiddler+Proxifier進(jìn)行PC端微信小程序抓包 通過(guò)Fi

    2024年02月09日
    瀏覽(24)
  • 2023年最新微信小程序抓包教程

    2023年最新微信小程序抓包教程

    01 開(kāi)門(mén)見(jiàn)山 隔一個(gè)月發(fā)一篇文章,不過(guò)分。 首先回顧一下《微信綁定手機(jī)號(hào)數(shù)據(jù)庫(kù)被脫庫(kù)事件》,我也是第一時(shí)間得知了這個(gè)消息,然后跟蹤了整件事情的經(jīng)過(guò)。下面是這起事件的相關(guān)截圖以及近日流出的一萬(wàn)條數(shù)據(jù)樣本: 個(gè)人認(rèn)為這件事也沒(méi)什么,還不如關(guān)注一下之前

    2023年04月20日
    瀏覽(19)
  • 最新PDD批發(fā)Anti-Content參數(shù)逆向分析與算法還原

    最新PDD批發(fā)Anti-Content參數(shù)逆向分析與算法還原

    【??作者主頁(yè)】: 吳秋霖 【??作者介紹】:擅長(zhǎng)爬蟲(chóng)與JS加密逆向分析!Python領(lǐng)域優(yōu)質(zhì)創(chuàng)作者、CSDN博客專家、阿里云博客專家、華為云享專家。一路走來(lái)長(zhǎng)期堅(jiān)守并致力于Python與爬蟲(chóng)領(lǐng)域研究與開(kāi)發(fā)工作! 【??作者推薦】:對(duì)爬蟲(chóng)領(lǐng)域以及JS逆向分析感興趣的朋友可以關(guān)

    2024年04月16日
    瀏覽(92)
  • Web逆向、軟件逆向、安卓逆向、APP逆向,關(guān)于網(wǎng)絡(luò)安全這些你必須懂

    Web逆向、軟件逆向、安卓逆向、APP逆向,關(guān)于網(wǎng)絡(luò)安全這些你必須懂

    逆向工程是網(wǎng)絡(luò)安全行業(yè)里面一項(xiàng)很重要的技術(shù)。 逆向是一個(gè)相對(duì)正向而言的解釋,相對(duì)正向來(lái)說(shuō),對(duì)一個(gè)程序來(lái)講,正向就是開(kāi)發(fā)的過(guò)程,從0到1。 就是在一個(gè)軟件誕生的整個(gè)生命周期中的一個(gè)過(guò)程, 也就是按照需求通過(guò)編碼把需求實(shí)現(xiàn),產(chǎn)生一個(gè)程序,當(dāng)然這個(gè)程序可

    2024年02月07日
    瀏覽(33)
  • 抖音最新版抓包方案,修改so繞過(guò)ssl

    抖音最新版抓包方案,修改so繞過(guò)ssl

    dy過(guò)ssl charles抓包 及xposed的justtrustme安裝到手機(jī)上只能過(guò)系統(tǒng)的ssl。 抖音寫(xiě)了一個(gè)非系統(tǒng)的ssl所以需要反編譯so來(lái)處理。 第一步,charles 我用的是magisk手機(jī),先重charles把證書(shū)下載到pc端 在通過(guò)adb push 傳入到sdcard 通過(guò)手機(jī)安裝證書(shū)[wifi 的高級(jí)選項(xiàng)中,安裝證書(shū)] 把用戶證書(shū)通過(guò)

    2024年02月03日
    瀏覽(23)
  • 2023最新版Android逆向教程——第1天:Android Studio的安裝與配置

    2023最新版Android逆向教程——第1天:Android Studio的安裝與配置

    通常情況下,為了提高開(kāi)發(fā)效率,需要使用相應(yīng)的開(kāi)發(fā)工具。在 Android 發(fā)布初期,推薦使用的開(kāi)發(fā)工具是 Eclipse,隨著 2015 年 Android Studio 正式版推出,標(biāo)志著 Google 公司推薦的 Android 開(kāi)發(fā)工具已從 Eclipse 更改為 Android Studio。而且在 Android 的官方網(wǎng)站中,也提供了集成 Android 開(kāi)

    2024年02月07日
    瀏覽(30)
  • 【Android逆向】9年前的舊手機(jī)任性安裝最新app?可以的,方法很簡(jiǎn)單

    【Android逆向】9年前的舊手機(jī)任性安裝最新app?可以的,方法很簡(jiǎn)單

    目錄 前言 二、執(zhí)行步驟 1.反編譯apk 2.修改apktool.yml中的minSdkVersion 3.保存、回編譯、簽名 4.重新安裝 9年前的舊手機(jī)任性安裝最新的app?可以的,方法很簡(jiǎn)單 智能手機(jī)更新?lián)Q代太快,用戶的換機(jī)周期也越來(lái)越短,7年以上的手機(jī)一般就會(huì)被廠家認(rèn)定為過(guò)時(shí)產(chǎn)品,不再提供技術(shù)支

    2024年02月11日
    瀏覽(46)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包