من یه برنامه دارم که یه فایل میسازه و داخلش مینویسه بعد که داخل حافظه با تابع DexClassLoader بارگذاری شد اونو پاک میکنه حالا چطوری میتونم به صورت خودکار فایل را قبل از پاک شدن کپی کنم؟ اسکریپت frida مربوط به این کار هست؟
اگر بخواهید ب صورا اتوماتیک وقتی فایل مورد نظرتون ساخته میشه رو کپی کنید دوتا راه دارید:
1-به صورت دستی (که ساده ترینه)
2-اتوماتیک که خودش به دو روش هست:
1-ساخت سرویس اگه مسیر ثابته سمپل های زیادی با سی شارپ هست
2- استفاده از پاور شل (تا موقعی ک باز هست شبیه سرویس میمونه)
نکته1: نروم افزارهای مانیتوری وجود دارن که مبشه از اوناهم استفاده کرد
نکته 2:میشه با ریورس از پاک شدن فایل جلوگیری کرد یا با تکنیک code cave یا Hook مسیر جدیدی برا ساخت ایجاد کرد
مرسی ولی فکر کنم یادم رفته بود بگم که میخوام این کارو تو اندروید انجام بدم
کسی ایده ای نداره؟ هم همچنان این مشکل را دارم
ایده که میتونم بگم با همون frida تابع ایجاد فایل رو هوک کن؛ تا محتویاتش رو بتونی توی سیستمتت (سمت سرور) ببینی؛
تا جایی که متوجه شدم frida فقط میتونه بهم بگه که فایل ساخته شد یا مثلا روش نوشته شد. نمیتونه کپی کندش.
باز شاید اشتباه میکنم، یعنی اینجا هیچ کسی با frida کار نکرده؟
(۱۶-اردیبهشت-۱۳۹۸, ۲۲:۲۲:۳۰)nImaarek نوشته است: [ -> ]تا جایی که متوجه شدم frida فقط میتونه بهم بگه که فایل ساخته شد یا مثلا روش نوشته شد. نمیتونه کپی کندش.
باز شاید اشتباه میکنم، یعنی اینجا هیچ کسی با frida کار نکرده؟
بحث من؛ کپی کردن فایل به صورت مستقیم نیست!
شما فرض کن چنین چیزی داری:
کد php:
void a( text INPUT){
FILE.write(INPUT);
}
با frida روی a هوک میذاری؛ هرباری که برنامه ی اندروید و ..بخواد تابع a رو قراخونی کنه؛ کنترلش میافته دست برنامه شما؛ مقدار INPUT رو میخونه برنام ات دوباره تابع a رو صدا میزنه و .... یعنی این وسط یچیزی مثل sniff رخ میده ...
با این روش میتونی ببینی برنامه ات توی فایل چی داره مینویسه!!!
یا حالت اسونترش اینه تابع remove شدن فایل رو هوک کنی؛ تا وقتی فایله ایحاد شد و خواست فایلی پاک کنه؛ کنترل بیافته دست تو هم هیچکاری انجام ندی و... اینطوری فایلت سر جاش میمونه و خودت میتونی copy کنی ...
برای مثال در این سایت:
https://pentest.blog/n-ways-to-unpack-mobile-malware/
این کد رو نگاه:
کد php:
Java.perform(function() {
var f = Java.use("java.io.File")
f.delete.implementation = function(a){
s = this.getAbsolutePath()
if(s.includes("jar")){
console.log("[+] Delete catched =>" +this.getAbsolutePath())
}
return true
}
})
این کد باعث میشه هیچ فایلی پاک نشه و بعدش شما میتونید فای رو دامپ کنید ..
یا پایین تر از این سایت برنامه ی
Gameguardian معرفی شده که میتونید ادرس حافظه ای که محتویات فایل لود شده رو ببینید و اون رو dump کنید و ...
اینم یه مثالی ازش:
https://gameguardian.net/forum/gallery/i...eguardian/