PDA

View Full Version : آیا راهی هست که سرور شخصی من فقط با اپلیکیشن من اطلاعات رد و بدل کنه؟



mamadlooloo
جمعه 06 مرداد 1396, 20:28 عصر
درود بر همه دوستان

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

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

مثلا شما امتیاز 100 رو آوردید و میخواید اون رو در جدول رکورد داران ثبت کنید.

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

خواهش میکنم راهنمایی کنید.

سپاس.

saeidpsl
شنبه 07 مرداد 1396, 00:29 صبح
با سلام آدرس سایتت رو کد (http://barnamenevis.org/showthread.php?460023-Decompile-And-Anti-Decompile&p=2059636&viewfull=1#post2059636) کن

mamadlooloo
شنبه 07 مرداد 1396, 01:21 صبح
دوست گرامی یه خورده بیشتر توضیح بدید.
منظورتون استفاده از c++ هست؟

mamadlooloo
شنبه 07 مرداد 1396, 01:22 صبح
دوست گرامی یه خورده بیشتر توضیح بدید.
منظورتون استفاده از C++‎‎ هست؟

saeidpsl
شنبه 07 مرداد 1396, 01:57 صبح
کد کردن با ++C
http://www.mediafire.com/file/4mimnhldlrtr3g8/Encryption_Decryption.rar
کد کردن با Zelix KlassMaster 5.5 (http://www.mediafire.com/download/bbvy9i8v9rp8m8f/Zelix+KlassMaster+5.5.rar)
http://barnamenevis.org/showthread.php?460023-Decompile-And-Anti-Decompile&p=2059636&viewfull=1#post2059636

saeidpsl
شنبه 07 مرداد 1396, 02:11 صبح
تو سایت stackoverflow.com یکی اینو گفته بود
We have design a ".so" file for security regarding in RESTAPI ".so" file is native compiled file by android NDK. We have design a auth_key which is generate by ".so" file according user "email" and "password". It's generate 265 digit key for authorization. Means user is valid or not. and also this same algorithm is also apply on server side to get original data from the key. I have see 99% payment gateway is also used our own algorithm for generating auth_key in ".so" means native file. Because any hacker cann't possible to reverse Engineer this file to get original Algorithm code to generate auth_key
لینکش (https://stackoverflow.com/questions/33426579/security-for-android-app-in-communicate-with-webservice/33738824)

saeidpsl
شنبه 07 مرداد 1396, 02:24 صبح
اگه با json کار میکنی بهتره از کتابخونه Gson (https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwi31ZXYn63VAhVLkRQKHX3QDUUQFggnMAA&url=https%3A%2F%2Fgithub.com%2Fgoogle%2Fgson&usg=AFQjCNHPjAS7e8CbqqVuSgylGqaZDt3aRQ) استفاده کنی.

Nevercom
شنبه 07 مرداد 1396, 11:10 صبح
حتی اگه تو کدها هم آدرس API رو به شکلی مخفی کنید، میشه با اسنیف کردن پکت های خروجی اطلاعات ارسالی برنامه شما رو دید. مخفی کردن آدرس به هر شکلی در کدها ممکنه 2 ساعت از وقت شما رو بگیره برای پیاده سازیش، اما 30 ثانیه هم از وقت کسی که بخواد Network Call های برنامه ی شما رو ببینه، رو نمیگیره.

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

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

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

این رو هم یه نگاهی بندازید بد نیست: https://android-developers.googleblog.com/2017/04/safetynet-attestation-building-block.html

mamadlooloo
شنبه 07 مرداد 1396, 13:56 عصر
حتی اگه تو کدها هم آدرس API رو به شکلی مخفی کنید، میشه با اسنیف کردن پکت های خروجی اطلاعات ارسالی برنامه شما رو دید. مخفی کردن آدرس به هر شکلی در کدها ممکنه 2 ساعت از وقت شما رو بگیره برای پیاده سازیش، اما 30 ثانیه هم از وقت کسی که بخواد Network Call های برنامه ی شما رو ببینه، رو نمیگیره.

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

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

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

این رو هم یه نگاهی بندازید بد نیست: https://android-developers.googleblog.com/2017/04/safetynet-attestation-building-block.html

سپاس از شما دوست گرامی

یه مشکلی هست، اون هم اینکه : در مستندات این منبعی که معرفی کردید ، نوشته باید از Google Api استفاده کنید.

Please use the Google Developers Console https://console.developers.google.com
to create a project, enable the Android Device Verification API, generate an API key
and add it here.

private static final String URL = "https://www.googleapis.com/androidcheck/v1/attestations/verify?key=" + API_KEY

برای استفاده از این API فکر میکنم باید اپلیکیشن رو روی Google Play منتشر کنم.
کافه بازار خودمون همچین چیزی نداره؟

mamadlooloo
شنبه 07 مرداد 1396, 14:05 عصر
اگه با json کار میکنی بهتره از کتابخونه Gson (https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwi31ZXYn63VAhVLkRQKHX3QDUUQFggnMAA&url=https%3A%2F%2Fgithub.com%2Fgoogle%2Fgson&usg=AFQjCNHPjAS7e8CbqqVuSgylGqaZDt3aRQ) استفاده کنی.

سپاس از راهنمایی شما.

mamadlooloo
شنبه 07 مرداد 1396, 14:41 عصر
اپلیکیشن هایی که بانکها استفاده میکنن واسه مشتری هاشون چطوری کار میکنن؟
با ارسال اطلاعات از طریق پیامک یا چیز دیگه؟
قطعا بانکها بیشترین امنیت رو برای اپ خودشون در نظر میگیرن.
روند کاری این اپ ها رو اگر کسی از دوستان میدونه لطفا راهنمایی کنید.

saeidpsl
شنبه 07 مرداد 1396, 16:54 عصر
مثلا بانک صادرات از برنامه مثل Zelix KlassMaster 5.5 (http://www.mediafire.com/download/bbvy9i8v9rp8m8f/Zelix+KlassMaster+5.5.rar) استفاده کرده آدرس وب سرویسش کد شده

دنیای خطرناکی شده

https://3.bp.blogspot.com/-Kfa31m52sAE/V0SMoP3bOiI/AAAAAAAAoRI/LDu-P3GShsMaby8IrsQ8tg9NjDOGPyctgCLcB/s1600/keylogger-fbi.png

mamadlooloo
شنبه 07 مرداد 1396, 17:59 عصر
مثلا بانک صادرات از برنامه مثل Zelix KlassMaster 5.5 (http://www.mediafire.com/download/bbvy9i8v9rp8m8f/Zelix+KlassMaster+5.5.rar) استفاده کرده آدرس وب سرویسش کد شده



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

اگه اینطور باشه که دوستمون گفتن ، آیا کد کردن آدرس سرور معنی داره؟

Nevercom
شنبه 07 مرداد 1396, 18:15 عصر
سپاس از شما دوست گرامی

یه مشکلی هست، اون هم اینکه : در مستندات این منبعی که معرفی کردید ، نوشته باید از Google Api استفاده کنید.

Please use the Google Developers Console https://console.developers.google.com
to create a project, enable the Android Device Verification API, generate an API key
and add it here.

private static final String URL = "https://www.googleapis.com/androidcheck/v1/attestations/verify?key=" + API_KEY

برای استفاده از این API فکر میکنم باید اپلیکیشن رو روی Google Play منتشر کنم.
کافه بازار خودمون همچین چیزی نداره؟
نه، هیچ محدودیتی در محل انتشار برنامه ندارید. تا جایی که خاطرم هست ایرادش اینه که کاملاً رایگان نیست و در حالت رایگان تعداد API Request های محدودی دارید (روزانه 10٫000 درخواست)

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

saeidpsl
شنبه 07 مرداد 1396, 20:23 عصر
یه خورده از نحوه کارش لطفا بگید.
در بالا دوستمون Nevercom گفتن که :(" میشه با اسنیف کردن پکت های خروجی اطلاعات ارسالی برنامه شما رو دید. ")

اگه اینطور باشه که دوستمون گفتن ، آیا کد کردن آدرس سرور معنی داره؟

کد کردن آدرس سرور 50% کار رو سختر می کنه همه که بلد نیستن اسنیف کنن . کار از محکم‌کاری عیب نمی‌کند

mamadlooloo
شنبه 07 مرداد 1396, 21:23 عصر
دوستان php کارمون
دوستان هکر کلاه سفیدمون
دوستان باسوادمون
دوستان باتجربه

کسی ایده ای نداره؟ هیچی؟؟؟

maarek
شنبه 07 مرداد 1396, 22:24 عصر
خب میتونی از یه Token استفاده کنی که مثلا یه کدی هست که از طریق اس ام اس میاد یا یه هدر خاصی طراحی کن که فقط به درخواست هایی جواب بده که این هدر دارن...
یا اصلا ببین بقیه بازی ها چطوری کار میکنن یه کم تحلیل کن

saeidpsl
یک شنبه 08 مرداد 1396, 07:08 صبح
از اول همه ssl رو فعال کن دلیل

https://2.bp.blogspot.com/_ZaGO7GjCqAI/S_fC__OR6MI/AAAAAAAAS-M/DQ4jUjqHgU8/s640/google-packet-sniffing.png

بعد میتونی داده کامل میفرستی رو کد کنی مثلا
این بدون کد کردنه
test.com/test.php?user=ali&pass=1234&score=1000
حالا ما همه دیتا رو کد میکنیم از یور بگیر تا اسکور اینجور میشه
test.com/test.php?data=4324dDFGDERESER3545FGHFGH
همچین چیزی مثل بالا درست میشه سمت اندروید
بعد سمت php باید بخش data رو از کد در بیاری
نتیجه این چیزی هست که بهت نشون میده
user=ali&pass=1234&score=1000
برای کد کردن سمت اندروید از ++C (http://www.mediafire.com/file/4mimnhldlrtr3g8/Encryption_Decryption.rar) استفاده کن که کسی نتونه کد تو decompile کنه همون الگوریتمی که برا کد کردن در ++c هست برا سمت سرور هم همون جور پیاده کن

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

mamadlooloo
یک شنبه 08 مرداد 1396, 14:25 عصر
یا اصلا ببین بقیه بازی ها چطوری کار میکنن یه کم تحلیل کن

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

saeidpsl
یک شنبه 08 مرداد 1396, 15:05 عصر
پیشنهاد خوبیه ولی احتیاج به زمان زیادی داره.
بازی ساز ها هم قطعا اطلاعات بازی خودشون رو به کسی نمیگن.

20 دقیقه کار داره !

mamadlooloo
یک شنبه 08 مرداد 1396, 15:10 عصر
از اول همه ssl رو فعال کن

بعد میتونی داده کامل میفرستی رو کد کنی مثلا
این بدون کد کردنه
test.com/test.php?user=ali&pass=1234&score=1000
حالا ما همه دیتا رو کد میکنیم از یور بگیر تا اسکور اینجور میشه
test.com/test.php?data=4324dDFGDERESER3545FGHFGH
همچین چیزی مثل بالا درست میشه سمت اندروید
بعد سمت php باید بخش data رو از کد در بیاری
نتیجه این چیزی هست که بهت نشون میده
user=ali&pass=1234&score=1000
برای کد کردن سمت اندروید از ++C (http://www.mediafire.com/file/4mimnhldlrtr3g8/Encryption_Decryption.rar) استفاده کن که کسی نتونه کد تو decompile کنه همون الگوریتمی که برا کد کردن در ++c هست برا سمت سرور هم همون جور پیاده کن

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

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

mamadlooloo
یک شنبه 08 مرداد 1396, 15:11 عصر
20 دقیقه کار داره !

شوربختانه دانش من در این مورد کم هست.
لطفا بیشتر توضیح بدید چطور؟

saeidpsl
یک شنبه 08 مرداد 1396, 15:21 عصر
کد رو مینویسم به زودی خعلی کار میشه کرد
مثلا
test.com/test.php?data=4324dDFGDERESER3545FGHFGH
یه زمان تاریخ هم اضافه میکنی اینجوری
date=2017-07-30 15:20:40
وقتی میخوای دیتا به وب سرویس بفرستی یه تایم از سرور بگیره ممکنه زمان اندروید دست کاری شده اینجوری
test.com/time.php
اینجور چیزی
بعد سمت سرور time رو میگیری بعد مثلا اگه زمان از 60 ثانیه بیشتر گذشته اجازه ورود نده یعنی زمان ارسال شده و زمان خود سرور میسنجه اگه از 50 ثانیه یا هر زمانی که خودت میخوای بگزره اجازه ورود نده
خعلی کارهای دیگه هم میشه کرد.:شیطان:

mamadlooloo
یک شنبه 08 مرداد 1396, 15:34 عصر
کد رو مینویسم به زودی خعلی کار میشه کرد
مثلا
test.com/test.php?data=4324dDFGDERESER3545FGHFGH
یه زمان تاریخ هم اضافه میکنی اینجوری
date=2017-07-30 15:20:40
وقتی میخوای دیتا به وب سرویس بفرستی یه تایم از سرور بگیره ممکنه زمان اندروید دست کاری شده اینجوری
test.com/time.php
اینجور چیزی
بعد سمت سرور time رو میگیری بعد مثلا اگه زمان از 60 ثانیه بیشتر گذشته اجازه ورود نده یعنی زمان ارسال شده و زمان خود سرور میسنجه اگه از 50 ثانیه یا هر زمانی که خودت میخوای بگزره اجازه ورود نده
خعلی کارهای دیگه هم میشه کرد.:شیطان:

مشکل اصلا سر زمان نیست دوست خوبم.
مشکل سر اینه که : شما فرض کن من پروتکل HTTPS دارم و فایل های SSL certificateداخل اپلیکیشن هستن. اگر مهندسی معکوس انجام بشه و به فایل های SSL certificate دسترسی پیدا کنیم ، امکان داره هکر بیاد و با استفاده از این certificate داده خودش رو بفرسته سمت سرور ؟؟؟

اپلیکیشن زودفود رو اگه مهندسی معکوس کنید تمام فایل های SSL certificate در دسترس هستن.

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

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

saeidpsl
یک شنبه 08 مرداد 1396, 15:42 عصر
HTTPS برای امنیت سایت خودته
اینجا مهمه که data=4324dDFGDERESER3545FGHFGH کد شده اینو نمیتونه کاریش کرد
امنیت هر چه بیشتر بهتره

saeidpsl
یک شنبه 08 مرداد 1396, 15:58 عصر
کسی نظری نداره؟

mamadlooloo
یک شنبه 08 مرداد 1396, 20:04 عصر
کسی نظری نداره؟


دوستانی که در مورد موضوع تاپیک آگاهی دارن، خواهشمندم دیدگاه خودشون رو بگن.

saeidpsl
دوشنبه 09 مرداد 1396, 00:02 صبح
حتی اگه در ++C آدرس کد نشده استفاده کنی با HEX کردن فایل so میشه آدرس رو به راحتی پیدا کرد باید هر آدرس مهم اول کد کنی.
https://androidsecurity.info/images/disassemble-lib.png

saeidpsl
دوشنبه 09 مرداد 1396, 01:49 صبح
اینجور باید انجام بدیم

http://upload.wikimedia.org/wikipedia/commons/thumb/f/f9/Public_key_encryption.svg/280px-Public_key_encryption.svg.png

mamadlooloo
دوشنبه 09 مرداد 1396, 08:23 صبح
حتی اگه در ++C آدرس کد نشده استفاده کنی با HEX کردن فایل so میشه آدرس رو به راحتی پیدا کرد باید هر آدرس مهم اول کد کنی.


دقیقا همینطوره

نباید یک رشته رو در سی++ به کار برد. بلکه باید رشته رو تبدیل به Byte Array کرد.

saeidpsl
سه شنبه 10 مرداد 1396, 04:53 صبح
یه برنامه نوشتم تا کار با اسنیف رو تست کنم وقتی رو دکمه Sent زدم یه ثانیه آدرس لینک پیدا کرد[امنیت در حد جیبوتی!].به زودی رو کد کردن لینک کار می کنم و نتیجه + کد ها رو گزارش میدم.


http://s9.picofile.com/file/8302225926/sfdsdf.jpg

tux-world
سه شنبه 10 مرداد 1396, 07:40 صبح
سلام. دستتون درد نکنه آقا سعید در مورد این اسم تابع یه توضیح میخواستم:

Java_com_saeidpsl_EncryptionDecryption_EncryptUtil _encrypt

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

saeidpsl
سه شنبه 10 مرداد 1396, 11:23 صبح
سلام. دستتون درد نکنه آقا سعید در مورد این اسم تابع یه توضیح میخواستم:

Java_com_saeidpsl_EncryptionDecryption_EncryptUtil _encrypt

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

سلام خواهش می کنم
اره میشه عوض کرد
اسم package

com_saeidpsl_EncryptionDecryption

اینم اسم class

EncryptUtil

اخرش هم اسم String هستش

saeidpsl
سه شنبه 10 مرداد 1396, 11:58 صبح
تو github بهترش هم گیر میاد.

tux-world
سه شنبه 10 مرداد 1396, 12:59 عصر
سلام خواهش می کنم
اره میشه عوض کرد
اسم package

com_saeidpsl_EncryptionDecryption

اینم اسم class

EncryptUtil

اخرش هم اسم String هستش


نمیدونم کجا دارم اشتباه میکنم. من این com_saeidpsl_EncryptionDecryption رو تغییر دادم به اسم پکیج خودم ir.pishguy.myapppro

که شد ir.pishguy.myapppro_EncryptUtil_encrypt

حالا اومدم تو گردل این رو گذاشتم:



ndk{
moduleName "saeidpsl_encrypt"
ldLibs "log", "z", "m"
abiFilters "armeabi", "armeabi-v7a", "x86"
}



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


Error:Could not find method ndk() for arguments [build_5uzhq3pbpydx849xi6yzjyck8$_run_closure1$_clo sure6@4efa66cf] on object of type com.android.build.gradle.AppExtension.

tux-world
سه شنبه 10 مرداد 1396, 13:06 عصر
درست شد. اشتباه از من بود. الان خطای زیر رو میده:


Error:Execution failed for task ':app:compileDebugNdk'. > Error: Your project contains C++‎‎‎‎‎ files but it is not using a supported native build system.

Consider using CMake or ndk-build integration with the stable Android Gradle plugin:
https://developer.android.com/studio/projects/add-native-code.html or use the experimental plugin:
https://developer.android.com/studio/build/experimental-plugin.html.

tux-world
سه شنبه 10 مرداد 1396, 13:11 عصر
درست شد. اشتباه از من بود. الان خطای زیر رو میده:


من CMake و LLDB رو نصب کردم ولی هنوز نمیتونم کامپایل کنم

saeidpsl
سه شنبه 10 مرداد 1396, 14:35 عصر
حالا ببین جواب میده لینکش (http://s9.picofile.com/file/8302268676/Encryption_Decryption.rar.html).
فایل build.gradle ادرس commandLine عوض کن.

h3lper
سه شنبه 10 مرداد 1396, 14:36 عصر
سلام یک راهش اینه که یک پسورد داشته باشی و هر بار برای ثبت رکورد ، درخواستی رو به سرور ارسال کنی که پسورد رو هم داخل درخواست داشته باشه، در سمت سرور هم پسورد رو بررسی میکنی که در صورت درست بودن رکورد ثبت بشه و در غیر این صورت ثبت نمیشه.
-با فعال کردن ProGuard از کد برنامتون محافظت کنید.
-برای ارسال اطلاعت در صورت امکان از متد POST استفاده کنید و اطلاعات رو قبل از ارسال رمزنگاری کنید.

tux-world
سه شنبه 10 مرداد 1396, 14:50 عصر
حالا ببین جواب میده لینکش (http://s9.picofile.com/file/8302268676/Encryption_Decryption.rar.html).
فایل build.gradle ادرس commandLine عوض کن.

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



Error:(115) *** Android NDK: Aborting . Stop.
Error:Execution failed for task ':app:compileDebugNdk'.
> com.android.ide.common.process.ProcessException: Error while executing process /Users/mahdi/Desktop/Home/Packages/AndroidSdk/ndk-bundle/ndk-build with arguments {
NDK_PROJECT_PATH=null APP_BUILD_SCRIPT=/Users/mahdi/Desktop/Home/Projects/Android/MYAPP/app/build/intermediates/ndk/debug/Android.mk APP_PLATFORM=android-25 NDK_OUT=/Users/mahdi/Desktop/Home/Projects/Android/MYAPP/app/build/intermediates/ndk/debug/obj NDK_LIBS_OUT=/Users/mahdi/Desktop/Home/Projects/Android/MYAPP/app/build/intermediates/ndk/debug/lib APP_ABI=armeabi-v7a,armeabi,x86}

saeidpsl
سه شنبه 10 مرداد 1396, 15:10 عصر
اگه اسم فایل c. عوض کردی تو فایل Android.mk هم باید اسمشو عوض کنی
اینو (https://stackoverflow.com/questions/25052564/cant-build-project-with-android-ndk-and-android-studio)ببین
و اگه با لینوکسی کار میکنی ndk-build.cmd به ndk-build تغییر بده.
(https://stackoverflow.com/questions/25052564/cant-build-project-with-android-ndk-and-android-studio)

tux-world
سه شنبه 10 مرداد 1396, 15:15 عصر
نه من مک کار میکنم و اسم فایل رو هم تو پروژه خودم تغییر ندادم. فقط پکیج رو تغییر دادم از نام توابعی که داخل اون فایل سی هستن. من اصلا این فایل Android.mk رو ندارم تو پوشه های پروژه. و اینکه مسیر و همه چیز پروژه خودم شبیه پروژه شماست. این ndk-build رو هم تو پژوه پیدا نمیکنم محتوای build.gradle اینه:


ndk.dir=/Users/mahdi/Desktop/Home/Packages/AndroidSdk/ndk-bundle
sdk.dir=/Users/mahdi/Desktop/Home/Packages/AndroidSdk

اسم پکیج اینطورریه:

ir_pishguy_MYAPPPRO_EncryptUtil_decrypt

تو همون اسم توابع داخل فایل c



تو این فایل setup-app-platfowm.mk گیر میکنه

saeidpsl
سه شنبه 10 مرداد 1396, 15:52 عصر
ممکنه با مک یه جور دیگه هست.مک کار نکردم

tux-world
سه شنبه 10 مرداد 1396, 15:53 عصر
مک با لینوکس تفاوتی نداره: میدونید این خطا چیه؟

رو پروژه شما هیچ مشکلی ندارم آخه. عجیبه:


Error:(115) *** Android NDK: Aborting . Stop. Error:Execution failed for task ':app:compileDebugNdk'. com.android.ide.common.process.ProcessException: Error while executing process /Users/mahdi/Desktop/Home/Packages/AndroidSdk/ndk-bundle/ndk-build with arguments {NDK_PROJECT_PATH=null APP_BUILD_SCRIPT=/Users/mahdi/Desktop/Home/Projects/Android/myapp/app/build/intermediates/ndk/debug/Android.mk APP_PLATFORM=android-25 NDK_OUT=/Users/mahdi/Desktop/Home/Projects/Android/myapp/app/build/intermediates/ndk/debug/obj NDK_LIBS_OUT=/Users/mahdi/Desktop/Home/Projects/Android/myapp/app/build/intermediates/ndk/debug/lib APP_ABI=armeabi-v7a,armeabi,x86}

tux-world
سه شنبه 10 مرداد 1396, 16:00 عصر
میتونم بهتون تیم بدم ببینید؟

saeidpsl
سه شنبه 10 مرداد 1396, 16:05 عصر
gradle رو جدید کن
classpath 'com.android.tools.build:gradle:2.1.2'

tux-world
سه شنبه 10 مرداد 1396, 19:52 عصر
آخرین نسخشو دارم


classpath 'com.android.tools.build:gradle:2.3.3'

tux-world
سه شنبه 10 مرداد 1396, 20:05 عصر
مشکل از اینه که باید من این رو باید لینک کنم به گردل. روی پروژه فعلی مراحل فرق میکنه. شما آشنایید با اونها؟

negative60
سه شنبه 10 مرداد 1396, 20:05 عصر
همونطور که عرض کردن تنها راه ایمن اینه امتیاز دهی‌ در سمت سرور انجام بشه
به عنوان مثال میز بازی دو نفر هست و امتیاز میز ۵۰، بعد از پایان بازی سرور باید برنده و بازنده رو تشخیص بده و امتیاز رو برای برنده به ثبت برسونه

mamadlooloo
سه شنبه 10 مرداد 1396, 20:11 عصر
مشکل از اینه که باید من این رو باید لینک کنم به گردل. روی پروژه فعلی مراحل فرق میکنه. شما آشنایید با اونها؟

درود بر همه دوستان

ای کاش این موضوع رو در یک تاپیک جدا مطرح میکردید.

اینکار مانند اینه که بریم نانوایی سنگک بگیم : ("آقا لطفا 10 تا بربری به من بدید.")

سپاس از شما.

mamadlooloo
سه شنبه 10 مرداد 1396, 20:14 عصر
همونطور که عرض کردن تنها راه ایمن اینه امتیاز دهی‌ در سمت سرور انجام بشه
به عنوان مثال میز بازی دو نفر هست و امتیاز میز ۵۰، بعد از پایان بازی سرور باید برنده و بازنده رو تشخیص بده و امتیاز رو برای برنده به ثبت برسونه

دوست من ، بازی دو تنه نیست.

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

همینک دیدگاهتون چیه؟ چه ترفندی به ذهنتون میرسه؟

----------------------------------------------------------------------------------------

نفر = واژه ای صد در صد عربی

تن = پارسی را پاس بداریم

saeidpsl
سه شنبه 10 مرداد 1396, 20:18 عصر
مشکل از اینه که باید من این رو باید لینک کنم به گردل. روی پروژه فعلی مراحل فرق میکنه. شما آشنایید با اونها؟

build.gradle پروژه خودت و build.gradle مال من برسی کن میدونم مشکل فقط اونجاست.
دوست عزیز اگه نشد پیغام خصوصی بده نمیخوام موضوع تاپیک عوض بشه.

mamadlooloo
سه شنبه 10 مرداد 1396, 20:24 عصر
سلام یک راهش اینه که یک پسورد داشته باشی و هر بار برای ثبت رکورد ، درخواستی رو به سرور ارسال کنی که پسورد رو هم داخل درخواست داشته باشه، در سمت سرور هم پسورد رو بررسی میکنی که در صورت درست بودن رکورد ثبت بشه و در غیر این صورت ثبت نمیشه.
-با فعال کردن ProGuard از کد برنامتون محافظت کنید.
-برای ارسال اطلاعت در صورت امکان از متد POST استفاده کنید و اطلاعات رو قبل از ارسال رمزنگاری کنید.

راه حل خوبیه ، ولی :

ایجاد رمز ورود تازه، دوای درد نمیتونه باشه.

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

مشکل سر اینه که یه امضا خاصی درون اپلیکیشن باشه و سرور تنها با این امضا خاص کار کنه. یه امضا مهر و موم شده. یا یه چیزی که تا اکنون به ذهنم نرسیده.

mamadlooloo
سه شنبه 10 مرداد 1396, 20:28 عصر
build.gradle پروژه خودت و build.gradle مال من برسی کن میدونم مشکل فقط اونجاست.
دوست عزیز اگه نشد پیغام خصوصی بده نمیخوام موضوع تاپیک عوض بشه.

سپاس از شما.


---------------------------------------------------------------------------

معنای واژه سپاس چیست؟ 3 + پاس ---> پاس داشتن 3 چیز

پاس 1 ---> پندار نیک
پاس 2 ---> گفتار نیک
پاس 3 ---> کردار نیک

saeidpsl
جمعه 13 مرداد 1396, 08:01 صبح
سلام خدمت همه
تونستم یه راه پیدا کنم
تو عکس زیر تست زدم که اول سیو کردم بعد میگه با موفقعیت امتیاز سیو شد بعد دکمه چک هک یعنی همون لینک که ارسال شده رو دوباره میفرسته ولی میزنه این در خواست تکرای هست و از 10 ثاینه بگذره باز چک کنه timeout نشون میده.

http://s8.picofile.com/file/8302533342/ddd.gif

در اصل چه کار میکنه اول یه strtotime("now") کد شده رو از سرور میگیره بعد تو اندروید از کد بیرون میاد اون زمان رو همراه با داده ها کد میشه میفرسته به سرور و تو دیتابیس تو تیبل request اون strtotime و ایدی یور سیو میشه که اگه اون هکر لینک رو دوباره زد بزنه نشون میده این درخواست قبلا ثبت شده و اگه دوباره زد و از 10 ثانیه گذشته باشه میزنه timeout . آدرس مثلا اینجوریه : http://192.168.1.1/webservice?data=5415435d90a48dcec4fef9eb (http://192.168.1.1/webservice?data=5415435d90a48dcec4fef9eb)
تمام فایل ها (http://s8.picofile.com/file/8302533884/url_encryption.rar.html)

Zelix KlassMaster برای Obfuscator کردن جاوا به کار میره


data پروژه جاواست که شامل APP_encryption میشه برنامه برای کد کردن و از کد در آوردن و MCrypt کلاس برای کد کردنه

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

ادرس است list.put("ip", "http://test.com/");
اینم اسم فایل وبسرویسون list.put("file", "webservice.php?");
اینم ادرسی که امتیاز سیو میشه حتما از تگ استفاده کنید مثل [dat] list.put("save_score", "action=save_score&user=[us]&pass=[ps]&score=[sc]&date=[dat]&key=71377499144");
اینم مال ادرسی که تاریخ و زمان ازش بگیرید list.put("get_time", "action=get_date&key=71377499144");

url encryption پروژه اندروید استودیو
تگها اینجا به کار میره
save_score = save_score.replace("[us]", "test");
save_score = save_score.replace("[ps]", "1234");
save_score = save_score.replace("[sc]", "200");
save_score = save_score.replace("[dat]", date);


برای ساختن فایل jar

http://s9.picofile.com/file/8302534692/DFTNKCIW0AEUHpK_jpg_large_Copy.jpg

بعد با Zelix KlassMaster فایل جار رو Obfuscator کنید بعد فایل جار رو به فولدر url encryption\app\libs انتقال بدید.

ســوال داشتیــد در خدمتـــم....

saeidpsl
شنبه 14 مرداد 1396, 10:20 صبح
یه test بزنید

mamadlooloo
شنبه 14 مرداد 1396, 18:42 عصر
یه test بزنید

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

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

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

چه راه حلی دارید ؟؟؟

saeidpsl
شنبه 14 مرداد 1396, 21:31 عصر
درود بر شما دوست خوبم که تا این اندازه به من یاری رسوندید و پیگیر بودید.
ای کاش همه افراد به کارشون همین اندازه علاقه داشته باشن.

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

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

چه راه حلی دارید ؟؟؟



هدف و ظرح شما عالیه.
کلید + لینک ها تو یه فایل ذخیره jar هستش که بعد با Zelix KlassMaster فایل جار رو Obfuscator مبهم میشه و داخل فولدر url encryption\app\libs قرار میگیره.
اینجور (http://barnamenevis.org/showthread.php?460023-Decompile-And-Anti-Decompile&p=2059492&viewfull=1#post2059492)میشه کسی نمیتونه برشگردونه خعلی خعلی خعلی خعی خعلی سخته و کارش از سی++ هم بهتره.
البته با سی++ هم میشه انجام دارد.
strtotimenow هم هک کنه چیزهای دیگه رو چه جور پیدا میکنه با این روش کد شده لینک ایده که داری برای خودت میشه درست کنی strtotimenow یه روش هست.1000 روش دیگه هم هست
دوستان عزیز یه نظری بدید لطفا!

mz6488
یک شنبه 15 مرداد 1396, 09:12 صبح
سلام
یه روشی سراغ دارم ولی تا حالا ازش استفاده نکردم.میشه در کنار اینها ازش استفاده کرد.شما میتونید امضای نرم افزار رو توی سرور ذخیره ش کنید.بعد سمت اندروید امضا رو به پارامترها اضافه کنید.سمت سرور هم امضای دریافتی رو با امضایی که سرور ذخیره شده رو چک میکنه.اگه مطابقت نداشت خطا بده.از طرفی میتونید اجرای کد php رو از طریق کتابخونه mobile detect محدود کنید طوری که کدهای شما فقط بتونه سمت موبایل اجرا بشه

Signature sig = context.getPackageManager().getPackageInfo(context .getPackageName(), PackageManager.GET_SIGNATURES).signatures[0];

negative60
یک شنبه 15 مرداد 1396, 12:07 عصر
در اصل چه کار میکنه اول یه strtotime("now") کد شده رو از سرور میگیره بعد تو اندروید از کد بیرون میاد اون زمان رو همراه با داده ها کد میشه میفرسته به سرور و تو دیتابیس تو تیبل request اون
strtotime
و ایدی یور سیو میشه که اگه اون هکر لینک رو دوباره زد بزنه نشون میده این درخواست قبلا ثبت شده و اگه دوباره زد و از 10 ثانیه گذشته باشه میزنه
timeout
. آدرس مثلا اینجوریه :
http://192.168.1.1/webservice?data=5415435d90a48dcec4fef9eb (http://192.168.1.1/webservice?data=5415435d90a48dcec4fef9eb)

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


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


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

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

saeidpsl
یک شنبه 15 مرداد 1396, 14:52 عصر
این روش فقط از ریپلی اتک جلوگیری میکنه, شما فرض کن روش انکریپت و دیکریپت توسط چیتر به دست بیاد طرف دیگه حتی به اپ اندروید هم احتیاج نداره خودش میز میسازه و برای خودش امتیاز دلخواهاش رو به ثبت میرسونه


کسی تا حالا ندیدم بتونه Zelix KlassMaster رو کداش رو برگردنه اینم بدون تعداد اندکی هستن که دیگه بتونه اون کاره باشه بعدشم انجور آدما دنبال هک برنامه کوچیک نمیرن.

saeidpsl
یک شنبه 15 مرداد 1396, 14:54 عصر
سلام
یه روشی سراغ دارم ولی تا حالا ازش استفاده نکردم.میشه در کنار اینها ازش استفاده کرد.شما میتونید امضای نرم افزار رو توی سرور ذخیره ش کنید.بعد سمت اندروید امضا رو به پارامترها اضافه کنید.سمت سرور هم امضای دریافتی رو با امضایی که سرور ذخیره شده رو چک میکنه.اگه مطابقت نداشت خطا بده.از طرفی میتونید اجرای کد php رو از طریق کتابخونه mobile detect محدود کنید طوری که کدهای شما فقط بتونه سمت موبایل اجرا بشه

Signature sig = context.getPackageManager().getPackageInfo(context .getPackageName(),PackageManager.GET_SIGNATURES).s ignatures[0];

امضای نرم افزار هک میشه.mobile detect برای این موضوع بی فایده هست.

mamadlooloo
یک شنبه 15 مرداد 1396, 17:42 عصر
امضای نرم افزار هک میشه.mobile detect برای این موضوع بی فایده هست.

اگه امضای نرم افزار به سرور فرستاده نشه، باز هم برنامه هایی مثل لاکی پچر میتونن امضا برنامه من رو هک کنن و استفاده کنن ؟؟؟

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

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

دیدگاهتون چیه دوستان ؟؟؟ درست میگم یا اشتباه میکنم ؟؟؟

negative60
یک شنبه 15 مرداد 1396, 18:29 عصر
کسی تا حالا ندیدم بتونه Zelix KlassMaster رو کداش رو برگردنه اینم بدون تعداد اندکی هستن که دیگه بتونه اون کاره باشه بعدشم انجور آدما دنبال هک برنامه کوچیک نمیرن.

اینکه شما کسی‌ رو ندیدید و چون برنامه کوچکی هست کسی‌ وقتش رو برای تحلیل برنامه‌ هدر نمیده باعث امن شدن برنامه نمی‌شه! این حرف درست نیست که چون من تا حالا کسی‌ رو ندیدم پس این راه حل درستی هست

saeidpsl
یک شنبه 15 مرداد 1396, 18:51 عصر
اینکه شما کسی‌ رو ندیدید و چون برنامه کوچکی هست کسی‌ وقتش رو برای تحلیل برنامه‌ هدر نمیده باعث امن شدن برنامه نمی‌شه! این حرف درست نیست که چون من تا حالا کسی‌ رو ندیدم پس این راه حل درستی هست
من مثال زدم . از امنیت Zelix KlassMaster (http://www.zelix.com/klassmaster/featuresStringEncryption.html) کاملا مطمئن هستم. شما از کجا میدونید که امنیت نداره ؟ حتی بانک صادرات هم داره ازش استفاده میکنه.

saeidpsl
یک شنبه 15 مرداد 1396, 19:02 عصر
در کل امنیتی و جود نداره . اگه هکر حرفه ای باشه هیچ وقت خودشو درگیر برنامه اندروید نمیکنه مستقیم میره برا هک کردن خود سرور برنامه!

Nevercom
دوشنبه 16 مرداد 1396, 17:05 عصر
این رو ببینید: https://android-developers.googleblog.com/2013/01/verifying-back-end-calls-from-android.html

دقیقاً در همین مورد صحبت کرده که چطور در سمت Back-end اطمینان حاصل کنیم که درخواست از سمت App ما میاد و نه جای دیگه.

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

saeidpsl
یک شنبه 22 مرداد 1396, 03:31 صبح
سلام به همه
یه روش جدید پیدا کردم
اونم اینه که داده هایی که خعلی مهمه سمت اندروید کد میشه بعد تو یک فایل تکس سیو میکنه بعد zipش میکنه و روش پسورد میزاره و به وب سرویس ارسال میکنه اونجا هم کار برعکس میشه زیپ رو از حالت فشرده بیرون میاد و فایل داده رو میخونه . تو بخش اندروید هم پسورد زیپ مبهم میشه به کمک Zelix KlassMaster یا هر برنامه دیگه.
دانلود (http://s8.picofile.com/file/8303584250/url_encryption.rar.html)
نظر یادتون نره!

mamadlooloo
یک شنبه 22 مرداد 1396, 13:15 عصر
نظر یادتون نره!

درود بر شما

سپاس از تلاش شما. خواهش میکنم در مورد کدها و نحوه عملکرد هر فایل بیشتر توضیح بدید. بخصوص خط 7 و 46 از فایل webservice.php که یک سری عبارت نامشخص داره.

saeidpsl
یک شنبه 22 مرداد 1396, 14:43 عصر
درود بر شما

سپاس از تلاش شما. خواهش میکنم در مورد کدها و نحوه عملکرد هر فایل بیشتر توضیح بدید. بخصوص خط 7 و 46 از فایل webservice.php که یک سری عبارت نامشخص داره.


اون بخش مال وقتی هست که هکر رشته کد شده دستکاری میکنه و رشته کد شده ناقص باشه و کامل decryption نمیشه اجازه ادامه کار رو نمیده.
هر جاش مشکل داشتی پیام خصوصی بده در خدمتم.

saeidpsl
یک شنبه 05 شهریور 1396, 23:23 عصر
با سلام خدمت همه یه کتابخونه پیدا کردم که حتی با برنامه Fiddler لینک ها پیدا نمبشه یعنی وقتی یه درخواست به وب سرویس ارسال میکنی یا برعکس لینک سایت حتی با اسنیف لینک دیده نمیشه !:متعجب:

compile 'com.loopj.android:android-async-http:1.4.9'
compile 'cz.msebera.android:httpclient:4.3.6'




RequestParams paramss = new RequestParams();
paramss.put("user", "saeid");

HttpRequest aa =new HttpRequest();
aa.get("http://192.168.1.10/json.php", paramss, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {

try {
String str = IOUtils.toString(responseBody, "UTF-8");
Toast.makeText(getApplicationContext(),str, Toast.LENGTH_SHORT).show();


} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {

}
});


class HttpRequest {
public static AsyncHttpClient syncHttpClient= new SyncHttpClient();
public static AsyncHttpClient asyncHttpClient = new AsyncHttpClient();

public static void setCookieStore(PersistentCookieStore cookieStore) {
getClient().setCookieStore(cookieStore);
}
public static void get(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
getClient().get(url, params, responseHandler);
}
public static void post(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
getClient().post(url, params, responseHandler);
}
private static AsyncHttpClient getClient()
{
if (Looper.myLooper() == null)
return syncHttpClient;
return asyncHttpClient;
}
}

Danial_abdi
سه شنبه 07 آذر 1396, 12:47 عصر
فرض کنید سرور خانه شما است . در به سمت داخل باز میشود . باید در را از سمت داخل محافظت کرد نه از بیرون. درخواست از هر راهی و هر در و پنجره ایی میاد مهم اینه از داخل سیستم محکم باشد. شما نمیتوانید همه گوشی های موبایل را امن کنید اما میتوانید سیستم خود را امن کنید.
من پیشنهاد میکنم توکن در هنگام لاگین به اپ فرستاده شود و همه درخواستهای اپ با توکن باشد. سمت سرور هم توکن اعتبارسنجی شود و همینطور بعد از یک مدت غیر فعال بود توکن remove شود.
من از یک دیدگاه لاجیک نگاه کردم . شاید راهکارهای فنی متفاوت و یا حتی متضاد با نظر من باشد.
دنیای خیلی بدی شده بدون اسلحه بیرون نرید :لبخند:

mamadlooloo
سه شنبه 05 دی 1396, 01:36 صبح
سپاس از همه دوستان

اگر روش های دیگری هم دارید، خواهش میکنم راهنمایی کنید.

پاینده باشید