PDA

View Full Version : افزایش امنیت برنامه های نوشته شده در اندروید (ادامه)



golbafan
سه شنبه 05 اسفند 1393, 09:46 صبح
سلام دوستان عزیز :لبخند:

همونطور که میدونید بخش اول آموزشهای افزایش امنیت در آندروید بسته شد تا ادامه اون در تاپیک جدیدی دنبال بشه...
لینک بخش اول:
http://barnamenevis.org/showthread.php?486821-%D8%A7%D9%81%D8%B2%D8%A7%DB%8C%D8%B4-%D8%A7%D9%85%D9%86%DB%8C%D8%AA-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7%DB%8C-%D9%86%D9%88%D8%B4%D8%AA%D9%87-%D8%B4%D8%AF%D9%87-%D8%AF%D8%B1-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF

در قسمت قبل دو مورد رو آموزش دادم:
1- آموزش قفل پیامکی
2- آموزش افزایش امنیت با پروتک کردن

حالا بقیه آموزشها شامل سه قسمت زیر رو شروع میکنیم...
3- آموزش روشهای امن برای پرداخت درون برنامه
4- آموزش استفاده از ussd
5- آموزش برقراری ارتباط امن با دیتابیس ها

انشاالله که بتونم جهت پیشرفت علمی و مالی دوستان کمکی بکنم :قلب:

golbafan
سه شنبه 05 اسفند 1393, 10:00 صبح
بخش سوم: آموزش روشهای امن برای پرداخت درون برنامه

3-1- با استفاده از وب سرویس
3-2- بدون استفاده از وب سرویس (از داخل نرم افزار)

لینک قسمت اول آموزشها
http://barnamenevis.org/showthread.php?486821-%D8%A7%D9%81%D8%B2%D8%A7%DB%8C%D8%B4-%D8%A7%D9%85%D9%86%DB%8C%D8%AA-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7%DB%8C-%D9%86%D9%88%D8%B4%D8%AA%D9%87-%D8%B4%D8%AF%D9%87-%D8%AF%D8%B1-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF

golbafan
سه شنبه 05 اسفند 1393, 11:16 صبح
همونطور که میدونید خدمات صدور مجوز بازار آندروید (https://translate.googleusercontent.com/translate_c?act=url&depth=1&hl=en&ie=UTF8&prev=_t&rurl=translate.google.com&sl=auto&tl=fa&u=http://developer.android.com/guide/publishing/licensing.html&usg=ALkJrhgO1tBn8PN7rkXpNq9p6UfjsFMH3A) یک ابزار قدرتمند برای حفاظت از برنامه های کاربردی، در برابر استفاده غیر مجازه. و مجوز کتابخانه امنیتی (LVL) یک جزء کلیدی برای این ابزار بشمار میره. توسعه دهندگان نرم افزار می تونند کار هکرها رو در این رابطه کمی سخت تر کنند...

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

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



لینک قسمت اول آموزشها
http://barnamenevis.org/showthread.php?486821-%D8%A7%D9%81%D8%B2%D8%A7%DB%8C%D8%B4-%D8%A7%D9%85%D9%86%DB%8C%D8%AA-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7%DB%8C-%D9%86%D9%88%D8%B4%D8%AA%D9%87-%D8%B4%D8%AF%D9%87-%D8%AF%D8%B1-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF

arash_flag
سه شنبه 05 اسفند 1393, 11:44 صبح
سلام دوست عزیز من یک برنامه میخام بنویسم که با قفل پیامکی کار کنه و بزارمش تو بازار
حالا یکی میاد و نرم افزار رو از بازار میگیره و کدشو میده و یک کد میگیره .
خب حالا اومدیم و apk برنامه رو داد به یکی دیگه و اونم کد رو برام من ارسال کرد حالا من از کجا بفهمم که اون از بازار برنامه رو گرفته ؟

golbafan
جمعه 08 اسفند 1393, 23:30 عصر
سلام دوست عزیز من یک برنامه میخام بنویسم که با قفل پیامکی کار کنه و بزارمش تو بازار
حالا یکی میاد و نرم افزار رو از بازار میگیره و کدشو میده و یک کد میگیره .
خب حالا اومدیم و apk برنامه رو داد به یکی دیگه و اونم کد رو برام من ارسال کرد حالا من از کجا بفهمم که اون از بازار برنامه رو گرفته ؟

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


لینک قسمت اول آموزشها
http://barnamenevis.org/showthread.php?486821-%D8%A7%D9%81%D8%B2%D8%A7%DB%8C%D8%B4-%D8%A7%D9%85%D9%86%DB%8C%D8%AA-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7%DB%8C-%D9%86%D9%88%D8%B4%D8%AA%D9%87-%D8%B4%D8%AF%D9%87-%D8%AF%D8%B1-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF

golbafan
جمعه 08 اسفند 1393, 23:52 عصر
آموزش روشهای امن برای پرداخت درون برنامه (1):

همیشه این یادتون باشه اگر با if/then بخواهید شرط برنامه تون رو چک کنید هکر براحتی میتونه اون رو تغییر داده و گزینه مورد نظر خودشو به برنامه پاس کنه...

راه حل:
ابتدا باید امضای دیجیتال برنامه رو کد کنید:
مثال(دقیقا اینطوری چک نکنید این فقط راهنمایی است):

public void checkSignature(final Context context)
{
try
{
Signature[] signatures = context.getPackageManager().getPackageInfo(context .getPackageName(), PackageManager.GET_SIGNATURES).signatures;

if (signatures[0].toCharsString() != <YOUR CERTIFICATE STRING GOES HERE>)
{
android.os.Process.killProcess(android.os.Process. myPid());
}
}
catch (NameNotFoundException ex)
{
android.os.Process.killProcess(android.os.Process. myPid());
}
}

حالا در حالی که امضای دیجیتال رو بصورت debug ایجاد کردین باید apk نهایی رو بصورت release ایجاد کنید.
همونطور که میدونید همیشه امضای دیجیتال در حالت دیباگ و ریلیز متفاوته! و شما میتونید در هر بار بیلد شدن برنامه اونو جدید ایجاد کنید.
باید امضای دیجیتالتون رو برای خودتون ذخیره کنید:

signatures[0].toCharsString();

اگر این کد رو قبل از چک کردن امضا قرار بدین در حالت دیباگ و برنامه نویسی راحت ترین و نیازی به چک امضا در هر بار نیست:


if ((context.getApplicationContext().getApplicationIn fo().flags &= ApplicationInfo.FLAG_DEBUGGABLE) != 0)
{
return;
}

با چک کردن امضا میتونید از دستکاری شدن فایل اطمینان کسب کنید

esideli
یک شنبه 10 اسفند 1393, 18:14 عصر
golbafan (http://barnamenevis.org/member.php?101169-golbafan) عزیز از اینکه اطلاعاتتون رو در اختیار دیگران میزاید تشکر می کنم. لطفا در رابطه با هر مبحث یک مثال عملی (واقعی) بزنید. لطفا اگه امکان داره در رابطه با مبحث پروتکت کردن کد یه مثال عملی بزنید. همچنین در موضوعات checksum و obfuscate و c++ . حتی در حد سر نخ.

مرسی.

golbafan
یک شنبه 10 اسفند 1393, 19:23 عصر
golbafan (http://barnamenevis.org/member.php?101169-golbafan) عزیز از اینکه اطلاعاتتون رو در اختیار دیگران میزاید تشکر می کنم. لطفا در رابطه با هر مبحث یک مثال عملی (واقعی) بزنید. لطفا اگه امکان داره در رابطه با مبحث پروتکت کردن کد یه مثال عملی بزنید. همچنین در موضوعات checksum و obfuscate و C++‎‎‎‎‎‎‎ . حتی در حد سر نخ.

مرسی.

سلام دوست عزیز
انشاالله ادامه میابد

golbafan
سه شنبه 12 اسفند 1393, 10:16 صبح
آموزش روشهای امن پرداخت درون برنامه (2):

برای تست وجود لوکی پچر قبل از اجرای توابع خودتون میتونید از روش زیر بهره ببرید:

لوکی پچر نمیتونه این کدها رو شناسایی کنه

private boolean checkLuckyPatcher(){
if (packageExists("com.dimonvideo.luckypatcher"))
{
return true;
}
if (packageExists("com.chelpus.lackypatch"))
{
return true;
}
return false;
}

private boolean packageExists(final String packageName)
{
try
{
ApplicationInfo info = this.getPackageManager().getApplicationInfo(packag eName, 0);
if (info == null)
{
return false;
}
return true;
}
catch (Exception ex)
{
}
return false;
}

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

golbafan
سه شنبه 12 اسفند 1393, 10:23 صبح
آموزش روشهای امن پرداخت درون برنامه (3):

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

لینک قسمت اول آموزشها
http://barnamenevis.org/showthread.p...88%DB%8C%D8%AF (http://barnamenevis.org/showthread.php?486821-%D8%A7%D9%81%D8%B2%D8%A7%DB%8C%D8%B4-%D8%A7%D9%85%D9%86%DB%8C%D8%AA-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7%DB%8C-%D9%86%D9%88%D8%B4%D8%AA%D9%87-%D8%B4%D8%AF%D9%87-%D8%AF%D8%B1-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF)


یادتون باشه برنامه هایی مثل لوکیپچر نمیتونن سرور رو (مثلا بازار) کنترل کنند و یا داخل سایر کدهای شما رو تغییر بدن. بلکه اونها با چک کردن پیامهایی که از طرف برنامه شما جهت درخواست تاییدیه به سرور (بازار) ارسال میشه، وسط راه اونها رو میدزدند و خودشون تاییدیه صادر میکنند. بدون این که برنامه شما رو تغییر بدن، از ارسال پیام شما به سرور جهت دریافت تاییدیه جلوگیری میکنند.

golbafan
سه شنبه 12 اسفند 1393, 10:36 صبح
آموزش روشهای امن پرداخت درون برنامه (4):

برخی برنامه های antiLVL (مثل همین لوکی پچر برخی نسخه ها) بجای دزدیدن پیام و تغییر دادن اون میان اجازه میدن که پیام شما به سرور مخابره بشه اما موقع دریافت پیام از سرور اون رو طوری تغییر میدن که برنامه شما رو به اشتباه بیاندازه و برنامه فکر کنه جواب درستی از سرور دریافت کرده.
برای رفع این مشکل کافیه از پروتوکل ssl استفاده کنید تا تمام پیامهای ارسالی و دریافتی شما رمز بشه و فقط برنامه خودتون بدونه چی میفرسته و چی میگیره...

golbafan
سه شنبه 12 اسفند 1393, 10:46 صبح
آموزش روشهای امن پرداخت درون برنامه (5):

استفاده از کلاسهای امنیتی برنامه در dex:
همونطور که قبلا آموزش دادم استفاده از این روش نیز میتونه جلوی کار امثال لوکی پچر رو بگیره. برای این منظور میتونید از ابزار Dalvik استفاده کنید و کلاسهای امنیتی رو بروش دیگری لود کنید:

در لینک زیر نحوه استفاده ذکر شده است:
http://android-developers.blogspot.pt/2011/07/custom-class-loading-in-dalvik.html

مثال عملی:
http://code.google.com/p/android-custom-class-loading-sample/source/browse/trunk/android-custom-class-loading-sample/#android-custom-class-loading-sample%2Fsrc%2Fcom%2Fexample%2Fdex

golbafan
سه شنبه 12 اسفند 1393, 11:08 صبح
سلام دوست من
شما باید برای تولید کد جدید پول بگیرید... حالا چه از بازار گرفته باشه و چه نگرفته باشه. مزیتش اینه که با کپی شدن فایل مدل لایسنس شما بهم نمیخوره و این میتونه باعث گسترش بیشتر برنامه شما از طریق کپی یا بلوتوث بشه


لینک قسمت اول آموزشها
http://barnamenevis.org/showthread.php?486821-%D8%A7%D9%81%D8%B2%D8%A7%DB%8C%D8%B4-%D8%A7%D9%85%D9%86%DB%8C%D8%AA-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7%DB%8C-%D9%86%D9%88%D8%B4%D8%AA%D9%87-%D8%B4%D8%AF%D9%87-%D8%AF%D8%B1-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF

برای انجام پرداخت مشتریان میتونید از همراه پی استفاده کنید. بسیار قابل اطمینانه:
https://hamrahpay.com/

mnakhaeipoor
پنج شنبه 21 اسفند 1393, 06:52 صبح
سلام
چرا دیگه آموزش ها رو ادامه نمیدید؟ :گریه:
ما بهشون نیاز حیاتی داریم...:ناراحت:

golbafan
پنج شنبه 21 اسفند 1393, 08:46 صبح
دیگه دل و دماقی نمونده :لبخندساده:

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

mnakhaeipoor
پنج شنبه 21 اسفند 1393, 11:55 صبح
دیگه دل و دماقی نمونده :لبخندساده:

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

golbafan
پنج شنبه 21 اسفند 1393, 12:41 عصر
منبع انگلیسی زیاد وجود داره
داخل stackoverflow

http://stackoverflow.com/questions/5726167/security-features-in-android (http://stackoverflow.com/questions/tagged/android)
http://developer.android.com/reference/android/accounts/AccountManager.html
http://proguard.sourceforge.net/
http://developer.android.com/google/play/licensing/index.html

ali_fattahi
یک شنبه 16 فروردین 1394, 12:51 عصر
کتابخانه های آماده پرداخت درون برنامه ای همراه پی برای محیط های برنامه نویسی Eclipse و Basic4Android در سایت همراه پی منتشر شده
میتونید از لینک زیر دانلود کنید + اموزش

دانلود و آموزش استفاده از سیستم پرداخت درون برنامه ای همراه پی (https://hamrahpay.com/modules)