امیرحسین قاسمی 610 ارسال شده در 31 شهریور، ۱۴۰۰ اشتراک گذاری ارسال شده در 31 شهریور، ۱۴۰۰ سلام، در این آموزش میخوام نحوه جلوگیری از کامپایل مجدد برنامه رو توضیح بدم. ببینید یک سری نرم افزارهای معروفی وجود دارند که هر فردی با استفاده از اونها میتونه برنامه شما رو دیکامپایل کنه و حداقل فایل های Assets یا نام و پکیج نیم و نسخه رو ویرایش کنن، یا یکی از معضلاتی که همه ما باهاش سروکله میزنیم اینه که از بچه های 6،7 ساله تا پیرمردهای 80 ساله اسم خودشون رو هکر گذاشتن و با لاکی پچر و برنامه های مخرب مشابه تلاش می کنن پرداخت درون برنامه ای مارو هک کنن که البته خب مارکت ها api ارائه دادن و این مشکل تا حدودی حل شده ولی اگه بخوایم دیگه کاملا خیال مون راحت باشه می تونیم از این آموزش هم استفاده کنیم. ببینید هر برنامه ای یک امضای دیجیتال داره که کلیدش فقط دست توسعه دهنده برنامه هست و وقتی اون برنامه دیکامپایل میشه و مثلا از پوشه Assets یک تصویری ویرایش میشه یا وقتی که همین لاکی پچر میاد برنامه مارو دیکامپایل می کنه و یه سری چیزایی رو به برنامه مون اضافه می کنه که سیستم پرداخت درون برنامه ای گول بخوره امضای دیجیتال اون برنامه میشکنه و برای نصب شدن یک فایل apk روی اندروید با امضا خورده باشه و چون دیکامپایلر امضای توسعه دهنده رو نداره پس خودش یا با کلید دیباگ امضا می کنه یا با یک کلید دیگه. پس تا الان یک چیزی رو متوجه شدیم اگه کسی بخواد برنامه رو دستکاری کنه در نهایت امضای برنامه فرق می کنه. پس ما میتونیم داخل سورس برنامه بگیم هربار که کاربر وارد برنامه میشه بیا ببین آیا این امضا مال منه یا نه؟ اگه امضا مال من بود یعنی برنامه دست نخورده و ادامه بده اما اگه امضا مال من نبود یعنی حداقل این برنامه ما یکبار دستکاری شده پس کاربر رو از ادامه اجرای برنامه منع کن. برای تشخیص کلید اول این Sub رو اضافه کنین: Sub KeyDetection As String Try Dim jo As JavaObject jo.InitializeContext Dim signatures() As Object = jo.RunMethodJO("getPackageManager", Null).RunMethodJO("getPackageInfo", _ Array (Application.PackageName, 0x00000040)).GetField("signatures") Dim sig As JavaObject = signatures(0) Dim md As MessageDigest Dim hash() As Byte = md.GetMessageDigest(sig.RunMethod("toByteArray", Null), "SHA-1") Dim bc As ByteConverter Dim raw As String = bc.HexFromBytes(hash) Dim sb As StringBuilder sb.Initialize For i = 0 To raw.Length - 2 Step 2 sb.Append(raw.CharAt(i)).Append(raw.CharAt(i + 1)).Append(":") Next sb.Remove(sb.Length - 1, sb.Length) Return sb.ToString Catch Return "Null" End Try End Sub اول در اکتویتی کریت این کد رو اضافه کنین. Log(KeyDetection) برنامه رو یک مرتبه اجرا کنید در پنجره Log خود b4a یک رشته چاپ میشه اونو کپی کنید و سپس این کد بالا رو دیگه نیازی نداریم و حذفش کنین. If رشته چاپ شده=KeyDetection then ToastMessageShow("مجاز",False) Else ToastMessageShow("مجاز نیست",False) End If لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
DexterFstone 396 ارسال شده در 31 شهریور، ۱۴۰۰ اشتراک گذاری ارسال شده در 31 شهریور، ۱۴۰۰ مطلب مفیدی و راه کار زیرکانه ای بود👍 ی سوال این روش برای جلوگیری از اجرای برنامه پچ شده هم جواب میده؟ مثل لاکی پچر اگه اسمشا اشتباه نکفته باشم؟ این برنامه ها کلید و اسم پکیج تغیییر میدن؟ لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
امیرحسین قاسمی 610 ارسال شده در 1 مهر، ۱۴۰۰ سازنده اشتراک گذاری ارسال شده در 1 مهر، ۱۴۰۰ در ۱۴۰۰/۶/۳۱ در ۲۲:۳۴، DexterFstone گفته است: مطلب مفیدی و راه کار زیرکانه ای بود👍 ی سوال این روش برای جلوگیری از اجرای برنامه پچ شده هم جواب میده؟ مثل لاکی پچر اگه اسمشا اشتباه نکفته باشم؟ این برنامه ها کلید و اسم پکیج تغیییر میدن؟ بله، کلا کوچیکترین تغییر توی برنامه با هر ابزاری انجام بشه امضاش میشکنه و به این روش تشخیص میدیم. لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
User 97 ارسال شده در 1 مهر، ۱۴۰۰ اشتراک گذاری ارسال شده در 1 مهر، ۱۴۰۰ این روش جلوی اپلیکیشن های کلون ساز یا برنامه هایی مثل اپک ادیتور رو میگیره اما این کد کارکردی برای دستگاه های که به شکل پیش فرض از قابلیت ایجاد کلون یا نسخه دوم پشتیبانی میکنن نداره روشی برای محدود کردن نسخه های دوم یا بیشتر برای این دستگاه ها وجود داره ؟ لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
ali mo 264 ارسال شده در 2 مهر، ۱۴۰۰ اشتراک گذاری ارسال شده در 2 مهر، ۱۴۰۰ در ۱۴۰۰/۶/۳۱ در 15:47، امیرحسین قاسمی گفته است: سلام، در این آموزش میخوام نحوه جلوگیری از کامپایل مجدد برنامه رو توضیح بدم. ببینید یک سری نرم افزارهای معروفی وجود دارند که هر فردی با استفاده از اونها میتونه برنامه شما رو دیکامپایل کنه و حداقل فایل های Assets یا نام و پکیج نیم و نسخه رو ویرایش کنن، یا یکی از معضلاتی که همه ما باهاش سروکله میزنیم اینه که از بچه های 6،7 ساله تا پیرمردهای 80 ساله اسم خودشون رو هکر گذاشتن و با لاکی پچر و برنامه های مخرب مشابه تلاش می کنن پرداخت درون برنامه ای مارو هک کنن که البته خب مارکت ها api ارائه دادن و این مشکل تا حدودی حل شده ولی اگه بخوایم دیگه کاملا خیال مون راحت باشه می تونیم از این آموزش هم استفاده کنیم. ببینید هر برنامه ای یک امضای دیجیتال داره که کلیدش فقط دست توسعه دهنده برنامه هست و وقتی اون برنامه دیکامپایل میشه و مثلا از پوشه Assets یک تصویری ویرایش میشه یا وقتی که همین لاکی پچر میاد برنامه مارو دیکامپایل می کنه و یه سری چیزایی رو به برنامه مون اضافه می کنه که سیستم پرداخت درون برنامه ای گول بخوره امضای دیجیتال اون برنامه میشکنه و برای نصب شدن یک فایل apk روی اندروید با امضا خورده باشه و چون دیکامپایلر امضای توسعه دهنده رو نداره پس خودش یا با کلید دیباگ امضا می کنه یا با یک کلید دیگه. پس تا الان یک چیزی رو متوجه شدیم اگه کسی بخواد برنامه رو دستکاری کنه در نهایت امضای برنامه فرق می کنه. پس ما میتونیم داخل سورس برنامه بگیم هربار که کاربر وارد برنامه میشه بیا ببین آیا این امضا مال منه یا نه؟ اگه امضا مال من بود یعنی برنامه دست نخورده و ادامه بده اما اگه امضا مال من نبود یعنی حداقل این برنامه ما یکبار دستکاری شده پس کاربر رو از ادامه اجرای برنامه منع کن. برای تشخیص کلید اول این Sub رو اضافه کنین: Sub KeyDetection As String Try Dim jo As JavaObject jo.InitializeContext Dim signatures() As Object = jo.RunMethodJO("getPackageManager", Null).RunMethodJO("getPackageInfo", _ Array (Application.PackageName, 0x00000040)).GetField("signatures") Dim sig As JavaObject = signatures(0) Dim md As MessageDigest Dim hash() As Byte = md.GetMessageDigest(sig.RunMethod("toByteArray", Null), "SHA-1") Dim bc As ByteConverter Dim raw As String = bc.HexFromBytes(hash) Dim sb As StringBuilder sb.Initialize For i = 0 To raw.Length - 2 Step 2 sb.Append(raw.CharAt(i)).Append(raw.CharAt(i + 1)).Append(":") Next sb.Remove(sb.Length - 1, sb.Length) Return sb.ToString Catch Return "Null" End Try End Sub اول در اکتویتی کریت این کد رو اضافه کنین. Log(KeyDetection) برنامه رو یک مرتبه اجرا کنید در پنجره Log خود b4a یک رشته چاپ میشه اونو کپی کنید و سپس این کد بالا رو دیگه نیازی نداریم و حذفش کنین. If رشته چاپ شده=KeyDetection then ToastMessageShow("مجاز",False) Else ToastMessageShow("مجاز نیست",False) End If مرسی از آموزش خوبتون میشه با پکیج نیم هم این تغییر رو بررسی کرد که اگز تغییر یافته بود برنامه اجرا نشه ک البته کار کردن با امضا بهتره در ۱۴۰۰/۷/۱ در 21:47، Soheil_Miresmaili گفته است: این روش جلوی اپلیکیشن های کلون ساز یا برنامه هایی مثل اپک ادیتور رو میگیره اما این کد کارکردی برای دستگاه های که به شکل پیش فرض از قابلیت ایجاد کلون یا نسخه دوم پشتیبانی میکنن نداره روشی برای محدود کردن نسخه های دوم یا بیشتر برای این دستگاه ها وجود داره ؟ اگر اون کلون ساز خود گوشی پکیج تغییر بده می تونید هر دفعه در اجرای برنامه پکیج نیم ثابتتون رو با پکیج نیم ران تایم مقایسه کنید ک اگر تغییری یافته بود خروج کنید اما اگر پکیج نیم تغییر نمیده احتمالا فضا ذخیره سازی رو تغییر میده که یه مقدار روش فکر کنید شاید راهی باشه یا شاید تگ خاصی داره که اجازه نده به سیستم عامل این کاررو اگر در روش کلون خود سیستم عامل اسم برنامه تغییر می کنه می تونیید اسم هم به صورت پکیج نیم ران تایم بررسی کنید که اگر تغییر یافته بود خروج کنه (ولی این کار ها ممکنه باگ های مخفی داشته باشه ک داخل بعضی از سیستم عامل ها موجب اشتباه بشه مثلا اسم اگر به دو زبان انگلیسی و فارسی باشه اگر فارسی رو با نام ران تایم بررسی کنید باعث نتیجه اشتباه میشه ) لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
اندرویدستان 90 ارسال شده در 29 آبان، ۱۴۰۰ اشتراک گذاری ارسال شده در 29 آبان، ۱۴۰۰ با برنامه MultiSpace کار نمیکنه و کاربر میتونه دوباره از برنامه کپی بگیره لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
ارسالهای توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.