アプリ浸透のアイデア

目次

1. モバイル端末が普及する理由

2. アプリ侵入テストのプロセス

3. アプリの 4 つの主要コンポーネント


1. モバイル端末が普及する理由

モバイル インターネット アプリケーション (アプリ) のセキュリティは、情報セキュリティの分野でホットなトピックです。

ペネトレーション テスターに​​とって、モバイル アプリのセキュリティ検出は、日常のテスト作業に含まれることが多く、追加の攻撃対象領域により、ターゲットが危険にさらされる可能性が非常に高くなり、モバイル インターネットの出現により、多くの機能がコンピューターから移行されています。携帯電話などのモバイル機器へ。

モバイル アプリのセキュリティに関する懸念は、従来のデスクトップ ソフトウェアの場合とは異なります。モバイル オペレーティング システムはセキュリティ保護により多くの注意を払っていますが、アプリ開発者がモバイル アプリケーションを開発する際にセキュリティを完全かつ慎重に考慮しない場合、アプリには依然として悪用可能なセキュリティの抜け穴があり、セキュリティの脅威に直面する可能性があります。

2. アプリ侵入テストのプロセス

Web アプリケーション侵入テストのプロセスとは?

情報収集 - 脆弱性マイニング - 脆弱性悪用 - シェルの取得 - 権限昇格 - 権限維持 - トレースのクリーニング - レポートの要約の作成

アプリ侵入テストの主な内容: 1. 4 つの主要コンポーネントへの侵入 2. アプリ アプリケーション層への侵入 3. 逆コンパイル

4 つの主要コンポーネントの侵入テストでは、Drozer セキュリティ テスト フレームワークを使用してテストできる機密データ情報が取得される場合があります。

学習リンク: https://www.cnblogs.com/zhaoyixiang/p/11236458.html

アプリ アプリケーション レイヤー侵入の物理的テストのアイデアは、Web 侵入テスト プロセスを直接使用できます. たとえば、パケットをキャプチャして分析し、いくつかの相互作用ポイントを見つけ、次にパケットをキャプチャしてパラメータを分析し、インジェクションの脆弱性があるかどうかを調べることができます. . この作品の目標は、シェルを取得することです。これは、現在の焦点でもあります。

学習リンク:ハッキング ナビゲーションの追跡,

アプリに侵入するにはリバースエンジニアリングが非常に重要であるため、逆コンパイルの内容は比較的複雑ですが、時間コストの観点からすると、長い時間がかかり、リバースエンジニアリングは単純な問題ではないため、この手順は解決策でしょうか? .

3. アプリの 4 つの主要コンポーネント

Android の 4 つの主要なコンポーネントは、アクティビティ、サービス、コンテンツ プロバイダー、ブロードキャスト レシーバーです。

1. androidの4大要素の詳細解説

1.活動(活動)

Android システムで実行されるすべてのプログラムは [Activity] で実行する必要があるため、Activity は Android システムの基盤と見なすことができ、その上で他の作業を実行できます。つまり、最も基本的なモジュールです。その機能はフレームまたはページであり、各プログラムは複数の [Activity] から構成されます。

(1) アクティビティは通常、別の画面です

(2) アクティビティはインテントを通じて通信します。

(3) Android アプリケーションのすべてのアクティビティは、android manifest.xml 構成ファイルで宣言する必要があります。そうしないと、システムはアクティビティを認識または実行しません。

2、サービス

サービスは Android の非常に重要なコンポーネントです。そのステータスと優先度はアクティビティに似ていますが、サービスは犬自身によって許可されることはなく、Android のバックグラウンドでのみ実行できます。彼の役割は、Android の他のコンポーネントと対話することです。例: 音楽プレーヤーを開いてバックグラウンドに置くと、この時点で再生される音楽はサービスによって制御されます。

1) サービス利用者は、バックグラウンドで利用者が指定した操作を完了します。サービスは次の 2 つのタイプに分けられます。

  • 開始済み (start): アプリケーション コンポーネントが start service () メソッドを呼び出してサービスを開始すると、サービスは開始状態になります。
  • Bound (バインディング): アプリケーション コンポーネントが bind service() メソッドを呼び出してサービスをバインドすると、サービスはバインドされた状態になります。

2) startService() と bindService() の違い:

  • 開始されたサービス (開始サービス) は、サービスの onStartCommand() メソッドが呼び出される startService() メソッドを呼び出す他のコンポーネントによって開始されます。サービスが開始状態にある場合、サービスのライフサイクルはサービスを開始したコンポーネントから独立しており、サービスを開始したコンポーネントが破棄された場合でも、バックグラウンドで無期限に実行できます。したがって、タスクの完了後に stopSelf() メソッドを呼び出してサービスを停止するか、他のコンポーネントが stopService() メソッドを呼び出して停止する必要があります。
  • bindService() メソッドを使用してサービスを有効にすると、呼び出し元とサービスが結合され、呼び出し元が終了すると、サービスは終了します。同時"。

3) 開発者は、<service></service> タグを使用して、アプリケーション構成ファイルですべてのサービスを宣言する必要があります。

4) 通常、サービスはバックグラウンドで実行され、通常はユーザーとやり取りする必要がないため、サービス コンポーネントにはグラフィカル ユーザー インターフェイスがありません。Service コンポーネントは Service 基本クラスを継承する必要があります。Service コンポーネントは通常、他のコンポーネントにバックグラウンド サービスを提供したり、他のコンポーネントの実行状態を監視したりするために使用されます。

3.コンテンツプロバイダー(コンテンツプロバイダー)

コンテンツ プロバイダー(コンテンツ プロバイダー) は、サードパーティ製アプリケーション用に特別に設計されています. 非常に柔軟で重要です. すべてのアプリケーションに対してコンテンツ ウィンドウを用意し、データベースとファイルを保持します. 役割は、私の母が使用していることです. これらを使用する場合サードパーティのソフトウェアを使用すると、効果的に蚊を防ぎ、内部のデータを保護できます。

1) Android プラットフォームは、アプリケーションの指定されたデータ セットを他のアプリケーションで利用できるようにするためのコンテンツ プロバイダを提供します。他のアプリケーションは、ContentResolver クラスを介して、このコンテンツ プロバイダーからデータを取得または保存できます。

2) コンテンツ プロバイダーは、複数のアプリケーション間でデータを共有する必要がある場合にのみ必要です。たとえば、アドレス帳データは複数のアプリケーションで使用され、コンテンツ プロバイダーに格納する必要があります。その利点は、データ アクセス方法を統一することです。

3) ContentProvider はデータ共有を実現します。ContentProvider は、データを保存および取得し、すべてのアプリケーションで表示できるようにするために使用されます。Android はすべてのアプリケーションがアクセスできる共通のストレージ領域を提供しないため、これが異なるアプリケーション間でデータを共有する唯一の方法です。

4) 開発者は ContentProvider クラスのオブジェクトを直接使用せず、ほとんどの開発者は ContentResolver オブジェクトを介して ContentProvider の操作を実装します。

5) ContentProvider は URI を使用してそのデータ セットを一意に識別します。ここで、URI には content:// というプレフィックスが付いており、データが ContentProvider によって管理されていることを示します。

4、放送受信機(放送受信機)

Android システムでは、ブロードキャスト レシーバーは直接目には見えませんが、プログラム自体が情報を送信するためのメカニズムであり、その機能は通知を受信または送信することです。簡単に言うと、ブロードキャスト レシーバーは配信コンポーネントに似ており、情報を受け取り、フィルタリングして応答することさえできます。

1) アプリケーションはこれを使用して外部イベントをフィルタリングし、関心のある外部イベント (電話がかかってきたときやデータ ネットワークが利用可能になったときなど) のみを受信して​​応答することができます。ブロードキャスト レシーバにはユーザー インターフェイスがありません。ただし、受信した情報に応じてアクティビティまたはサービスを開始したり、NotificationManager を使用してユーザーに通知したりできます。通知は、バックライトの点滅、振動、音の再生など、ユーザーの注意を引くためにさまざまな方法で使用できます。一般的なルールは、ユーザーが開いてメッセージを取得できるステータス バーに永続的なアイコンを配置することです。

2) ブロードキャスト レシーバーを登録するには、プログラムの動的登録と AndroidManifest ファイルへの静的登録の 2 つの方法があります。

3) 動的登録ブロードキャスト受信機の特徴は、登録に使用したアクティビティが閉じられると、ブロードキャストが無効になることです。静的登録では、ブロードキャスト レシーバーの電源がオフになっているかどうかを気にする必要はありません。デバイスの電源が入っていれば、ブロードキャスト レシーバーの電源もオンになっています。つまり、アプリ自体が起動していなくても、アプリがサブスクライブしているブロードキャストもトリガーされると動作します。

2. Android の 4 つの主要コンポーネントの概要:

1. 4大成分の登録

4 つの基本的なコンポーネントは、使用する前に登録する必要があり、各アクティビティ、サービス、およびコンテンツ プロバイダーを AndroidManifest ファイルで構成する必要があります。AndroidManifest ファイルで宣言されていないアクティビティ、サービス、およびコンテンツ プロバイダーは、システムから認識されないため、利用できません。ブロードキャスト レシーバーの登録は、静的な登録 (AndroidManifest ファイルで構成) と、コードによる動的な作成、および Context.registerReceiver() を呼び出すことによるシステムへの登録に分けられます。AndroidManifest ファイルで構成されたブロードキャスト レシーバーは、システムの起動時に常にアクティブであり、目的のブロードキャストが受信されている限り (プログラムが実行されていなくても) トリガーされることに注意してください。

2. 4大成分の活性化

コンテンツ プロバイダーのアクティブ化: ContentResolver からの要求を受信した後、コンテンツ プロバイダーがアクティブ化されます。他の 3 つのコンポーネント アクティビティ、サービス、およびブロードキャスト レシーバーは、インテントと呼ばれる非同期メッセージによってアクティブ化されます。

3. 4 つの主要コンポーネントの閉鎖

コンテンツ プロバイダーは、ContentResolver による要求に応答してのみアクティブ化されます。ブロードキャスト レシーバは、ブロードキャスト メッセージに応答してのみアクティブになります。したがって、これらのコンポーネントを明示的に閉じる必要はありません。アクティビティの終了: アクティビティを終了するには、finish() メソッドを呼び出します。サービスのシャットダウン: startService() メソッドによって開始されたサービスの場合、Context.stopService() メソッドを呼び出してサービスを停止する必要があり、bindService() メソッドによって開始されたサービスは Contex.unbindService() メソッドを呼び出して停止する必要があります。サービスを停止します。

4. Android のタスク (アクティビティ スタック)

a) タスクは、実際にはアクティビティのスタックであり、1 つまたは複数のアクティビティで構成され、これらが一緒になって完全なユーザー エクスペリエンスを完成させます。The bottom of the stack is the activity that starts the whole task, and the top of the stack is the current running activity that the user can interact with. あるアクティビティが別のアクティビティを開始すると、新しいアクティビティがスタックにプッシュされ、現在のアクティビティになります。ランニング活動。前のアクティビティはスタックに残ります。ユーザーが BACK キーを押すと、現在のアクティビティがスタックからポップされ、前のアクティビティが現在実行中のアクティビティとして再開されます。スタックに保存されたオブジェクトは実際にはオブジェクトであり、スタック内のアクティビティは再配置されることはなく、プッシュまたはポップされるだけです。

b) タスク内のすべてのアクティビティがまとめて移動されます。タスク全体 (つまり、アクティビティ スタック) をフォアグラウンドに移動するか、バックグラウンドに後退させることができます。

c) Android システムはマルチタスク (Multi-Task) オペレーティング システムであり、携帯電話で音楽を聴きながら他のプログラムを実行できます。アプリケーション プログラムが実行されるたびに、より多くのシステム メモリが消費されます. あまりにも多くのプログラムが同時に実行されたり、閉じられたプログラムによってメモリが適切に解放されなかったりすると、システムはますます遅くなり、さらには不安定になります. この問題を解決するために、Android ではライフサイクル (Life Cycle) という新しい仕組みが導入されています。

おすすめ

転載: blog.csdn.net/y995zq/article/details/129123764