سلام دوستان
خواهشا یه راهی بزارید جلو پای ما برا فرار از دست این نرم افزار
این نرم افزار به راحتی پرداخت درون برنامه ای بازار ما رو مثل یه چوب کبریت شکست وازش رد شد و کاربر عادی رو به کاربر
ویژه ارتقا داد خواهشن یه راهنمایی کنید چیکار کنم
Printable View
سلام دوستان
خواهشا یه راهی بزارید جلو پای ما برا فرار از دست این نرم افزار
این نرم افزار به راحتی پرداخت درون برنامه ای بازار ما رو مثل یه چوب کبریت شکست وازش رد شد و کاربر عادی رو به کاربر
ویژه ارتقا داد خواهشن یه راهنمایی کنید چیکار کنم
دوستان کسی نظری نداره
با اپلیکیشن خودم تستش کردم. از همون اول با رنگ قرمز نشونش میده (به این معنی که این برنامه پچ نمی شود و هیچ شانسی برای کرک کردن آنها وجود ندارد) و هیچ کاریش نمیتونه بکنه. چطور اپلیکیشن شما رو مثل شکستن چوب کبریت پچ کرده؟
سلام سعید جان ممکنه شما بفرمایید تو سورستون از چه الگوریتمی استفاده کردید که این برنامه نتونسته روش عمل کنه؟؟؟
سعید جان یه سوال دیگه گوشی شما روته ؟؟؟ اگه روت نباشه این برنامه بخوبی عمل نمی کنه
سلام سعید جان ممکنه شما بفرمایید تو سورستون از چه الگوریتمی استفاده کردید که این برنامه نتونسته روش عمل کنه؟؟؟
سعید جان یه وسال دیگه گوشی شما روته ؟؟؟ اگه روت نباشه این برنامه بخوبی عمل نمی کنه
بنده هم برا پرداخت درون برنامه ای از SharedPreferences استفاده کردم
ولی براچی به راحتی کاربر عادی رو به کاربر ویژه ارتقا داد؟؟!!!
ممکنه یه راه حل اساسی پیشنهاد دهید تا منم از این منجلاب بیرون بیام
دوستان عزیز راهنمایی کنید
Lucky Patcher وقتی برنامه رو پچ می کنه، امضای اون رو تغییر میده. پس میتونی اول برنامه ات امضا رو چک کنی، اگه تغییر کرده بود پیام بده و برنامه رو ببنده
سعید جان شرمنده من تازه واردم نمیدونم این امضاش کجاست؟؟!!
منظورتون از امضا چیه
چه جور امضا رو محدود کنم
بازم یه دنیا ممنون
سلام
جالبه. روی برنامه خودم و چندتا برنامه دیگه هم تست کردم و توی همشون بدون پول، برنامه به نسخه کامل ارتقا داده شد. برنامه این جور عمل می کنه که بعد از کلیک روی پرداخت اصلا به بازار منتقل نمی شیم و برنامه lucky که باهاش برنامه رو پچ کردیم میاد بالا و دیگه تمام.
2 تا راه حل رو امتحان کردم که جواب نداد. یکی اینکه چک کردم اگه برنامه lucky patcher نصب بود به کاربر بگه تا زمانی که این برنامه نصبه برنامه ما اجرا نمیشه .
روش دوم هم چک کردن لایسنس برنامه بود که باز هم جواب نداد چون در واقع قسمت پرداخت درون برنامه ای دست کاری شده بود و لایسنس تغییری نکرده بود. البته گزینه تغییر لایسنس هم توی برنامه هست که روی برنامه من کار نکرد.
سلام دوست عزیز
حقیقتش این یه افتضاحه که به بار اومده
بعضی برنامه ها رو نمیشه کرک کرد تا پول ندی نمی تونی کاری از پیش ببری
ولی برنامه ای که من نوشتم رو تو نیم سوت کاربر عادی رو به ویژه ارتقا داد
حالا بنظر شماها چیکار باید کنیم
اگه اینجوری باشه که دیگه فاتحه برنامه هامون خوندس
دوستانی که به عنوان توسعه دهنده در این زمینه فعالیت می کنند خواهشن راهنمایی کنند
عجب نرم افزار ملعونیه :)
اصلا قرمز غیر قرمز حالیش نیست .. همه رو کرک کرد پرداخت درون برنامه رو تبدیل کرده به چیزی شبیه به ماست..
من داخل یک بازی ایرانی اسمشو نمیارم علامتش داخل نرم افزار قرمز بود بود تست کردم راحت بعد از زدن کمه یک دیتالوگ فیتلر شده باز کرد تموم پیام درست رو فرستاد البته قبلش پچ کردم با اینکه قرمز بود.
همین جور در شگفتم ..
اخرین نسخه شو دان کنید ببنید باید چی کارش کنیم !
سرقت در کمتر از 3 ثانیه !!
Ebrahimkh عزیز دوست من لطفا اسم بازی ای رو که بردی ویرایش کن
اما اونم کامل پرداخت درون برنامهش کشک میشه!!! خیلی راحت هر قدر که ادم بخواد میشه سکه خرید!
از این بد تر نمیشه!!
هرچیه تو همین لایسنسه
حالا چیکار باید کنیم
این لایسنس رو چجوری میشه دور از دست این برنامه قرار داد
باشه چشم ویرایش زدم
نمیدونم منظورتون از بررسی نصب اون برنامه چی و به چه شکل هست ولی من منظورم به این شکل هست، جریان لایسنس چی هست؟ :اشتباه:
من هفته پیش که به بازار گفتم گفتن خبر داریم! :متعجب: و لینک این صفحه رو دادن، اگه اشتباه نکنم یکی از بهترین راه حل ها این تیکه هست :
نقل قول:
برای درخواست خرید حتما از developer payload استفاده کنید
در API نسخه ۳ پرداخت درون برنامهای شما میتوانید همراه هر درخواست خرید یک developer payload هم به بازار ارسال کنید. این رشته میتواند به عنوان یک شناسهٔ منحصر به فرد از سمت شما برای این خرید در نظر گرفته شود. بازار بعد از اتمام مراحل خرید این رشته را همراه با جزئیات پرداخت به برنامهٔ شما بازمیگرداند.
شما باید این رشته را برای احراز هویت کاربری که درخواست خرید را داده است به بازار ارسال کنید. برای محصولات مصرف شدنی این رشته میتواند کاملا تصادفی ساخته شود، در حالیکه برای محصولاتی که مصرف شدنی نیستند، برای اطمینان از صحت خریده شدن محصول باید از یک رشتهٔ منحصر به فرد استفاده کنید.
وقتی که پاسخ را از بازار دریافت کردید، مطمئن شوید developer payload که بازار همراه با جزئیات خرید به شما بازگردانده است، همانی است که شما برای شروع عملیات پرداخت به بازار ارسال کرده بودید. برای اطمینان از امنیت پیشنهاد میشود این عملیات را بر روی سرور خود انجام دهید.
خب خب یک روش برای مقابله با این برنامه مخوف پیدا کردم که الان بهتون می گم.
ابتدا بگم که نه می شه چک کرد برنامه نصب هست یا نه و دوم اینکه این برنامه بدون تغییر لایسنس (امضای برنامه) هم می تونه پرداخت درون برنامه ای رو دور بزنه.از اون جایی که این برنامه مخوف یعنی lucky patcher برای اجرای کاراش نیاز به دسترسی روت و گوشی روت شده داره، در صفحه اول برنامه با متد زیر چک می کنیم که گوشی طرف روت شده یا نه. در صورت روت بودن گوشی به کاربر می گیم که "این برنامه در گوشی روت شده قابل اجرا نمی باشد" و در غیر این صورت کاربر به برنامه وارد میشه. همون طور هم که می دونید گوشی های روت شده نسبت به کوشی های روت نشده خیلی کمتر هستند.
این متد بدون نیاز به هیچ فایل خارجی jar/lib کار می کنه.
متد:
توی oncreate هم این طوری استفاده می کنیم :
private static boolean isRooted() {
return findBinary("su");
}
public static boolean findBinary(String binaryName) {
boolean found = false;
if (!found) {
String[] places = {"/sbin/", "/system/bin/", "/system/xbin/", "/data/local/xbin/",
"/data/local/bin/", "/system/sd/xbin/", "/system/bin/failsafe/", "/data/local/"};
for (String where : places) {
if ( new File( where + binaryName ).exists() ) {
found = true;
break;
}
}
}
return found;
}
خب نظرتون چیه که برای جلوگیری از روت کردن گوشی توسط کاربرها و کرک برنامه هامون، همه برنامه نویس های ایرانی دسترسی به برنامه شون رو از گوشی روت محدود کنن؟
if(isRooted()){
Toast.makeText(getBaseContext(), "این برنامه در گوشی روت شده قابل اجرا نمی باشد", Toast.LENGTH_LONG).show();
}else{
کد های ورود برنامه//
}
.................
دوست عزیز بازم یه دنیا ممنون
ولی اینجوری که شما عرض کردید برنامه هامون دیگه بفروش نمیرسن
اگه یکی بگه این برنامه تو گوشی روت اجرا نمیشه دیگه کی دانلود بزنه ؟؟؟؟!!؟!؟
حداقل یه راه منطقی تر که همه بتونن به راحتی استفاده کنند
بازم ممنون
اول بگم که فعلا این تنها راهی بود که پیدا کردم. احتمالا راه های بهتری هم هست ولی کسی که گوشیش روت باشه حالا امروز lucky patcher هست معلوم نیست فردا چه برنامه های دیگه ای بیان. فعلا ما دروازه رو می بندیم . این روت فقط به ضرر ما برنامه نویسا شده.
چرا به فروش نمی رسه؟ مگه رایگان و درون پرداخت نمی خواین بزارین؟
آره خب درون برنامه ای می خوام بزارم
بنظر شما این سورس جلوی لوک خوش شانس ما رو میگیره ؟؟؟!! خودتون تست زدین
من به بازار گفتم اونا گفت کدتون رو سمت سرور قرار بدین
گفتم یا للعجب این چی چی گفت
حالا شما به این روشی که بازار بهش اکتفا کرده تا حالا کار کردین
بله بهترین راه همین هست.
امضای برنامه داخل این برنامه تغییر نمیکنه چون در حالت پرداخت درون برنامه برنامه پچ نمیشه فقط انگار با تغییر dns داخلی در حالت موقت فقط پیام که مارکت ارسال میکنه به صورت کلیشه ای رو به برنامه میده.
با توجه به اینکه پرداخت درون برنامه های ایران یک کپی از گوگل پلی هست (حتی به خودشون زحمت تغییر دادن پیام رو هم ندادن!) برنامه های ما هم به این طاعون دچار میشه.
اما باید یک برنامه سمت سرور درست کنید که با یک الگوریتم به خصوص یک رشته منحصر به فرد رو به برنامه بده و برنامه این رشته منحصر به فرد رو همراه با payload برای مارکت ارسال بفرسته. در نهایت بعد از جواب مارکت به برنامه خروجی رو به سرور بده و بررسی کنه که این رشته قبلا ثبت شده یا خیر. بهتره برای بهینه شدن یک سیستم ورود با داشته باشید که بعدا در صورتی که سرور شما مثلا یک میلیون کاربر داشت در حین جستجو به کم بودن سرعت مواجه نشید.
ولا من همین امروز که شما گفتین فهمیدم همچین برنامه ای هست. اگه از برنامه های مشابه دیگه هم خبر دارین بگین تا از همین الان براش یه فکری بکنیم. این روش که گفتم هم خب کار میده. تا زمانی که گوشی روت باشه برناممون باز نمیشه. برنامه هم برای اجرا نیاز به دسترسی روت داره. اگه چند نفر نتونن از برنامه استفاده کنن بهتر از این هست که عده ای بخوان زرنگی کنن.
به هر حال اگه کسی روش بهتری پیدا کرد بگه و همون طور که گفتم گوشی روت شده کلا به ضرر ماست.
تصور من این بود که فقط یه رشته رو میدیم به سرور بعدش پس میگیریم، بعد اتمام کار رشته دود میشه میره، نگهداریه اینم خودش داستانیه :|
من به عنوان یک کاربر روت بودن گوشیم رو به خرید یه برنامه ترجیح میدم، مزایای روت بودن فراتر از کرک کردن برنامه های خارجی و داخلی هست، نمیشه گذشت ازش :قلب:.
طبق گفته بازار :
"اگر پردازش امنیتی را به سرور خود منتقل کردید، مطمئن شوید که ارتباط بین دستگاه و سرور شما امن است."
خب این هم یک سر نخ از بازار. شاید به درد کسی بخوره.
بازار برا چنین موقع هایی کم نمی یاره یه کپی پیست میزنه میفرسته میاد
حالا ربات میفرسته یا ادمین من کاری بهش ندارم
بنظر شما سمت سرور چه جوری کد میزنن ....
دوستان خواهشن یه راه اساسی پیشنهاد بدین
من به مرگ گرفتم که به تب راضی بشید :لبخند:
البته برای موارد که مصرفی نیستن که کلا باید اون رشته ارسالی رو ذخیره کرد حالا میخواد داخل گوشی باشه یا داخل سرور. اما برای موارد مصرفی رشته به قول خودمون دودش دادی دادی چیزی خاصی نیست.:چشمک:
میشه این کار داخل خود برنامه انجام داد. خود برنامه یک رشته ای رو درست می کنه می فرسته و بعد از دریافت مطابقت رو انجام میده.
اما اگر برای موارد که مصرفی نیستن اون رشته رو دودش بدی یک مشکلی پیش میاد اونم اینکه در صورتی که کاربران غیر مخرب:بامزه: برنامه رو از گوشیشون پاک کردن دوباره خواستن نصب کنن حتما یک نظر به این مضمون ها "نامرد دز.. فلان فلان .. برنامه قبلا فعال کرده بودم اما الان فعال نمیشه یک ستاره هم زیادته!!" در مدت زمان کوتاهی برای برنامه میاد.
public String MySigCheck(Context context) {
String sigChk = "";
Signature[] signature = new Signature[0];
try {
signature = context.getPackageManager().getPackageInfo(context .getPackageName(), PackageManager.GET_SIGNATURES).signatures;
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
sigChk = String.valueOf(signature[0].hashCode());
return sigChk;
}
و در اکتیویتی اصلی:
if (MySigCheck(getApplicationContext()) != "18976453"){
Toast.makeText(getApplicationContext(), "لطفا از نسخه اصلی برنامه استفاده کنید.", Toast.LENGTH_SHORT).show();
finish();
}
که عدد 18976453 امضای برنامه من هست.
سلام سعید جان
ممکنه بگویید که این تابع رو کجا باید اضافه کنیم
این تابع بصورت خودکار صدا زده میشه ؟؟؟
یا نه ما باید فراخوانیش کنیم ...
ممنون
به نظرم این کارشون خیلی هم خوبه چون الان من مشکلاتی که برام پیش میاد رو میرم تو استک سرچ می کنم و جوابش داخل کدهام کارسازه ولی اگه کدهاشون فرق داشت اونوقت باید مدام میل می دادم به بازار و منتظر پاسخشون می موندم . حالا اینکه چقدر پاسخ هاشون منطقی باشه بماند ( اگه مثل بعضیا باشه که ایمیل ها رو یکی چک میکنه برنامه رو یکی دیگه مینویسه :|)
دوستان عزیز آخرش چیکار کنیم
یعنی راهی برا این بهران سراغ ندارید
سعید جان اون تابع رو چه جوری و در کجا باید استفاده کنیم
سعید جان یه سوال دیگه
اگر تابع رو در اکتیویتی دوم بنویسیم
دستور if رو باید در اکتیویتی اول یا همون mainActivity در زیر تابع onCreate بنویسیم درسته ؟؟!!
یه دنیا ممنون
ده روزی میشه که متوجه این جریان شدم و چند تا از برنامه ها رو دانلود کردم به قصد ارتقاء و دیدن امکاناتشون و اینکه همشون آیا آسیب پذیرن یا نه، بعد هم پاک کردم،
همون موقع به بازار جون هم خبر دادم، من اینطوری :متعجب: خبر دادم بازار هم اینطوری :لبخندساده: جواب داد.
وگرنه بخوام به قصد استفاده دائمی از برنامه ها این کار رو بکنم اصلا حس خوبی ندارم ...
یعنی این راه هم جوابگو نیست
ای واااااااااااایییییییییی
خدابخیرش کنه
دوستان راهی به ذهنتون خطور نکرد
سعید جان شما مطمئنی این جواب میده
*********************************
root جان الان بنظرت باید چیکار کنیم
والا من هیچ کاری نمیکنم . فقط Lucky Patcher (لعنت الله علیه) رو نصب میکنم بعد روی برنامه کلیک میکنم بعد launch app رو میزنم و هیچ چیز رو پچ نمیکنم .. می افتم به جون برنامه ها بجز چندتا برنامه استخون دار مثل وایبر مابقی همه پرداخت درون برنامه فاتحه مع صلوات میشه!
تاحالا 10 - 15 تا برنامه سکه فروشی خدمات فروشی همه رو چه خارجی چه داخلی دور زده! فعلا در حال پیدا کردن راهم . این راه شما کاربردی لااقل برای من نداره
سعید جان این قسمت رو که تو کلاس اصلی می نویسم میگه نمیشناسدش
if (MySigCheck(getApplicationContext()) != "18976453"){ Toast.makeText(getApplicationContext(), "لطفا از نسخه اصلی برنامه استفاده کنید.", Toast.LENGTH_SHORT).show(); finish();}
اومدم یه شی از کلاس دوم ساختم و بهش دسترسی پیدا کردم حالا بازم میگه تابع مورد نظر رو بساز حتی مقدار برگشتی رو هم تو یه String ریختم بازم میگه تابع رو بساز
سعید جان یه سوال دیگه
در کل کار این تابع چی هست
من به برنامم اضافش کردم سریع برنامه رو بست
خب معلومه مقدار برگشتی نامساوی با رشته ی ماست
این حالا چه جوری می خواد جلوی برنامه رو بگیره
خواهشن اگه ممکنه یکم واضح تر توضیح بده
بازم ممنون بخاطر لطفت
ببین. من lucky patcher رو اجرا می کنم، لیست برنامه های نصب شده رو نشون میده، روی برنامه خودم کلیک می کنم، یه چیزی باز میشه که گزینه های مختلفی داره. اگه launch app رو بزنم، برنامه ام اجرا میشه ولی نمیتونه پرداخت برنامه رو دور بزنه. فقط وقتی که Open Menu Of Patches رو میزنم، برنامه رو پچ می کنه و فایل apkk شو میسازه و باید قبلی (نسخه اصلی) رو پاک کنم و اینو نصب کنم تا موقع پرداخت درون برنامه ای بتونه دورش بزنه که اینم با همون چک کردن امضا حل میشه.
نمیدونم چرا برای شما اینطوری نیست!!
کد رو کامل بذار، نمیدونم چکار کردی
عزیز من چرا درست دقت نمی کنی به پستها، من که همون وقت گفتم که اون عدد امضای برنامه منه، خب امضای برنامه شما فرق می کنه دیگهنقل قول:
خب معلومه مقدار برگشتی نامساوی با رشته ی ماست
این حالا چه جوری می خواد جلوی برنامه رو بگیره
حل این مشکل چندان هم پیچیده نیست! شما برای اینکه امکان پرداخت درون برنامه ای داشته باشید قطعا برنامتون دسترسی اینترنت داره پس بجای اینکه کل مراحل پرداخت رو از طریق برنامه اندرویدیتون انجام بدید، باید مراحل پرداخت رو از طریق سرور های خودتون انجام بدید. یعنی اینکه به جای اینکه برنامه شما به سرور بازار وصل بشه و پرداخت کنه، باید برنامتون به سرور خودتون وصل بشه و سرور شما با بازار ارتباط برقرار کنه و جواب رو به برنامه شما منتقل کنه و مراحل پرداخت رو انجام بدید. وقتی این اتفاق افتاد، سرور شما میدونه که کدوم کاربر واقعا پرداخت رو انجام داده. بعد از این تنها کاری که لازمه انجام بدید اینه که در بازه های زمانی مختلف یه ارتباط کوچیک از برنامه اندرویدی به سرورتون داشته باشید و با ارسال شناسه کاربری به سرور چک کنید ببینید کاربر پرداخت کرده یا نه. پس اگر کاربر برنامه رو کرک کرده باشه توی سرور شما براش پرداختی ثبت نشده و در اولین ارتباطی که با سرور برقرار میشه مشخص میشه برنامه کرک شده و میتونید ورودش به برنامه رو جلوگیری کنید.
حالا اگر نخواید پرداخت ها رو سمت سرور مدیریت کنید، باز هم میشه این مشکل رو حل کرد. کافیه از روشی که بازار توضیح داده، develpoer payload رو تولید کنید و هر زمانی که در برنامه پرداخت انجام شد مقدار payload رو به سرورتون ارسال کنید و ذخیره کنید اونجا.حالا هر موقع که برنامه اجرا میشه چک کنید ببینید که آیا کاربر ارتقا یافته هست یا نه، اگر کاربر ارتقا یافته بود یعنی یا واقعا پرداخت کرده یا اینکه کرک کرده و برنامه به اشتباه فکر میکنه که پرداخت شده. برای اطمینان از این موضوع اون developer payload ای که تولید کردید رو بفرستید به سرور، اگر توی سرور هم همون مقدار برای developer payload وجود داشته باشه برای اون کاربر، یعنی واقعا پرداخت رو انجام داده و در غیر اینصورت یعنی کرک شده و مانع ورود کاربر به برنامه میشید.
پس در نهایت شما باید سرور خودتون رو داشته باشید برای حل این مشکل و صرفا به برنامه کلاینتتون که روی گوشی نصب شده برای مدیریت پرداخت ها اکتفا نکنید.
موفق باشید
Amir Oveisi عزیز،
هاست معمولی جوابگو هست برای این کار؟
سلام Amir Oveisi جان
حقیقتش من نگرفتم
چی رو باید تو سرور بزارم چه جوری بزارم اصلا بازار فقط میدونه یه نوشته رو گپی پیست کنه و بس ......خب الان من چه جوری باید سمت سرور کار کنم
کدوم کد رو باید تو برنامه قرار بدم کدومش رو بزارم تو سرور بعدش چه جوری باید به برنامه بفهمونم که کد کجاست
************************
راستی سعید جان یه سوال کوچیک این امضا رو من کجا باید بیارم منظور شما همون String payload هستش ؟؟؟
بازم ممنون