این برنامه حاوی کدهایی برای دور زدن اندروید است. دریافت حقوق روت در اندروید از طریق Framaroot بدون رایانه

صفحه اصلی / ترمز

اگر رمز عبور یا الگوی دستگاه اندرویدی خود را فراموش کرده اید، این دلیلی برای وحشت نیست. چندین و سریع وجود دارد گزینه های سادهقفل گوشی یا تبلت خود را روشن کنید مبتنی بر اندرویددر صورتی که کلید الگو یا پین را به خاطر نیاورید.

وارد کردن اطلاعات حساب گوگل

اگر تلفن هوشمند یا تبلت شما دارای اتصال دائمی از طریق شبکه بی سیم، سپس با وارد کردن ساده می توانید مشکل دور زدن محافظت را حل کنید آدرس ایمیلو رمز عبور پس از 5 تلاش ناموفق برای باز کردن قفل صفحه، یک اعلان ظاهر می شود. روی آن کلیک کنید و در پنجره ای که ظاهر می شود، اطلاعات کاربری اکانت گوگل خود را وارد کنید.

اگر رمز عبور خود را فراموش کردید چه کاری انجام دهید حساب کاربریگوگل؟ مراحل بازگرداندن دسترسی به حساب خود را مستقیماً با کمک پشتیبانی کامل کنید.

باز کردن قفل از طریق هارد ریست

هنگام استفاده از این روش، تمام اطلاعات شخصی حذف می شود و سیستم تلفن هوشمند به تنظیمات کارخانه باز می گردد (فایل های کارت SD تحت تأثیر قرار نمی گیرند). قبل از انجام این روش، توصیه می شود یک فایل پشتیبان داشته باشید که از آن می توانید اطلاعات کاربر را بازیابی کنید.

ساده ترین راه برای بازنشانی استفاده از ابزاری است که در تنظیمات دستگاه شما قرار دارد. از آنجایی که دسترسی به سیستم مسدود شده است، باید از طریق:


هر اقدام کاربر (ایجاد کد پین، کلید گرافیکی) با ایجاد فایل های خاص در سیستم منعکس می شود. می‌توان نتیجه گرفت که اگر داده‌های رمز عبور را حذف کنید، می‌توانید قفل دستگاه را بدون از دست دادن اطلاعات کاربر باز کنید.

بسیاری از کاربران واقعا تعجب می کنند که چگونه قفل اندروید را از طریق رایانه باز کنند. برای انجام این کار به ابزار ADB و همچنین ابزار خود در حالت اشکال زدایی USB متصل شده است. الگوریتم زیر را دنبال کنید:


adb shellrm /data/system/gesture.key

rm /data/system/locksettings.db;

rm /data/system/locksettings.db-wal;

rm /data/system/locksettings.db-shm;

فلاش مجدد دستگاه

اگر راه های دیگری برای هک اندروید به دلایلی در دسترس شما نیست، الف. این کار به چند روش قابل انجام است:

  • از طریق کامپیوتر با استفاده از کابل USB؛
  • از طریق منوی بازیابی در هر دستگاه اندرویدی. برای دانلود مستقیم فایل سیستم عامل در حافظه گوشی یا تبلت خود باید از رایانه استفاده کنید.

در در این مورددانلود نه تنها امکان پذیر خواهد بود سیستم عامل رسمیو همچنین گزینه های سفارشی مختلفی که در آنها می توان طراحی، عملکردهای حفاظتی، درایورها، ابزارهای کمکی و غیره را تغییر داد.

حذف gesture.key (فقط برای قفل کردن با کلید گرافیکی کار می کند)

باز کردن قفل گوشی یا تبلت اندرویدی با استفاده از این روش بدون حقوق ریشه و غیرممکن است. اگر این شرایط را ندارید، روش دیگری را برای دور زدن حفاظت انتخاب کنید. کلید گرافیکیبه صورت زیر بازنشانی می شود:


بسیاری از روش های توضیح داده شده در بالا بدون باز کردن قفل بوت لودر غیرممکن است. با انجام این کار، شما حقوق روت دریافت می کنید و می توانید نسخه سیستم عامل یا ریکاوری سفارشی خود را نصب کنید، بنابراین قبل از اینکه قفل اندروید را کرک کنید، باید محافظ بوت لودر را حذف کنید. برای آمادگی کامل در مواقعی که کد/الگوی پین خود را فراموش کرده اید، فوراً این کار را انجام دهید.

الگوریتم باز کردن قفل:


پس از این، فرآیند فعال سازی بوت لودر شروع شده و در صفحه دستگاه ظاهر می شود. منتظر بمانید تا فرآیند تکمیل شود و سپس به سادگی دستگاه خود را راه اندازی مجدد کنید. باز کردن قفل بوت لودر کامل شد. نکاتی که در بالا توضیح داده شد تقریباً برای همه موارد مناسب هستند، زیرا هر کسی ممکن است وضعیت مشکل خود را داشته باشد. امیدواریم توصیه های ما به شما کمک کند تا به سرعت و به درستی از شر مشکل خلاص شوید.

به دست آوردن حقوق ابرکاربر بدون کمک کامپیوتر با استفاده از مثال nexus7_2013.

دستورالعمل ها

  • ۱- اپلیکیشن Towelroot را دانلود کنید.
  • 2. مطمئن شوید که در قسمت تنظیمات/امنیت کادری که امکان نصب از منابع ناشناس را می دهد انتخاب شده باشد.
  • 3. بدون توجه به هشدار زیر نصب کنید:
  • {
    ما نصب این برنامه را توصیه نمی کنیم:
    ریشه حوله
    حاوی کدهایی برای دور زدن امنیت اندروید است.
    (چک باکس) به هر حال نصب شود (تیک نخورده)
    (دکمه) نصب نکنید
    (دکمه) به هر حال نصب کنید
    }
  • 4. کادر مربوطه را علامت بزنید و روی دکمه مربوطه کلیک کنید.
  • 5. برنامه را باز کنید و دکمه ای به نام:
    "آن را ra1n بساز"
  • 6. مکان آن را به دقت به خاطر می آوریم، از آن زمان باید Talkback را مکث کنیم، در غیر این صورت با خطا مواجه می شویم.
  • 7. TalkBack را به طور موقت از طریق منوی زمینه جهانی بارگیری کنید.
  • 8. جایی را که در نقاط (5 و 6) به خاطر داشتیم را فعال می کنیم.
  • در اینجا نیازی به دو زبانه نیست، یک ضربه کافی است.
  • اگر فردی بینا در دسترس شماست، بهتر است از او بخواهید این عمل ساده را انجام دهد.
  • 9. ما مدتی صبر می کنیم، تقریباً 10-15 ثانیه اگر دستگاه راه اندازی مجدد نشود، خودمان این کار را انجام می دهیم.
  • 10. اپلیکیشن supersu را نصب کنید.
  • 11. سوپرسو را راه اندازی کنید. و ما با پیشنهاد به روز رسانی فایل باینری موافقت می کنیم.
  • 12. اگر همه مراحل به درستی انجام شده باشد، اکنون تلفن می تواند از حقوق ابرکاربر استفاده کند.

یادداشت ها:

  • لیست دستگاه های پشتیبانی شده برای Towelroot. واقع شده است
  • اگر پس از راه اندازی supersu. شما یک پیام دریافت می کنید -
    "فایل باینری به روز نشد"
    سپس دستگاه خود را راه اندازی مجدد کنید و دوباره امتحان کنید.
  • اگر این کمکی به شما نمی کند، به احتمال زیاد شما حقوق ابرکاربر را برای انجام این کار به دست نیاورده اید، با استفاده از کمک یک فرد بینا، دکمه "Make it ra1n" را فعال کنید.
  • قبل از نصب حقوق سوپرکاربر، تمام مشکلات مرتبط با استفاده نادرست و لغو گارانتی دستگاه خود را به دقت مطالعه کنید...

به دلیل مسدود شدن امنیتی نمی توانم برنامه ها و بازی ها را در اندروید نصب کنم.. این یک مشکل نیست، در این مقاله نحوه باز کردن دسترسی به نصب را یاد خواهید گرفت.

اگر بازی ها یا برنامه هایی را از اینترنت دانلود کرده اید و می خواهید آنها را روی اندروید خود نصب کنید، می توانید ببینید صفحه نمایش اندرویدپیامی مانند این: "به دلایل امنیتی، نصب برنامه های کاربردی از منابع ناشناخته در دستگاه مسدود شده است." اگر برنامه را از طریق بلوتوث یا Wi-Fi از تلفن، رایانه، لپ‌تاپ، تبلت یا دستگاه دیگری دریافت کرده باشید، ممکن است نصب مسدود شود. البته همه اینها برای ایمنی اندروید شما انجام می شود، زیرا اکنون می توانید تعداد زیادی برنامه را با ویروسی دانلود و نصب کنید که می تواند تلفن شما را مسدود کند و برای باز کردن قفل آن از صاحبش پول اخاذی کند. اگر گوشی هوشمند یا تبلت جدیدی دارید نسخه های اندروید، سپس در زیر پیوندی به صفحه با پیدا خواهید کرد اطلاعات دقیقدر مورد نصب یا مسدود کردن برنامه های ناشناخته

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

حالا بیایید ببینیم نحوه اجازه نصب برنامه های کاربردی در اندروید از منابع ناشناس. قبل از نصب برنامه ها یا بازی ها، به تنظیمات اندروید بروید و مورد امنیتی را جستجو کنید، سپس مورد را پیدا کنید منابع ناشناختهو کادر کنار آن را علامت بزنید. اکنون می توانید برنامه هایی را در اندروید از منابع ناشناس نصب کنید که به دلایل امنیتی مسدود شده اند. سپس می توانید دوباره علامت کادر را بردارید و به این ترتیب دوباره نصب برنامه های ناخواسته را مسدود خواهید کرد.

همچنین اگر قبلاً نصب را شروع کرده اید و پیامی مبنی بر ممنوع بودن نصب بر روی دستگاه خود به دلایل امنیتی مشاهده می کنید، می توانید بلافاصله اجازه نصب را بدهید. هنگامی که یک پیام بر روی صفحه نمایش داده می شود، با کلیک بر روی آن، بلافاصله به آیتم امنیتی می رسیم و می توانیم کادر کنار مورد را بررسی کنیم منابع ناشناختهو نصبی را که شروع کرده اید ادامه دهید. پس از چنین نصبی، چک باکس را در تنظیمات امنیتی ذخیره نکنید، یعنی باید هر بار اجازه نصب برنامه ها را بدهید.

برنامه های کاربردی را از منابع ناشناخته نصب نکنید، مگر اینکه مطمئن باشید که خطر ابتلا به ویروس وجود ندارد. برنامه ها می توانند از حساب شما پول کم کنند، دستگاه شما را مسدود کنند یا به دستگاه شما آسیب برسانند.

فراموش نکنید که در مورد اینکه آیا این مقاله به شما کمک کرده است یا خیر نظر بدهید، لطفاً مدل دستگاه را مشخص کنید تا شما نیز همان را دریافت کنید. اطلاعات مفیدبرای کاربران اندروید

  • امیدوارم این مقاله به شما کمک کرده باشد و اطلاعات را پیدا کرده باشید نحوه نصب برنامه های مسدود شده در اندروید از منابع ناشناس.
  • ما با مهربانی از شما می خواهیم که کمک متقابل داشته باشید و نکات مفیدی را به اشتراک بگذارید.
  • با تشکر از شما برای پاسخگویی، کمک متقابل و توصیه های مفید شما!!!


06-08-2019
ساعت 00 48 دقیقه
پیام:
با سلام، هر آنچه در مورد موضوع "در اندروید هنگام نصب برنامه ها و بازی ها، پیامی ظاهر می شود که نصب از منابع ناشناس در دستگاه مسدود شده است" توضیح دادید. توصیه ها را بخوانید

13-06-2019
ساعت 09 19 دقیقه
پیام:
چگونه یک مدیر را حذف کنیم؟

06-01-2018
ساعت 6 بعد از ظهر 24 دقیقه
پیام:
متشکرم خب من یه مشکلی دارم اگه بنویسن: خطا در تجزیه پکیج میشه بگید چیکار کنم. چه باید کرد؟

02-01-2018
ساعت 15 46 دقیقه
پیام:
راهنما، تلفن نصب یک برنامه را مسدود کرده است که از فروشگاه Play نیست، من آن را از Chrome دانلود کردم، روی باز کردن کلیک کردم، اما نصب نشد.

18-12-2017
ساعت 11 11 دقیقه
پیام:
با سلام، هر آنچه در مورد موضوع "در اندروید هنگام نصب برنامه ها و بازی ها، پیامی ظاهر می شود که نصب از منابع ناشناس در دستگاه مسدود شده است" توضیح دادید. من توصیه ها را خواندم و همین کار را انجام دادم

31-10-2017
ساعت 11 شب 05 دقیقه
پیام:
ترفند این است که LG L70 من حتی به من اجازه نمی دهد که جعبه را برای حذف ممنوعیت علامت بزنم ...

26-09-2017
ساعت 00 27 دقیقه
پیام:
من نمی توانم روی علامت چک کلیک کنم، وقتی روی علامت چک کلیک کردم، برای من روشن نشد

11-09-2017
ساعت 03 37 دقیقه
پیام:
یا می توانید مقاله را به این صورت بنویسید: قبل از نصب برنامه ها یا بازی ها، به تنظیمات اندرویدو به دنبال آیتم امنیتی بگردید، سپس آیتم منابع ناشناخته را پیدا کنید و کادر کنار آن را علامت بزنید.

28-03-2017
.. و زندگی طولانی تر می شود .. بدون خفه تو در 6 پاراگراف.
پیام:
ساعت 20 06 دقیقه من یک چک باکس کنار «نصب نرم افزار از منابع ناشناس» دارم، اما تلفن همچنان نصب را مسدود می کند.گوشی میزو

17-12-2016
تبصره 3. این خوبه؟ من قبلاً با Meizu سروکار نداشتم.
پیام:
ساعت 20 52 دقیقه ولی من یه مشکل دیگه دارم و بعد از 15-30 دقیقه مدام از منبع ناشناس این مورد تیک میخوره. کاری که من انجام ندادم - از تنظیم مجدد به تنظیمات کارخانه،برنامه های آنتی ویروس

05-12-2016
من نصبش کردم ولی مدام تیک تاک میکنه. کمک!
پیام:
ساعت 10 شب 52 دقیقه

05-12-2016
صوفیه، سعی کنید برنامه را از طریق تنظیمات حذف نصب کنید و برنامه هایی که در آنجا غیرفعال یا کاملاً حذف می شوند.
پیام:
ساعت 10 شب 05 دقیقه

31-10-2016
کمک! من بازی رو از منبع ناشناس دانلود کردم و الان نمیتونم پاکش کنم ((
پیام:
ساعت 21 47 دقیقه

یک مشکل مربوط به این است که (به دلیل اشکال سیستم عامل)، من به تب "امنیت" در تنظیمات دسترسی ندارم. پس از ورود به این تب، آن را به سمت برده می اندازد. جدول، با پیامی مانند «برنامه تنظیمات پاسخ نمی‌دهد» چگونه می‌توانم نصب برنامه‌های «چپ» را از طریق تنظیمات فعال نکنم؟ به دست آوردن حقوق ریشه برای اندروید بدون استفاده از رایانه شخصی و نیاز به استفاده از ابزارهای نرم افزاری با یادگیری دشوار است.فرصت موجود

. در این مقاله به شما خواهیم گفت که چگونه با استفاده از برنامه اندروید Framaroot تنها در دو مرحله ساده حقوق Superuser را دریافت کنید.

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

مهم! دستکاری هایی که در زیر توضیح داده شده است خطرات خاصی را به همراه دارد! هر اقدام، از جمله پیروی از دستورالعمل‌های زیر، توسط کاربر با خطر و خطر شخصی انجام می‌شود. مدیریت منابع مسئول عواقب منفی احتمالی نیست.

اپلیکیشن Framarut پس از دانلود یا کپی در حافظه یا کارت حافظه دستگاه، یک فایل apk کاملا معمولی است. نصب نیازی به اقدامات خاصی ندارد، همه چیز استاندارد است.

مرحله 2: دریافت حقوق ریشه

ما تعدادی مقاله را به شما معرفی کردیم که به وضوح نشان می داد که برنامه های اندروید واقعا چقدر آسان هستند. شما حتی برای این کار نیازی به دی اسمبلر ندارید، فقط به دانش سطحی جاوا و زبان اسمالی نیاز دارید. بنابراین، اگر درخواست شمابسیار محبوب خواهد بود، بدانید: دزدیده می شود و توابع پولی از طریق دستکاری های ساده فعال می شوند. و اگر تصمیم به کسب درآمد با استفاده از تبلیغات داشته باشید، خاموش خواهد شد.

محافظت از یک برنامه دشوار است، اما ممکن است. اول از همه، فوراً ارزشش را دارد مدل توزیع Pro/Lite را کنار بگذارید. حذف این برنامه از گوشی هوشمند بسیار آسان است، بنابراین یک دزد فقط باید یک بار برنامه را بخرد و سپس می توان آن را همانطور که هست توزیع کرد. در مرحله دوم، شما باید مراقبت کنید حفاظت معکوس کد. دیکامپایل کد جاوا آسان است و تغییر کد باینری نیاز به مهارت یا ابزار خاصی ندارد. ثالثاً، باید مطمئن شوید که حتی در صورت هک موفقیت آمیز، برنامه به سادگی کار نمی کند. سپس هکر باید دو مشکل را همزمان حل کند: برنامه را هک کند و نسخه هک شده را کار کند.

بنابراین، ما نسخه Pro را رها می کنیم و مبارزه را آغاز می کنیم.

مخفی کردن و مبهم کردن کد

بهترین راه برای محافظت از کد برنامه در برابر معکوس کردن آن است مبهم سازیبه عبارت دیگر، مبهم سازی بایت کد به طوری که درک آن برای معکوس کننده غیرقابل تحمل دشوار است. چندین ابزار وجود دارد که می تواند این کار را انجام دهد. ساده ترین، اما همچنان موثر در Android Studio گنجانده شده است. این پروگارد.

برای فعال کردن آن، فقط خط minifyEnabled true را به بخش اندروید → buildTypes → انتشار فایل build.gradle اضافه کنید:

android(...buildTypes(release(minifyEnabled true)...))

اندروید(

. . .

انواع ساخت(

انتشار(

minifyEnabled درست است

. . .

پس از این، اندروید استودیو شروع به ارسال تمام بیلدهای "انتشار" از طریق ProGuard می کند. در نتیجه، برنامه فشرده تر می شود (به دلیل حذف کدهای استفاده نشده)، و همچنین سطحی از محافظت در برابر معکوس را دریافت می کند. "Some" به این معنا که ProGuard نام تمام کلاس‌ها، متدها و فیلدهای داخلی را با ترکیب یک یا دو حرف جایگزین می‌کند. این در واقع درک کدهای دکامپایل/جداسازی شده را بسیار دشوارتر می کند.


مرحله بعدی - رمزگذاری رشته. این به ویژه در صورتی مفید است که هر گونه داده حساس را در داخل برنامه ذخیره کنید: شناسه ها، کلیدها، نقاط پایانی REST API. همه اینها به هکر کمک می کند تا کد شما را هدایت کند یا اطلاعات مهمی را از آن استخراج کند.

می توانید رشته ها را رمزگذاری کنید به روش های مختلفبرای مثال با استفاده از ابزارهای Stringer یا DexGuard. مزیت: اصلاح کاملاً خودکار کد موجود برای پیاده سازی رمزگذاری رشته. نقطه ضعف: قیمتی که برای شرکت ها مقرون به صرفه است، اما برای یک توسعه دهنده مستقل بسیار بالا است.

بنابراین، ما سعی خواهیم کرد این کار را به تنهایی انجام دهیم. در ساده ترین حالت، رمزگذاری رشته با استفاده از جاوا به صورت زیر انجام می شود:

بایت استاتیک عمومی encryptString (پیغام رشته، SecretKey Secret) Exception را پرتاب می کند (رمز رمز = تهی؛ رمز = Cipher.getInstance ("AES/ECB/PKCS5Padding")؛ cipher.init (Cipher.ENCRYPT_MODE، Secret)؛ بازگشت cipher.doFinal( message.getBytes ("UTF-8"));

بایت استاتیک عمومی encryptString (پیام رشته ای، SecretKey Secret) Exception (

رمز رمز = null ;

cipher .init (Cipher .ENCRYPT_MODE، مخفی) ;

Return cipher .doFinal ( message . getBytes ( "UTF-8" ) );

و رمزگشایی به این صورت است:

رشته استاتیک عمومی decryptString (byte cipherText، SecretKey Secret) Exception (رمز رمز = null؛ رمز = Cipher.getInstance ("AES/ECB/PKCS5Padding")؛ cipher.init (Cipher.DECRYPT_MODE، مخفی) را پرتاب می کند. .doFinal(cipherText)، "UTF-8")

رشته استاتیک عمومی رمزگشایی رشته (بایت cipherText، SecretKey Secret) Exception (

رمز رمز = null ;

cipher = Cipher .getInstance ( "AES/ECB/PKCS5Padding" );

cipher .init (Cipher. DECRYPT_MODE، مخفی);

برگرداندن رشته جدید (cipher . doFinal (cipherText ) , "UTF-8" );

برای تولید یک کلید، یک خط کافی است:

عمومی ایستا SecretKey generalKey (رمز عبور رشته) Exception را پرتاب می کند (مخفی بازگشت = SecretKeySpec جدید(password.getBytes()، "AES")؛ )

عمومی ایستا SecretKey generalKey (رمز عبور رشته) Exception (

return secret = new SecretKeySpec(password.getBytes()، "AES");

نکته این است که یک برنامه کاربردی دسکتاپ/موبایل ساده در جاوا بنویسید که تمام رشته های شما را به عنوان ورودی گرفته و نسخه های رمزگذاری شده آنها را به عنوان خروجی تولید کند. در مرحله بعد، این رشته ها را به جای رشته های اصلی در برنامه اصلی قرار می دهید و در مکان هایی که به آنها دسترسی دارید، تابع ()decryptString را فراخوانی کنید.

در نتیجه، مهاجم به سادگی قادر به دیدن رشته های رمزگذاری شده با دیکامپایل برنامه نخواهد بود. اما، البته، او می تواند یک رمزگشای ساده بر اساس کد دیکامپایل شده رمزگذار شما بنویسد. به عبارت دیگر، این یک دارو نیست، اما رمزگذاری رشته لایه دیگری از پیچیدگی را اضافه می کند.

می‌توانید از این هم فراتر رفته و از یکی از ابزارهای جامع حفاظت از برنامه‌های اندروید مانند AppSolid استفاده کنید. باز هم گران است، اما به شما امکان می دهد کل برنامه را رمزگذاری کنید. این واقعاً می‌تواند بسیاری از معکوس‌کننده‌ها را بترساند، اما تعدادی ابزار از جمله JEB decompiler پولی جاوا وجود دارد که می‌تواند چنین حفاظتی را به‌طور خودکار حذف کند.

همانطور که قبلاً در مقاله نوشتن برنامه های ماژولار برای اندروید نوشتم، می توانید سعی کنید برنامه خود را به ماژول های کوچک زیادی تقسیم کنید. این به خودی خود یک روش حفاظتی نیست و به سختی مانع کار معکوس خواهد شد. اما آن را شکسته های مختلف سیستم های خودکارکرک کردن برنامه آنها به سادگی قادر نخواهند بود بفهمند کجا باید کد موجود در ماژول را جستجو کنند.

خوب، آخرین مورد: لازم است که همه تماس‌های لاگر، یعنی همه تماس‌های Log.d()، Log.v() و غیره را از کد حذف کنید. در غیر این صورت، مهاجم می‌تواند از این اطلاعات برای درک منطق برنامه استفاده کند.

یک برنامه هک شده را خراب کنید

باشه عمر معکوس رو کمی خراب کردیم. وقت آن است که دوباره آن را انجام دهیم! اما چگونه می توان تشخیص داد که یک برنامه هک شده است؟ به طور دقیق تر، چگونه می تواند خود را دریابد؟ از این گذشته ، مفاهیم "هک شده" و "هک نشده" فقط در ذهن ما وجود دارد ، یعنی اینها مفاهیم نسبتاً بالایی هستند که نمی توان آنها را به صورت الگوریتمی توصیف کرد.

همینطور است، اما اینطور نیست. واقعیت این است که در داخل فایل APK مجموعه ای از ابرداده وجود دارد که ذخیره می کند چک جمع هاکاملاً تمام فایل‌های موجود در بسته، و خود ابرداده با کلید توسعه‌دهنده امضا می‌شود. اگر برنامه را تغییر دهید و دوباره آن را بسته بندی کنید، فراداده بسته تغییر می کند و بسته باید دوباره امضا شود. و از آنجایی که معکوس کلید توسعه دهنده شما را ندارد و نمی تواند داشته باشد، از یک کلید تولید شده به طور تصادفی یا به اصطلاح کلید تست استفاده می کند.

خود آندروید به راحتی چنین برنامه ای را می بلعد (پایگاه داده ای از تمام امضاهای دیجیتال همه توسعه دهندگان احتمالی اندروید را نگه نمی دارد)، اما ما خودمان را داریم. امضای دیجیتال، و ما می توانیم آن را تأیید کنیم!

تایید امضای دیجیتال

در واقع، روش بسیار ساده است. شما باید کدی را در برنامه وارد کنید که هش کلید امضای دیجیتال فعلی بسته را دریافت کرده و آن را با رمز ذخیره شده قبلی مقایسه کنید. آنها مطابقت دارند - برنامه دوباره بسته بندی نشده است (و هک نشده است)، نه - ما زنگ خطر را به صدا در می آوریم.

برای شروع، کد زیر را در برنامه وارد کنید (هرچه عمیق تر آن را پنهان کنید، بهتر است):

رشته ایستا عمومی getSignature(Context Context) ( رشته apkSignature = null؛ امتحان کنید ( PackageInfo packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES)؛ برای (Signature Messignage Digestfos) = MessageDigest.getInstance("SHA") ; + apkSignature) ) catch (Exception e) () بازگشت apkSignature )

رشته استاتیک عمومی getSignature (زمینه زمینه) (

رشته apkSignature = null ;

سعی کن (

PackageInfo packageInfo = context.getPackageManager().getPackageInfo(

context.getPackageName()،

PackageManager .GET_SIGNATURES

برای (امضا امضا: packageInfo .signatures) (

MessageDigest md = MessageDigest .getInstance ( "SHA" ) ;

md.update(signature.toByteArray());

apkSignature = Base64 .encodeToString (md .digest () , Base64 .DEFAULT );

Log .e ("DEBUG" , "SIGNATURE: " + apkSignature ) ;

) گرفتن (استثنا e) ( )

بازگشت apkSignature;

برنامه را بسازید، اجرا کنید و به گزارش اجرا نگاه کنید. در آنجا خط SIGNATURE را خواهید دید: 478uEnKQV+fMQT8Dy4AKvHkYibo=. این هش است. نه تنها باید به خاطر سپرده شود، بلکه باید در کد برنامه به عنوان یک ثابت، به عنوان مثال تحت نام SIGNATURE قرار گیرد. حالا خط Log.e... را از کد حذف کنید و روش زیر را اضافه کنید:

چکSignature بولین استاتیک عمومی (Context Context) (SIGNATURE.equals(getSignature(context)) را برمی گرداند.)

چک امضای بولی استاتیک عمومی (زمینه زمینه) (

بازگشت SIGNATURE .برابر ( getSignature ( context ) ) ;

او فقط هش ذخیره شده را با هش کلید که در داخل است بررسی می کند در حال حاضردرخواست امضا شد اگر امضای دیجیتال متعلق به شما باشد (برنامه بازسازی نشده است) این تابع true و اگر تغییر کرده باشد false را برمی‌گرداند. در مورد دوم چه کاری انجام دهید به شما بستگی دارد. شما می توانید به سادگی برنامه را با os.exit(0) خاتمه دهید یا می توانید آن را خراب کنید، برای مثال با فراخوانی یک متد روی یک شیء اولیه یا دسترسی به یک مقدار آرایه غیر موجود.

اما به یاد داشته باشید: یک مهاجم می تواند به سادگی کد تأیید امضای دیجیتال شما را قطع کند و هرگز کار نخواهد کرد (این در مورد کد زیر نیز صادق است). بنابراین، همانطور که در بالا نشان داده شده است، آن را در مکانی نامشخص پنهان کنید و هش کلید اصلی را رمزگذاری کنید.


بررسی منبع نصب

روش دیگر محافظت این است که بدانید برنامه از کجا نصب شده است. منطق اینجا ساده است: اگر منبع نصب Play Store باشد، پس همه چیز خوب است، این یک برنامه اصلی و بدون بسته بندی است. اگر نه، وارز از انجمن دانلود و از کارت حافظه یا از بازار سیاه نصب کرده است.

می توانید در یک خط متوجه شوید که برنامه از کجا نصب شده است و خود عملکردی که این کار را انجام می دهد ممکن است به شکل زیر باشد:

استاتیک بولین عمومی checkInstaller(متن زمینه) (نصب کننده رشته نهایی = context.getPackageManager().getInstallerPackageName(context.getPackageName()); نصب کننده بازگشتی != null && installer.startsWith("com.android.vending")؛ )

چک نصب کننده بولین استاتیک عمومی (زمینه زمینه) (

نصب کننده رشته نهایی = context.getPackageManager() .getInstallerPackageName(context.getPackageName()) ;

بازگشت نصب کننده != null & آمپر & آمپر installer.startsWith("com.android.vending");

طبق معمول: درست - همه چیز خوب است، نادرست - هیوستون، ما مشکلاتی داریم.

تعیین شبیه ساز

برخی از روش های معکوس برنامه شامل استفاده از یک شبیه ساز است. بنابراین، اضافه کردن کد به برنامه ای که بررسی می کند آیا در یک محیط مجازی اجرا می شود مفید خواهد بود. این را می توان با خواندن مقادیر برخی از متغیرهای سیستم انجام داد. مثلا استاندارد شبیه ساز اندروید Studio این متغیرها و مقادیر را تنظیم می کند:

ro.hardware=گلدفیش ro.kernel.qemu=1 ro.product.model=sdk

ro .hardware = ماهی قرمز

ro .kernel .qemu = 1

ro .product .model = sdk

بنابراین، پس از خواندن مقادیر این متغیرها، می توان فرض کرد که کد در شبیه ساز اجرا شده است:

public static boolean checkEmulator() ( try ( boolean goldfish = getSystemProperty("ro.hardware").contains("goldfish"); boolean emu = getSystemProperty("ro.kernel.qemu").length() > 0; boolean sdk = getSystemProperty("ro.product.model").contains("sdk"); نام رشته) Exception (کلاس sysProp = Class.forName ("android.os.SystemProperties")؛ بازگشت (رشته) sysProp.getMethod("get"، کلاس جدید(String.class)).invoke(sysProp، New Object ( نام))؛

استاتیک بولین چکEmulator() (

سعی کن (

© 2024 ermake.ru -- درباره تعمیر رایانه شخصی - پورتال اطلاعاتی