ورود

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



golbafan
یک شنبه 03 اسفند 1393, 08:13 صبح
سلام دوستان عزیز

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

برای شروع قصد دارم موارد زیر رو بطور مختصر توضیح بدم:

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

badname
یک شنبه 03 اسفند 1393, 09:23 صبح
ussd رو پایه ام منتظریم :لبخندساده:

golbafan
یک شنبه 03 اسفند 1393, 09:26 صبح
آموزش قفل پیامکی:

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

حالا سودش براش چیه؟؟؟
با اینکار میتونه آمار سایتش یا پیجیش رو بالا ببره و از طریق جذب تبلیغات سود ببره (ساده ترین موضوعی که به ذهنم میرسه اینه)

خب حالا چکار کنیم؟؟؟
یکی از راههای مناسب استفاده از قفل پیامکیه و بطور خلاصه سناریوی زیر براش مطرح هست:

1- بعد از اجرای برنامه باید کد سخت افزار گوشی رو بدست بیارید (مثلا کد IMEI به عنوان قفل)
2- با استفاده از یک الگوی مناسب (باید خودتون طراحی کنید) باید برای این IMEI یک کلید ایجاد کنید

مثال: (از این مثال استفاده نکنید چون خیلی ساده است)
قفل من (IMEI) این هست: 3212354789732151
حالا اگر مثلا دو رقم دو رقم جدا کرده و در 2 ضرب کنم میشه: 6424709417814642102
بنابر این نرم افزار در گوشی مشتری فقط با کد بدست آمده فعال میشه و در گوشیهای دیگه کار نخواهد کرد.
(بهتره از روشهای encryption برای تولید کلید استفاده بشه)

حالا کافیه نرم افزار شما بعد از اجرا در موبایل مشتری ، کد imei ایشون رو به سایت شما برای دریافت کلید ارجاع بده و شما وجه خودتون رو دریافت کنید


دریافت کد یونیک از دیوایس آندروید:

TelephonyManager tManager = (TelephonyManager)myActivity.getSystemService(Cont ext.TELEPHONY_SERVICE);
String uid = tManager.getDeviceId();

ali_khodayar
یک شنبه 03 اسفند 1393, 09:38 صبح
توی این روش راهی برای پچ کردن برنامه نیست ؟ اگر ما الگوریتم رو یه الگوریتم سخت انتخاب کنیم احتمالش هست بشه کد رو بدست آورد؟

golbafan
یک شنبه 03 اسفند 1393, 09:44 صبح
توی این روش راهی برای پچ کردن برنامه نیست ؟ اگر ما الگوریتم رو یه الگوریتم سخت انتخاب کنیم احتمالش هست بشه کد رو بدست آورد؟

هر قفلی در این دنیا قابل گشودنه ولی این دلیل نمیشه که از قفل ها استفاده نشه
برای تامین امنیت باید از چند روش بطور ترکیبی استفاده بشه
مثلا باید چک کنید آیا checksum فایل شما تغییر کرده یا نه (اگر پچ بشه حتما تغییر میکنه)

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

golbafan
یک شنبه 03 اسفند 1393, 09:55 صبح
سایت زیر از روشی مشابه اولین روشی که دارم توضیح میدم (قفل تلفنی) استفاده میکنه برای نرم افزار موبایل:
البته خودتون میتونید بنویسید و از ایشون نخرید

http://soraco.co/QuickLicenseManager/Android.aspx?gclid=CJqfhMv-9MMCFQmDfgodTAIADQ

http://soraco.co/portals/1/images/QLMAndroidActivation.png

ali_khodayar
یک شنبه 03 اسفند 1393, 10:21 صبح
بجای IMEI میشه از android_ID استفاده کرد؟ فرقشون چیه؟ من رویه یه برنامه دارم کار میکنم که امنیتش با همین روش قفل پیامکی کار شده اما بجای IMEI از Android_ID استفاده کرده.
به اینصورت
final String android_id = Secure.getString( getBaseContext().getContentResolver(),
Secure.ANDROID_ID);

golbafan
یک شنبه 03 اسفند 1393, 10:25 صبح
بجای IMEI میشه از android_ID استفاده کرد؟ فرقشون چیه؟ من رویه یه برنامه دارم کار میکنم که امنیتش با همین روش قفل پیامکی کار شده اما بجای IMEI از Android_ID استفاده کرده.
به اینصورت
final String android_id = Secure.getString( getBaseContext().getContentResolver(),
Secure.ANDROID_ID);


مهم اینه که خروجی یک کد یونیک به ازای هر دیوایس داشته باشید
با آپدیت کردن android تون کد مورد نظر شما تغییر میکنه ولی imei مربوط به سخت افزاره (سخت افزار تماس تلفنی) و تغییر نمیکنه

ali_khodayar
یک شنبه 03 اسفند 1393, 10:52 صبح
مهم اینه که خروجی یک کد یونیک به ازای هر دیوایس داشته باشید
با آپدیت کردن android تون کد مورد نظر شما تغییر میکنه ولی imei مربوط به سخت افزاره (سخت افزار تماس تلفنی) و تغییر نمیکنه
مرسی عالی بود.
ممنون از اطلاعاتی که در اختیار ما قرار میدید.
منتظر بقیه آموزش ها هستیم. :لبخندساده:
اگر میشه در آخر آموزش حفاظت از بانک اطلاعاتی برنامه رو هم اضافه کنید.

doost_fu
یک شنبه 03 اسفند 1393, 10:55 صبح
میگم شما برای مورد سوم اموزشتون :
3- آموزش روشهای امن برای پرداخت درون برنامه
راهکاری برا مقابله با lucky patcher ندارید که نیازی به استفاده از سرور نداشته باشه ؟

با تشکر

mnakhaeipoor
یک شنبه 03 اسفند 1393, 12:20 عصر
سایت زیر از روشی مشابه اولین روشی که دارم توضیح میدم (قفل تلفنی) استفاده میکنه برای نرم افزار موبایل:
البته خودتون میتونید بنویسید و از ایشون نخرید

http://soraco.co/QuickLicenseManager/Android.aspx?gclid=CJqfhMv-9MMCFQmDfgodTAIADQ

http://soraco.co/portals/1/images/QLMAndroidActivation.png
بعد از اینکه imel رو به سرور pass کردیم چجوری باید تو سرور اعتبارسنجی کنیم؟
چجوری امنیت سرورش رو تامین کنیم؟؟

dasssnj
یک شنبه 03 اسفند 1393, 14:05 عصر
تا به حال دیدید که یه ماشین چطوری یه سره میشه ؟؟ قسمت چک کردن درستی سوییچ حذف میشه و دو سر سیم ها به هم وصل میشه .
حالا کافیه قسمت مربوط به چک کردن صحت برنامه حذف بشه یا دستکاری بشه . شما هر چی بیای الگوریتم کد گزاری و روش های مختلف پیاده سازی کنی هیچ فرقی نداره.
تا وقتی از کدی که نوشتی نتونی محافظت کنی کدت نمی تونه از برنامت محافظت کنه

پس اولویت امنیت باید محافظت از کد ها باشه نه پیاده کردن روش های مختلف اعتبار سنجی

mnakhaeipoor
یک شنبه 03 اسفند 1393, 14:19 عصر
تا به حال دیدید که یه ماشین چطوری یه سره میشه ؟؟ قسمت چک کردن درستی سوییچ حذف میشه و دو سر سیم ها به هم وصل میشه .
حالا کافیه قسمت مربوط به چک کردن صحت برنامه حذف بشه یا دستکاری بشه . شما هر چی بیای الگوریتم کد گزاری و روش های مختلف پیاده سازی کنی هیچ فرقی نداره.
تا وقتی از کدی که نوشتی نتونی محافظت کنی کدت نمی تونه از برنامت محافظت کنه

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

sds1920
یک شنبه 03 اسفند 1393, 14:31 عصر
تا به حال دیدید که یه ماشین چطوری یه سره میشه ؟؟ قسمت چک کردن درستی سوییچ حذف میشه و دو سر سیم ها به هم وصل میشه .
حالا کافیه قسمت مربوط به چک کردن صحت برنامه حذف بشه یا دستکاری بشه . شما هر چی بیای الگوریتم کد گزاری و روش های مختلف پیاده سازی کنی هیچ فرقی نداره.
تا وقتی از کدی که نوشتی نتونی محافظت کنی کدت نمی تونه از برنامت محافظت کنه

پس اولویت امنیت باید محافظت از کد ها باشه نه پیاده کردن روش های مختلف اعتبار سنجی

منم همین نظر رو دارم. چون هر چقدر هم پیچ و تابش بدی بازم وقتی بشه کد برنامه رو به دست اورد انگار هیچ کاری نکردی. همونطور که همه دوستان مطلع هستن به راحتی و در عرض 30 ثانیه می شه تمام کد های یک apk رو به دست اورد. بخاطر عمومی بودن تاپیک اسم برنامه رو نمی گم ولی بهتون اطمینان میدم که امکان پذیره. پس رمز نگاری خوب هست ولی برای کاربرای عادی. برای کسی که این ترفندها رو بدونه چندان تاثیری نداره.
من یه برنامه رو کدهاش رو باز کردم و دیدم.از روش خوبی استفاده کرده بود.به جای اینکه برای اسم پکیج ها و کلاس ها و متد ها و متغییر ها و ... از مقادیر با معنی استفاده کنه از حرف a , b , c و.... استفاده کرده بود. اینطوری فهمیدن اینکه مثلا کلاس aa مربوط یه چی هست یا متغیر b مال چه کاریه کار بسیار مشکلی بود.
این چیزی بود که من می دونستم. از دوستان هر کسی نظری دیگه داره بذاره تا همه که یک درد مشترک داریم استفاده کنیم.

storm_saeed
یک شنبه 03 اسفند 1393, 14:45 عصر
منم همین نظر رو دارم. چون هر چقدر هم پیچ و تابش بدی بازم وقتی بشه کد برنامه رو به دست اورد انگار هیچ کاری نکردی. همونطور که همه دوستان مطلع هستن به راحتی و در عرض 30 ثانیه می شه تمام کد های یک apk رو به دست اورد. بخاطر عمومی بودن تاپیک اسم برنامه رو نمی گم ولی بهتون اطمینان میدم که امکان پذیره. پس رمز نگاری خوب هست ولی برای کاربرای عادی. برای کسی که این ترفندها رو بدونه چندان تاثیری نداره.
من یه برنامه رو کدهاش رو باز کردم و دیدم.از روش خوبی استفاده کرده بود.به جای اینکه برای اسم پکیج ها و کلاس ها و متد ها و متغییر ها و ... از مقادیر با معنی استفاده کنه از حرف a , b , c و.... استفاده کرده بود. اینطوری فهمیدن اینکه مثلا کلاس aa مربوط یه چی هست یا متغیر b مال چه کاریه کار بسیار مشکلی بود.
این چیزی بود که من می دونستم. از دوستان هر کسی نظری دیگه داره بذاره تا همه که یک درد مشترک داریم استفاده کنیم.
a,b,c... کردن رو بهش میگن obfuscate کردن کد .نودونه درصد برنامه ها(غیر ایرانی) obfuscate میکنن . کلا با جاوا خیلی نمیشه رو بخش امنیت مانور داد (شدنش میشه ها ولی سخته ) بهترین کار اینکه این بخش های امنیتی برنامه رو native زد مثلا اگه قراره کدهاتون رو با الگوریتمی رمز نگاری کرد خوبه یه بخش هاییش رو با cpp زد که کسی نفهمه

ali_khodayar
یک شنبه 03 اسفند 1393, 14:51 عصر
a,b,c... کردن رو بهش میگن obfuscate کردن کد .نودونه درصد برنامه ها(غیر ایرانی) obfuscate میکنن . کلا با جاوا خیلی نمیشه رو بخش امنیت مانور داد (شدنش میشه ها ولی سخته ) بهترین کار اینکه این بخش های امنیتی برنامه رو native زد مثلا اگه قراره کدهاتون رو با الگوریتمی رمز نگاری کرد خوبه یه بخش هاییش رو با cpp زد که کسی نفهمه

چطوری میشه یه قسمت از برنامه و یا کد برنامه را با زبان دیگه ای (مثلأ همین C++ ) که شما گفتید نوشت؟؟ لطفأ توضیح بیشتر بدید. ممنون

dasssnj
یک شنبه 03 اسفند 1393, 14:55 عصر
آی رئیس خدا از دهنت بشنوه که گل گفتی:تشویق:
خب .... ما خیلی ممنون میشیم یا خودتون بهمون یاد بدید چطوری از کدهامون محافظت کنیم یا چند لینک / ویدیو آموزشی برا این کارا بهمون معرفی کنید:چشمک:

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

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

در کل هزار تا راه نرفته را باید رفت ، هزار فکر خلاقانه باید کرد و هزار نوع سختی باید کشید با یه توضیح یا یه فیلم آموزشی هیچ کاری نمیشه کرد .

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

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

ضمنا فیلم آموشی و یا هیچ آموزشی برای این موضوع من ندیدم و به نظرم وجود نداره

(از کمک دوستانم در انجمن بابت راهنمایی من در زمینه ی امنیت ممنونم)

dasssnj
یک شنبه 03 اسفند 1393, 15:11 عصر
واقعا چیزایی که به هکر قوت قلب میده اینه که برنامه نویس :

1 - اصلا امنیت را د نظر نگیره .
2 - از روش هاس ساده ی امنیت استفاده کنه .
3 - فکر کنه با proguard همه ی مشکلات حله . (بعضی اوقات پروگارد در هک کمک هم می کنه)
4 - به جای محافظت از کد روش های پیچیده ی اعتبار سنجی بنویسه .
5 - پس از ساخت برنامه اونو از لحاظ امنیت تست نکنه .
6 - فقط از جاوا استفاده کنه و سی ++ را بلد نباشه یا استفاده نکنه .
7 - فکر کنه برنامه اش قرار نیست هک بشه .
8 - و خیییییییییلیییییییی چیزای دیگه ...

golbafan
یک شنبه 03 اسفند 1393, 15:26 عصر
سلام مجدد
همونطور که از پست های دوستان متوجه شدید اعتبارسنجی نمیتونه بتنهایی مشکل امنیت رو حل کنه و باید نرم افزار پروتکت بشه
پس باید بریم سراغ بخش دوم آموزشها که پروتکت کردن بود
اما قبلش خوبه نکات زیر رو در مورد اعتبار سنجی بگم
۰- پست ۵ رو یک بار دیگه بخونید
۱- هرگز به دستور if اکتفا نکنید
۲- از کد کردن متن استفاده کنید
۳- دیتابیس کد گذاری بشه
۴- بهترین راه اینه که از روش محاسبه اختلاف استفاده کنید
مثال:فرض کنید در قفل پیامکی باید مشتری کد ۱۲۳رو دریافت و استفاده کنه
حالا با هک کردن برنامه و برداشتن دستور اعتبار سنجی میتونه با هر کد دیگه ای غیر۱۲۳ وارد بشه
شما باید همیشه کد مشتری رو در توابعتون از کد درست کم کنید و اختلاف رو در محاسبات برنامه دخیل کنید

dasssnj
یک شنبه 03 اسفند 1393, 15:38 عصر
حالا با هک کردن برنامه و برداشتن دستور اعتبار سنجی میتونه با هر کد دیگه ای غیر۱۲۳ وارد بشه
شما باید همیشه کد مشتری رو در توابعتون از کد درست کم کنید و اختلاف رو در محاسبات برنامه دخیل کنید

تاثیر چندانی نداره . برنامه دیکامپایل میشه همه چی لو میره

mnakhaeipoor
یک شنبه 03 اسفند 1393, 16:39 عصر
ضمنا فیلم آموشی و یا هیچ آموزشی برای این موضوع من ندیدم و به نظرم وجود نداره
شما خودتون چجوری اینا رو یاد گرفتید؟
بالاخره باید یه منبعی برا یادگیری بوده باشه:متفکر:

dasssnj
یک شنبه 03 اسفند 1393, 17:08 عصر
شما خودتون چجوری اینا رو یاد گرفتید؟
بالاخره باید یه منبعی برا یادگیری بوده باشه:متفکر:

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

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

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

(راستی پست تون مشکل داره انگار)

golbafan
یک شنبه 03 اسفند 1393, 17:48 عصر
منبع واحدی به هیچ عنوان وجود نداره .(بهترین منبع اینترنته) . بلکه باید تحقیق بشه ، پرس و جو بشه ، تمرین بشه ، آزمون و خطا بشه ، براش وقت گذاشته بشه . من هم همه ی اینها را یهویی یاد نگرفتم بلکه دو سال وقت صرف کردم.
در مورد هک و کرک هم که اصلا نمیشه حرف زد . انجمن قانون داره و هم اینکه ممکنه خیلی استفاده های نادرست ازش بشه . تا همین جا هم که توضیح دادم خودش خیلیه و نباید می گفتم اما دیدم این چند وقته خیلی بچه های انجمن از نظر امنیت مشکل دارن خواستم کمک کنم


واقعا ممنونم خیلی راههای خوبی یاد دادید برای امنیت !!!
من واقعا نمیدونم چرا بعضی ها از ایجاد تاپیکی برای بهبود امنیت نرم افزارهای اندروید ناراضی هستند !!!
باشه بنده دیگه ادامه نمیدم آقای dasssnj محترم (نیازی نیست پیغام خصوصی بدید)
شما صراحتا گفتید که از ایجاد این تاپیک رضایت ندارید (رای دادید)
امیدوارم از قدرت تون برای حذف این پست استفاده نکنید

golbafan
یک شنبه 03 اسفند 1393, 17:52 عصر
تا به حال دیدید که یه ماشین چطوری یه سره میشه ؟؟ قسمت چک کردن درستی سوییچ حذف میشه و دو سر سیم ها به هم وصل میشه .
حالا کافیه قسمت مربوط به چک کردن صحت برنامه حذف بشه یا دستکاری بشه . شما هر چی بیای الگوریتم کد گزاری و روش های مختلف پیاده سازی کنی هیچ فرقی نداره.
تا وقتی از کدی که نوشتی نتونی محافظت کنی کدت نمی تونه از برنامت محافظت کنه

پس اولویت امنیت باید محافظت از کد ها باشه نه پیاده کردن روش های مختلف اعتبار سنجی

دوست عزیز اگر کمی دندان روی جگر میگذاشتید قسمت دوم اموزشها برای پروتکت کردن بود...

dasssnj
یک شنبه 03 اسفند 1393, 18:13 عصر
واقعا ممنونم خیلی راههای خوبی یاد دادید برای امنیت !!!
من واقعا نمیدونم چرا بعضی ها از ایجاد تاپیکی برای بهبود امنیت نرم افزارهای اندروید ناراضی هستند !!!
باشه بنده دیگه ادامه نمیدم آقای dasssnj محترم (نیازی نیست پیغام خصوصی بدید)
شما صراحتا گفتید که از ایجاد این تاپیک رضایت ندارید (رای دادید)
امیدوارم از قدرت تون برای حذف این پست استفاده نکنید

من مدیر بخش جاوا هستم و هیچ دسترسی ای به بخش اندروید ندارم .
هیچ پیام خصوصی ای به کسی نداده و نمیدم .

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

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

از کجا معلوم این چیز ها را به مردم یاد ندید که فردا خودتون بتونید راحت هکش کنید ؟ من خودم این دوره ها را گذروندم دوست عزیز !!!

ضمنا !!! بیاید یاد بگیریم به نظر بقیه احترام بزاریم . (و یه کم با ملایمت حرف بزنیم)

dasssnj
یک شنبه 03 اسفند 1393, 18:27 عصر
در ضمن ، شما با گذاشتن پست های اسپم توی تاپیک خودتون باعث حذف شدنش میشید . فردا اگه مدیر بخش اندروید حذفش کردن گردن من نذارید


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

arash_flag
یک شنبه 03 اسفند 1393, 18:34 عصر
واقعا که خیلی زشت مدیر جاوا وای وای وای :متفکر:
بزار دوستمون انگیزه داشته باش تو دوره هاشو رفتی ما نرفتیم/

dasssnj
یک شنبه 03 اسفند 1393, 18:44 عصر
واقعا که خیلی زشت مدیر جاوا وای وای وای :متفکر:
بزار دوستمون انگیزه داشته باش تو دوره هاشو رفتی ما نرفتیم/

هی می خوام اسپم نزنم خودتون نمی زارید . کار شما هم زشته اسپم میدی .

من حالا میگم هیچ دوره و اینایی نیست شما هی بگید دوره دیدی و .... .
من میترسیدم سرنوشت این تاپیک هم مثل اون تاپیک lucky patcher بشه . اون اطلاعات برای یه هکر می دونید مثل چیه ؟ یه معدن طلا !! :قهقهه:

حالا خودتون می دونید اما به نظرم این کارا هیچ نتیجه ای نداشته باشه (از این جور تاپیک ها زیاد زده شده و نتیجه هم نداده) . برای همین رای دادم .

جای اینکه بشینیم یکی برامون توی یه جای عمومی توضیح بده که چجوری جلوی هک را بگیریم (!!!) اگه خودمون پی گیر شده بودیم تا حالا دوره ی همه ی اینا را رد کرده بودیم

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

arash_flag
یک شنبه 03 اسفند 1393, 19:10 عصر
حاجی ولش کن این حرفا رو من چطوری اندروید استدیو رو نصب کنم ؟

golbafan
یک شنبه 03 اسفند 1393, 19:35 عصر
زکات علم نشر آن است ولی هک کردن علم نیست...

Delphi XE7 and C++‎‎‎‎‎‎‎Builder XE7 powered by firemonkey

dasssnj
یک شنبه 03 اسفند 1393, 20:00 عصر
زکات علم نشر آن است ولی هک کردن علم نیست (وسیله ای برای دزدی است)

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

اون زبانها هم یه محدودیت بر می دارند اما صد تا محدودیت اضافه می کنند

doost_fu
یک شنبه 03 اسفند 1393, 20:06 عصر
بابا کوتاه بیاید دیگه
شما اموزش تو بده هر کی ازش سو استفاده کرد گردن خودش هر کی هم درست استفاده کرد دعات میکنه
نمیشه که بگیم دیگه کسی چاقو نسازه چون میشه باهاش ادم کشت ! خوب همون چاقو دست یه جراح هم می افته ...
اصول کارو بگید

badname
یک شنبه 03 اسفند 1393, 20:13 عصر
زکات علم نشر آن است ولی هک کردن علم نیست (وسیله ای برای دزدی است)

(آخرین مطلب من در تالار آندروید: میتونید با زبانهای دیگری غیر از جاوا برنامه اندرویدتون رو بنویسید تا براحتی هک نشه)

زبانهایی چون دلفی و C++‎‎‎‎‎‎‎‎ builder

Delphi XE7 and C++‎‎‎‎‎Builder XE7 powered by firemonkey
نه داداش دزدی نیست اتفاقا خیلی ام مفیده ، هفته پیش دانشگاه شریف برای هکر ها مسابقات برگزار کرد ! فکر نمیکنم مسابقات دزدی بوده باشه ، مسابقه بالا بردن امنیت بود !

golbafan
یک شنبه 03 اسفند 1393, 20:31 عصر
نگفتم هک دزدیه گفتم وسیله ای برای دزدیه
اگر هک وجود نداشت نرم افزارها و برنامه نویسان امنیت شغلی بیشتری داشتند

حالا چه سفید و چه سیاه

هکر های کلاه سفید هم همیشه خیر خواه شما نیستند و یه روزی سیاه بودند...

درضمن آقای dasssnj عزیز، من فکر نمیکنم تجربم در زمینه برنامه نویسی کمتر از شما باشه ...
فکر کنم به اندازه سن شما برنامه نویس بودم!!!
وقت کردی یک سری به سایت من یزن

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

golbafan
یک شنبه 03 اسفند 1393, 20:46 عصر
بابا کوتاه بیاید دیگه
شما اموزش تو بده هر کی ازش سو استفاده کرد گردن خودش هر کی هم درست استفاده کرد دعات میکنه
نمیشه که بگیم دیگه کسی چاقو نسازه چون میشه باهاش ادم کشت ! خوب همون چاقو دست یه جراح هم می افته ...
اصول کارو بگید

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

doost_fu
یک شنبه 03 اسفند 1393, 20:56 عصر
دوست عزیز ، آموزشهای من در رابطه با هک نبود بلکه روشهای ایجاد امنیت بیشتر بود !!!
منم همینو می خوام دیگه ایجاد امنیت
ولی دوستان گفتند وقتی شما راههای ایجاد امنیت اموزش بدید یه عده سو استفاده کننده از اونا برعکس استفاده میکنند و برنامه مارو کرک می کنند
سو تفاهم نشه ...
منم گفتم لااقل اصول ایجاد امنیت بگید دیگه ریز کاریاشو از این ور اون ور جمع میکنیم
موفق باشید

mostafi1391
یک شنبه 03 اسفند 1393, 21:20 عصر
دوستان مدیران ارشد بیان تاپیک جمع کنن مارو باش که هر روز اینجا سر میزنیم نگو که همه با همه مشکل دارن

dasssnj
یک شنبه 03 اسفند 1393, 21:21 عصر
نگفتم هک دزدیه گفتم وسیله ای برای دزدیه
اگر هک وجود نداشت نرم افزارها و برنامه نویسان امنیت شغلی بیشتری داشتند

حالا چه سفید و چه سیاه

هکر های کلاه سفید هم همیشه خیر خواه شما نیستند و یه روزی سیاه بودند...

درضمن آقای dasssnj عزیز، من فکر نمیکنم تجربم در زمینه برنامه نویسی کمتر از شما باشه ...
فکر کنم به اندازه سن شما برنامه نویس بودم!!!
وقت کردی یک سری به سایت من یزن

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

من نگفتم سفیدم !!! در خاکستری بودنم شکی ندارم . به اندازه ی ده برابر سن شما هم برنامه هک کردم (خیلی هاش مال شرکت های بزرگ و یا افراد بزرگ و یا معروف بودند : پروژه بزرگ jre4a از شرکت apogee . بازی hill climb racing . برنامه ی فرهنگ شیعه از poorman به درخواست خود بزرگوارشان . برنامه ی کیف پول محک و .... . نمی خواستم بگم دیدم شما اینجوری رفتار می کنی مجبور شدم)

یه سوال : شما فکر می کنی اندازه فونتت را بزرگ تر کنی صدات بلند تره ؟؟؟؟ :قهقهه::قهقهه: (با این مورد زیاد رو به رو شدم:قهقهه:)

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

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

==> (من حتی اگه چاقو هم بسازم بدون تحقیق به کسی نمی فروشمش)

mnakhaeipoor
یک شنبه 03 اسفند 1393, 21:35 عصر
زکات علم نشر آن است ولی هک کردن علم نیست (وسیله ای برای دزدی است)

(آخرین مطلب من در تالار آندروید: میتونید با زبانهای دیگری غیر از جاوا برنامه اندرویدتون رو بنویسید تا براحتی هک نشه)

زبانهایی چون دلفی و C++‎‎‎‎‎‎‎‎ builder

Delphi XE7 and C++‎‎‎‎‎Builder XE7 powered by firemonkey
ما که تازه گرم شده بودیم داداش:افسرده:
خیلی دوست داشتیم به آموزش ها ادامه میدادید چون من یکی که واقعا دنبالش بودم:گریه:
حالا میشه جهت تکمیل مسئله عرض کنید که چجوری باید برنامه نویسی با c++ برای اندروید رو یاد گرفت و به چه ابزار هایی نیاز هست؟؟
و چه قسمت هایی از اپ رو باید با سی پلاس نوشت و چه قسمت هایی رو با جاوا؟

badname
یک شنبه 03 اسفند 1393, 21:42 عصر
نگفتم هک دزدیه گفتم وسیله ای برای دزدیه
اگر هک وجود نداشت نرم افزارها و برنامه نویسان امنیت شغلی بیشتری داشتند

حالا چه سفید و چه سیاه

هکر های کلاه سفید هم همیشه خیر خواه شما نیستند و یه روزی سیاه بودند...

درضمن آقای dasssnj عزیز، من فکر نمیکنم تجربم در زمینه برنامه نویسی کمتر از شما باشه ...
فکر کنم به اندازه سن شما برنامه نویس بودم!!!
وقت کردی یک سری به سایت من یزن

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


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

dasssnj
یک شنبه 03 اسفند 1393, 21:51 عصر
والا من فقط یه نظر ساده ی منفی به این تاپیک دادم و نظر شخصیمو گفتم که به کسی هم مربوط نمیشه . نمی دونم چرا ایشون این شکلی رفتار کردن . خیلی از تاپیک های من هم رای منفی گرفت ، اما هیچ وقت بی احترامی نکردم . خیلی از دوستان هم از اینکه بهشون رای منفی دادم ناراحت نشدن .

به نظرم بهتر بود گزینه ی " خیر " را کلا نمی گذاشتید .

golbafan
یک شنبه 03 اسفند 1393, 22:27 عصر
من تاپیکو ایجاد کردم و خوب هم جلو میومدم تا اینکه شما اون رو به حاشیه کشیدید...
کو کجاست راهنمایی های شما که این تاپیک رو به گند کشیدی؟؟؟

فقط گفتی نمیشه و نباید و ...
بعد هم گفتی که اومدی کمک بکنی!!!

golbafan
یک شنبه 03 اسفند 1393, 22:36 عصر
انشالله به خیر میگذره

c0mmander
یک شنبه 03 اسفند 1393, 23:42 عصر
من کاری ندارم به چیزیا اما این 5-4 تاپیکی هست که به داره داخل اون به بقیه کاربرا به نحوی توهین میشه . اکثرا ما دانشجو هستیم خیلی ما هم مهندسیشون رو گرفتن و خیلی های دیگمون هم تشکیل خانواده دادن . واقعا بهتره که احترام گذاشتن به هم دیگه وقتی که بخوایم انتقاد کنیم از کسی یا میزان ناراحتیمون رو بیان کنیم یاد بگیرم و کمی آروم تر جواب ها رو بدیم به خدا همون با هم برادر خواهریم چه فرقی داره.

دوست خوبم golbafan (http://barnamenevis.org/member.php?101169-golbafan) شما ادامه بدی خیلی خوبه هر چند که من با مطرح کردن راه های دور زدن برنامه موافق نیستم و داخل نظر سنجی هم نظر منفی دادم به این تاپیک اما دلیلش این نیست که شما متوقف کنم دلیل اینکه فکر میکنم 90 درصد اگر برنامه اسیب پذیر داشته باشیم باز بهتر از اینکه 100 درصد همه با همه چیز آشنا بشن .

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

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

dasssnj
دوشنبه 04 اسفند 1393, 06:17 صبح
من تاپیکو ایجاد کردم و خوب هم جلو میومدم تا اینکه شما اون رو به حاشیه کشیدید...
کو کجاست راهنمایی های شما که این تاپیک رو به گند کشیدی؟؟؟

فقط گفتی نمیشه و نباید و ...
بعد هم گفتی که اومدی کمک بکنی!!!

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

حالا اگه شما و بقیه دوستان مایلید یه تاپیک دیگه باز کنید و هر اموزشی می خواهید بزارید . دیگه نظر سنجی هم براش نگذارید !

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

من قول میدم که دیگه اصلا خوبی کسی را نخوام . خودتون می دونید و بقیه .

خدانگهدار

golbafan
دوشنبه 04 اسفند 1393, 07:54 صبح
دوست خوبم golbafan (http://barnamenevis.org/member.php?101169-golbafan) شما ادامه بدی خیلی خوبه هر چند که من با مطرح کردن راه های دور زدن برنامه موافق نیستم و داخل نظر سنجی هم نظر منفی دادم به این تاپیک اما دلیلش این نیست که شما متوقف کنم دلیل اینکه فکر میکنم 90 درصد اگر برنامه اسیب پذیر داشته باشیم باز بهتر از اینکه 100 درصد همه با همه چیز آشنا بشن .

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


سلام دوست عزیز
لطفا مطالب زیر رو مد نظر قرار بدید:
1- بنده به درخواست دوستان این تاپیک رو برای جلوگیری از همین سو استفاده ها ایجاد کردم و چیزی
در رابطه با دور زدن ننوشتم شاید نوشته های دیگران رو برای من برداشت کردید!!!
http://barnamenevis.org/showthread.php?486728-%D8%A2%D9%BE%D9%84%D9%88%D8%AF-%D8%BA%DB%8C%D8%B1-%D9%82%D8%A7%D9%86%D9%88%D9%86%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7%DB%8C-%D9%81%D8%B1%D9%88%D8%B4%DB%8C-%D8%AF%D8%B1-%D8%B4%D8%A8%DA%A9%D9%87-%D9%87%D8%A7%DB%8C-%D8%A7%D8%AC%D8%AA%D9%85%D8%A7%D8%B9%DB%8C&p=2177946#post2177946

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

3- چه اشکالی داشت دوستمون dasssnj بجای اینکه کلا این روش ها رو زیر سوال ببره بیاد کمک کنه و 4 تا مطلب مفید درباره امنیت بیان کنه؟؟؟ این منو ناراحت کرد و میکنه نه نظر منفی ایشون
اصولا من نظر منفی رو برای این نگذاشتم که بعد ناراحت بشم و ناراحتیم اصلا ربطی به این موضوع نداشت که ایشون تصور کرده... بلکه ناراحتیم از این بود که وقتی عده ای برنامه نویس مثل خودم دارن جوونیشون رو هزینه میکنن و برنامه مینویسن ، یک هکر بیاد و این تاپیک های امنیتی رو به حاشیه میکشه و دوستان رو نا امید میکنه

4- همونطور که میدونید هیچ کدوم ما برای سودجویی اینجا نیومدیم و وقت گذاشتمون برای اینه که سطح علمی کشورمون رو (هرچند اندک) در حد توانمون ارتقائ بدیم. حالا اگر عده ای با بیان نمیشه و نباید و این کارها بالاخره آخرش بیفایده است و بازم میشه دورش زد و ... بیان و برنامه نویس ها رو از یادگیری امنیت نا امید کنن .... فکر میکنید این درسته واقعا؟؟؟

5- اگر امکان داره یکبار دیگه تاپیک رو با این دیدگاه ملاحضه کنید

6- من انشاالله بازهم این تاپیک رو ادامه میدم ولی باور کنید بخاطر پیامهای خصوصی دوستانه که از من خواستند ادامه بدم :قلب:

128775

با تشکر

golbafan
دوشنبه 04 اسفند 1393, 07:56 صبح
(من که هم از نگاه هکر و هم از نگاه برنامه نویس از این تاپیک ها سود می برم اما خواستم به همه یه لطفی کرده باشم . امنیت چیز مهمیه و نمیشه توی کوچه و خیابون ازش حرف زد)


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

golbafan
دوشنبه 04 اسفند 1393, 08:21 صبح
مرسی عالی بود.
ممنون از اطلاعاتی که در اختیار ما قرار میدید.
منتظر بقیه آموزش ها هستیم. :لبخندساده:
اگر میشه در آخر آموزش حفاظت از بانک اطلاعاتی برنامه رو هم اضافه کنید.

سلام دوست عزیز
حتما اضافه میکنم
روشهای انکریپت و هش رو برای دیتابیس sqlite آموزش خواهم داد

بخش پنجم: امنیت دیتابیس

golbafan
دوشنبه 04 اسفند 1393, 08:28 صبح
میگم شما برای مورد سوم اموزشتون :
3- آموزش روشهای امن برای پرداخت درون برنامه
راهکاری برا مقابله با lucky patcher ندارید که نیازی به استفاده از سرور نداشته باشه ؟

با تشکر

سلام برای مقابله با این نرم افزار باید از روش اختلاف کلید استفاده کنید:
فرض کنید من یک برنامه ماشین حساب نوشتم که دو عدد رو جمع میکنه... حالا اگر کلید واقعی (که کاربر باید بخره) رو مثلا 849 فرض کنیم و کلید نرم افزار در حالت فعال نشده 100 باشه پس اختلاف کلیدها میشه 749 و باید در همه توابع حسابش کنید و با ریزالت جمعش کنید بنابراین ماشین حساب درست کار نمیکنه

اما اگر کلید 849 رو بخره اختلاف صفر شده و خطایی نمیده...

برای آشنایی با مقوله کلید پست 2 رو بخونید

esideli
دوشنبه 04 اسفند 1393, 08:51 صبح
سلام،
عزیز لطفا به آموزش هاتون ادامه بدین مخصوصا بحث محافظت از کد، پرداخت درون برنامه ای و محافظت از دیتابیس.
بعضی یا میگن که راه و روشش رو به کسی یاد نده که مبادا یه هکری بیاد سو استفاده کنه. این افراد فقط قسمت خالی لیوان رو میبینن و با خودشون نمی گن که اگه روش های امنیت آموزش داده بشه خود به خود تعداد هکر ها هم کم میشه چون دور زدن امنیت دیگه سخت میشه.

توی تایپیک های php مفصل در مورد امنیت بحث شده از اسکیوال اینجکشن گرفته تا xss و csrf و سرقت سشن و کوکی و کلی موضوع امنیتی دیگه که اگه بخوای همشون رو بخونی باید چند ماه وقت بزاری و کسی هم مخالف نبوده که هیچ، همه موافق بودن و خودم هم کلی از تایپیک های امنیت php استفاده کردم. توی تالار php اصلا یه قسمت برای امنیت گذاشتن:
http://barnamenevis.org/forumdisplay.php?207-%D8%A7%D9%85%D9%86%DB%8C%D8%AA-%D8%AF%D8%B1-PHP

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

golbafan
دوشنبه 04 اسفند 1393, 08:57 صبح
سلام،
عزیز لطفا به آموزش هاتون ادامه بدین مخصوصا بحث محافظت از کد، پرداخت درون برنامه ای و محافظت از دیتابیس.
بعضی یا میگن که راه و روشش رو به کسی یاد نده که مبادا یه هکری بیاد سو استفاده کنه. این افراد فقط قسمت خالی لیوان رو میبینن و با خودشون نمی گن که اگه روش های امنیت آموزش داده بشه خود به خود تعداد هکر ها هم کم میشه چون دور زدن امنیت دیگه سخت میشه.

توی تایپیک های php مفصل در مورد امنیت بحث شده از اسکیوال اینجکشن گرفته تا xss و csrf و سرقت سشن و کوکی و کلی موضوع امنیتی دیگه که اگه بخوای همشون رو بخونی باید چند ماه وقت بزاری و کسی هم مخالف نبوده که هیچ، همه موافق بودن و خودم هم کلی از تایپیک های امنیت php استفاده کردم. توی تالار php اصلا یه قسمت برای امنیت گذاشتن:
http://barnamenevis.org/forumdisplay.php?207-%D8%A7%D9%85%D9%86%DB%8C%D8%AA-%D8%AF%D8%B1-PHP

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

حتما دوست عزیز
انشا الله همه با کمک هم دست افراد سودجو رو کوتاه میکنیم
الان تصمیم دارم سوالات دوستان رو تا اینجا توضیح بدم تا قسمت اول آموزشها جمع بشه بعد بریم سراغ روشهای protection

esideli
دوشنبه 04 اسفند 1393, 09:04 صبح
اگه امکانش هست اول از همه به بحث محافظت از کد (غیر قابل مشاهده کردن) به صورت عملی بپردازین. مخصوصا کدهای خرید و ارتقا.

ali_khodayar
دوشنبه 04 اسفند 1393, 09:23 صبح
مدیر بخش آقای
rubiks.kde (http://barnamenevis.org/member.php?231180-rubiks-kde) لطفآ یه پا درمیونی کنید. اگر این تاپیک به گفته آقای dasssnj منبع طلا هست برای هکر ها پس لطفآ راه های رسیدن به امنیت رو به ما بگید، دیگه رفتنش با خودمون. فقط راه ها و سرفصل ها رو اگه میشه برامون بگید. بعدشم اگر میدونید فعال بودن این تابیک صحیح نیست حذفش کنید.
قبلش لطفأ یه راهی برای کسانی که دنبال بالابردن امنیت برنامشون هستن بگید. که دنبال چه مطالبی بریم و چی مواردی رو یاد بگیریم چه مواردی باید رعایت بشه و ...
با تشکر از همه.
(چرا صورتی شد نمیدونم :متفکر:)

golbafan
دوشنبه 04 اسفند 1393, 09:36 صبح
بخش دوم : امنیت با استفاده از روشهای protection

سلام متاسفانه نرم افزارهای نوشته شده با جاوا با اینکه قابلیت های خوبی دارن اما همانند سایر برنامه های تحت فریم ورک (مثلا net.) مشکلات امنیتی زیادی هم دارند.
از اونجایی که فریم ورک بجای سیستم عامل وظیفه اجرای کدها رو به عهده میگیره بنابراین کدها باید قابل خواندن برای فریم ورک باشه و این باعث میشه برای هکرها هم قابل خواندن باشه!!!
برای همین تنها راه مطمئن اینه که قسمت های امنیتی رو با c++ بنویسید تا از گزند هکرهای اندروید (حداقل) در امان باشه
http://sdtimes.com/google-releases-tools-developing-android-apps-cc/

اما در خود کدنویسی هم میشه کار رو برای هکر ها سخت کنید تا حوصله شون سربره :لبخند:

یکی از بهترین کارهایی که میتونید بکنید استفاده از روش obfuscate کردن است:
معمولا وقتی برنامه مینویسیم طوری متغیرها رو انتخاب میکنیم که برامون قابل فهم باشه و این باعث میشه برای هکرهم همین مساله صدق کنه. این روش با این دید میاد و تمام توابع و متغیرها رو تغییر نام میده مثلا برای توابع از f0001 شروع میکنه تا بالا و برای متغیرها از v0001 به بالا ....
نرم افزارهایی برای obfuscate کردن اتوماتیک وجود داره:
http://proguard.sourceforge.net/#manual/examples.html

ali_khodayar
دوشنبه 04 اسفند 1393, 09:38 صبح
اگر هم اینطور نیست پس لطفأ آقای golbafan به آموزشش ادامه بدن.

golbafan
دوشنبه 04 اسفند 1393, 09:48 صبح
یکی از روشهای خوب پروتکت کردن نرم افزارهای اندروید اینه که بعد از
obfuscate کردن، کلاسهای نوشته شده رو در یک فایل جداگانه قرار بدید و توسط برنامتون اونها رو بطور دینامیک بارگیری کرده و استفاده کنید:
البته باید حتما فایل مورد نظر انکریپت شده باشه و در نرم افزار شما دکریپت بشه

میتونید از ابزارهای dalvik برای این منظور استفاده کنید:
http://www.netmite.com/android/mydroid/dalvik/docs/dexopt.html

golbafan
دوشنبه 04 اسفند 1393, 09:58 صبح
یکی از روشهایی که میتونه جلوی اجرای موفقیت آمیز برنامه هک شده رو بگیره اینه که از checksum به همراه روش اختلاف کلید استفاده کنید

در صورت هرگونه تغییر در فایل شما، checksum تغییر میکنه و شما میتونید از اون استفاده های مفیدی بکنید

golbafan
دوشنبه 04 اسفند 1393, 10:16 صبح
نکته مهم: در پروتکت کردن برنامتون تمام روشهایی که بلد هستید پیاده کنید و تنها به یک روش خلاصه نکنید

1- تمام متغیرهای متنی رو بصورت encrypt شده بخونید و بنویسید
2- اگر امکان داره فایل apk رو بعد از نصب شدن پاک کنید (خیلی ها بعد از دانلود از بازار سریعا نصب میکنند)
3- از سرویس در کنار برنامتون استفاده کنید تا همدیگر رو کنترل کنند و از اصل بودن هم مطلع شوند

golbafan
دوشنبه 04 اسفند 1393, 10:27 صبح
چطوری میشه یه قسمت از برنامه و یا کد برنامه را با زبان دیگه ای (مثلأ همین C++‎‎‎‎ ) که شما گفتید نوشت؟؟ لطفأ توضیح بیشتر بدید. ممنون

نمیدونم چرا کسی راههایی رو که بلده نمیگه
باشه من میگم:

همونطور که در پست 54 و 30 گفتم میتونید از delphi, C++‎‎‎builder و ... استفاده کنید

ابزارهای مفید:
Build_all_android
Buildutil
Libfplutil
Android_ndk_perf


برای استفاده بهینه تر ، بهتره برنامه کنترل کننده لایسنس بطور جداگانه اجرا بشه (پست 58)

golbafan
دوشنبه 04 اسفند 1393, 10:38 صبح
ویدیوی آموزش پروتکت کردن نرم افزار های نوشته شده با اندروید (زبان اصلی)

https://www.youtube.com/watch?v=G25YhoE04Xc

golbafan
دوشنبه 04 اسفند 1393, 10:48 صبح
اگر امکان داره براتون از DexGuard (http://www.saikoa.com/dexguard) و ProGuard (http://developer.android.com/tools/help/proguard.html) همزمان استفاده کنید

در ضمن لینکهای زیر هم میتونه مفید باشه
http://resources.infosecinstitute.com/android-hacking-security-part-9-insecure-local-storage-shared-preferences/
https://developer.android.com/training/articles/security-tips.html

esideli
دوشنبه 04 اسفند 1393, 10:51 صبح
سلام،
1_میشه دقیقا بگید منظورتون از checksum چی هست؟
2_ متغیر های متنی رو به چه روشی رمزنگاری (encrypt) کنیم و کجا رمز گشایی (decrypt) کنیم؟
3_ آیا ابزاری برای تبدیل کد جاوا به c++ هست؟ این برنامه ها باعث راحتی هکر نمی شه؟
4_ مزیت فایل اّبفوکوس شده ی سی ++ به جاوا چی هست؟
5_ مهم : داداش من اصلا نمی دونم چطوری کل کد های برنامه رو دیکریپت کنم یکم توضیح میدین؟

مرسی.

golbafan
دوشنبه 04 اسفند 1393, 11:01 صبح
سلام،
1_میشه دقیقا بگید منظورتون از checksum چی هست؟


هر فایل نسبت به محتویاتش می‌تواند یک Checksum داشته باشد که این Checksum ها در اکثر موارد با الگوریتم MD5 کدگذاری می‌شوند اما نیازی نیست که حتمآ این طور باشد.
حالا اصلآ به چه درد می‌خوره؟
Checksum در اصل اثر انگشت فایل ها است. وقتی شما فایلی را از جایی دانلود می‌کنید ممکن است همان فایل واقعی نباشد و با یک فایل مخرب عوض شده باشد. یا اینکه فایلتان نصفه و نیمه دانلود شده باشد. وقتی اثر انگشت فایلتان را بدانید می‌توانید قبل از اجرا آن را چک کنید تا مطمئن شوید این همانی است که شما می‌خواستید.

checksum الگوریتمی است که برای چک کردن صحت اطلاعات در مقصد استفاده می شود. در شبکه بسیار کاربرد دارد. البته کدهای CRC هم استفاده می شوند.
برخی از الگوریتمهای سادهء چک سام ، الگوریتم 8 - 16 - 32 - 64 بیتی و CRC32 - CRC16 بیتی هستند.
چک سام بر اساس هر الگوریتمی که باشد تعداد بیتهای (Bit) آن تقسیم بر 8 برابر با تعداد بایت (Byte) میشود.
مثلا اگر چک سام بر اساس الگوریتم Checksum8 بیتی باشد مقدار چک سام ما 1 بایت است .
اگر چک سام بر اساس الگوریتم Checksum16 باشد مقدار چک سام ما 2 بایت است .
و اگر چک سام بر اساس الگوریتم Checksum32 باشد مقدار چک سام ما 4 بایت است.
این اصطلاح از ترکیب دو واژه "Check" به معنی مقایسه و تطبیق و "Sum" به معنی مقدار ایجاد شده است.
چک سام عموما قسمتی از یک فایل است که وظیفه آن حفاظت از کل فایل در برابر تغییرات میباشد . این قسمت از فایل شامل بایت یا بایتهایی (تیبلی) است که وظیفه آن نگهداری مقدار چک سام کل فایل
منهای خود همین بایتها و ( Ignore Bytes ) میباشد . به زبان ساده تر میتوان گفت که اگر چک سام کل یا یک قسمت از فایلی را بر اساس الگوریتمی خاص محاسبه کرده و خروجی آن را در محلی از
یک فایل و در لابلای بایتها یا پکتها قرار دهیم ، چک سامی برای فایل تعریف کرده ایم که در این فایل ،
اگر تنها مقدار چک سام قسمتی از فایل را محاسبه کرده باشیم ، به قسمت محاسبه نشده این فایل اصطلاحا ( Ignore Bytes ) گقته میشود . یعنی این قسمت در محاسبه چک سام منظور نشده است
و از آن چشم پوشی کرده ایم . پس در محاسبه بعدی چک سام هم بایستی از آن چشم پوشی کنیم.

golbafan
دوشنبه 04 اسفند 1393, 11:04 صبح
سلام،
2_ متغیر های متنی رو به چه روشی رمزنگاری (encrypt) کنیم و کجا رمز گشایی (decrypt) کنیم؟

روشهای زیادی برای اینکار هست (مثلا AES):
میتونید دو تا تابع برای اینکار در برنامتون در نظر بگیرید یکی برای انکریپت و یکی برای دیکریپت

حالا وقتی نیاز دارید متغیری رو بکار ببرید، اون رو بصورت انکریپت شده بکار ببرید ولی برای نمایش به کاربر باید دیکریپت بشه (مثلا در دیتابیس انکریپت شده باشه تا قابل مشاهده نباشه)

golbafan
دوشنبه 04 اسفند 1393, 11:07 صبح
سلام،
3_ آیا ابزاری برای تبدیل کد جاوا به C++‎ هست؟

بله باید سرچ کنید


این برنامه ها باعث راحتی هکر نمی شه؟

خیر برنامه های c++ توسط خود سیستم عامل اجرا میشه و نه توسط فریم ورک جاوا

golbafan
دوشنبه 04 اسفند 1393, 11:09 صبح
4_ مزیت فایل اّبفوکوس شده ی سی ++ به جاوا چی هست؟


همونطور که در پست قبلی گفتم:
سی ++ موقع کامپایل شدن خودش آبفوسکات میکنه. البته کلا کدهارو باینری میکنه و به این راحتی قابل برگشت نیست (برخلاف جاوا)

golbafan
دوشنبه 04 اسفند 1393, 11:15 صبح
5_ مهم : داداش من اصلا نمی دونم چطوری کل کد های برنامه رو دیکریپت کنم یکم توضیح میدین؟


کدهای برنامه که انکریپت نمیشه!!! چون اینجوری دیگه کامپایل نمیشه!!!

esideli
دوشنبه 04 اسفند 1393, 11:20 صبح
مرسی.

چک سام یک فایل جاوا رو من چطوری بدست بیارم؟

موقع چک کردن چک سام اصلی با چک سام تازه گرفته شده چطوری عمل کنم که کسی که داره کد ها رو می بینه متوجه نشه و نتونه شرط رو غیر فعال کنه؟ باید کلا از سی ++ استفاده کنم برای چک کردن؟

برنامه ای که پرداخت رو با شردپرفرنسز ذخیره و چک می کنه آیا این روش موثر هست؟

ali_khodayar
دوشنبه 04 اسفند 1393, 11:46 صبح
نمیدونم چرا کسی راههایی رو که بلده نمیگه
باشه من میگم:

همونطور که در پست 54 و 30 گفتم میتونید از delphi, C++‎‎‎‎builder و ... استفاده کنید

ابزارهای مفید:
Build_all_android
Buildutil
Libfplutil
Android_ndk_perf


برای استفاده بهینه تر ، بهتره برنامه کنترل کننده لایسنس بطور جداگانه اجرا بشه (پست 58)

اول من از شما بخاطر وقتی که میذارید سوالات را دونه دونه جواب میدی تشکر میکنم.
دوم اینکه کار این برنامه به چه صورت است؟ مثلأ کد رو توی c++ مینویسیم بعد از طریق این برنامه ها توی اندروید import میکنیم یا اینکه توی خود همین برنامه ها نوشته میشه؟؟

skkhossein
دوشنبه 04 اسفند 1393, 11:46 صبح
ب
رنامه های C++‎ توسط خود سیستم عامل اجرا میشه و نه توسط فریم ورک جاوا
وقتی یه اپ (app) اجرا میشه آیا این طور نیست که بایت کد های جاوا خونده میشه و نه چیز دیگه اونم در ماشین مجازی (حالا با هر زبانی که نوشته شده باشه)؟

golbafan
دوشنبه 04 اسفند 1393, 12:24 عصر
وقتی یه اپ (app) اجرا میشه آیا این طور نیست که بایت کد های جاوا خونده میشه و نه چیز دیگه اونم در ماشین مجازی (حالا با هر زبانی که نوشته شده باشه)؟


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

golbafan
دوشنبه 04 اسفند 1393, 15:42 عصر
اول من از شما بخاطر وقتی که میذارید سوالات را دونه دونه جواب میدی تشکر میکنم.
دوم اینکه کار این برنامه به چه صورت است؟ مثلأ کد رو توی C++‎ مینویسیم بعد از طریق این برنامه ها توی اندروید import میکنیم یا اینکه توی خود همین برنامه ها نوشته میشه؟؟

سلام اینها کامپایلر هستند از زبان سی++ به فایل apk
شما میتونید با notepad++ کد بزنید و بدید به کامپایلر

اگر همه برنامتون رو با سی++ بنویسید دیگه به این راحتیا کرک نمیشه

doost_fu
دوشنبه 04 اسفند 1393, 17:38 عصر
سلام برای مقابله با این نرم افزار باید از روش اختلاف کلید استفاده کنید:
فرض کنید من یک برنامه ماشین حساب نوشتم که دو عدد رو جمع میکنه... حالا اگر کلید واقعی (که کاربر باید بخره) رو مثلا 849 فرض کنیم و کلید نرم افزار در حالت فعال نشده 100 باشه پس اختلاف کلیدها میشه 749 و باید در همه توابع حسابش کنید و با ریزالت جمعش کنید بنابراین ماشین حساب درست کار نمیکنه

اما اگر کلید 849 رو بخره اختلاف صفر شده و خطایی نمیده...

برای آشنایی با مقوله کلید پست 2 رو بخونید
اول ممنون بابت اینهمه وقت و مطلبی که گذاشتید
ببینید من درست متوجه شدم به عنوان مثال ما کلید نرم افزارمون به جای boolean و درست و غلط از یک عدد استفاده میکنیم
مقدار اولیه عدد 100 هست موقع خرید میشه 849
شرط قسمت ویژه برنامه ( وارد شدن به سایر امکانات برنامه ) عدد 749 که باید محاسبه بشه ؟
اون پست 2 که ادرس دادید فکر کنم اشتباه دادید !
اگه میشه یه خورده دیگه توضیح بدید
ممنون

golbafan
دوشنبه 04 اسفند 1393, 18:16 عصر
اول ممنون بابت اینهمه وقت و مطلبی که گذاشتید
ببینید من درست متوجه شدم به عنوان مثال ما کلید نرم افزارمون به جای boolean و درست و غلط از یک عدد استفاده میکنیم
مقدار اولیه عدد 100 هست موقع خرید میشه 849
شرط قسمت ویژه برنامه ( وارد شدن به سایر امکانات برنامه ) عدد 749 که باید محاسبه بشه ؟
اون پست 2 که ادرس دادید فکر کنم اشتباه دادید !
اگه میشه یه خورده دیگه توضیح بدید
ممنون

سلام
منظورم دقیقا این نبود...
ببینید نباید طوری برنامه بنویسید که نیازی به دستورات شرطی (برای تست امنیت) باشه
چون اگر مثلا یک جا بخوای 749 رو در شرط قرار بدی اونوقت هکر کافیه if رو به if not تغییر بده!!!

ببین مثلا من تابع زیر رو دارم:

function sumf(a,b:double):double;
begin
result=a+b;
end;


حالا میخوام امنش کنم:


function purchased_key:int;
begin
// برای بارگیری کلید خریداری شده
result := load_purchased_key_from_file;
end;


function Valid_key:int;
begin
// محاسبه کلید بر اساس مشخصات سخت افزاری
// یک تغییر ساده که شما باید پیچیده ترش کنید
result := IMEI * 2;
end;


function sumf(a,b:double):double;
begin
result=a+b+(valid_key-purchased_key);
end;


این تنها روشیه که luckypatcher قادر نیست باهاش مقابله کنه

ahmadnajaf403i
دوشنبه 04 اسفند 1393, 18:55 عصر
سلام golbafan (http://barnamenevis.org/member.php?101169-golbafan) عزیز

میشه در مورد نحوه برقراری ارتباط امن با دیتابیسهای تحت شبکه هم صحبت کنبد؟ مثل sql-server

rubiks.kde
دوشنبه 04 اسفند 1393, 21:46 عصر
بحث رو از مسیر اصلیش منحرف نکنید.تاپیک بسته میشه.بحث در یک تاپیک مناسب ادامه داده بشه.