نمایش نتایج 1 تا 18 از 18

نام تاپیک: آیا فایل gradle قابل هک شدن است

Hybrid View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1

    نقل قول: آیا فایل gradle قابل هک شدن است

    سلام
    چطور میتونم از JNI در اندروید استودیو استفاده کنم؟
    اگر خیلی سریع بخوام بگم... البته در ویندوز و اندروید استودیو 3 به بعد
    1- دانلود NDK از سایت اندروید.
    2- دانلود LLDB ابزار دیباگ کدهای سی در اندروید استودیو .
    3- دانلود CMake برای ساخت فایل تنظیمات کامپایلر البته در نسخه های قدیمی اندروید از Android.mk , Application.mk استفاده می شد ولی با اومدن cmake کار خیلی راحتتر شده و خطا ها کمتر شده.
    4- شروع به ساخت پروژه جدید برای استفاده از jni نحوه نوشتن کد به زبان سی و سی پلاس پلاس و استفاده از کامپایلر CLANG برای ساخت لایبررهای so و نحوه استفاده در جاوا.
    برای شروع سایت اندروید رفرنس های زیادی داره برای استفاده البته باید به سی پلاس مسلط باشید.
    به هر حال برای نوشتن کد با بازدهی بالا با استفاده از سی پلاس پلاس در JNI باید با ساختارهای زبان سی آشنا باشید تا بتونید از تغییراتی که لازم در کدهایی که می نویسید برای کتابخانه ها نهایت استفاده را ببرید
    مثال در JNI باید حتما از کلاس jni.h استفاده کنید
    باید نام متدها را با استفاده از ماکرو JNICALL رجیستر کنید واین تعریف حتما باید در سمت جاوا هم تعریف بشه .
    برای اینکه بتونیدبا داده های جاوا کار کنید باید اونها را به نوع هایی که JNI تدارک دیده تبدیل کنید مثلا ما تو سی نوعی به نام byte نداریم بجای این char داریم حالا همین char با یک نوع خاص به اسم C در JNI تعریف میشه
    مثلا یک String جاوا در JNI میشه jbytearray که البته نوع نیست یک کلاس که اگر بخواهید از داده ای که بهش اشاره میکنه استفاده کنید باید از متدهایی که در JNI تعریف شده استفاده کنید به صورت مستقیم مفهوم ندارن.
    تمام متدها دو تا پارامتر اجباری دارند که یکیش *env هست که کلاسی که متدهای تبدیل داده و ارتباط با JVM را پوشش میده و پارامتر بعدی از نوع جاوا آبجکت هست.
    و خیلی موارد دیگه فعلا برای شروع مراحلی که گفتم را انجام بدید چون در حال تهیه یک آموزش تصویری از JNI و برنامه هایی که با سی نوشتم هستم که حتما تا چند روز آینده تو همین تالار میذارم تا حداقل چیز هایی که بلد هستم را به دوستان دیگه انتقال بدم

  2. #2
    کاربر دائمی آواتار nasr
    تاریخ عضویت
    آذر 1382
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره فکر هوا عشق زمین مال من است
    پست
    2,018

    نقل قول: آیا فایل gradle قابل هک شدن است

    نقل قول نوشته شده توسط farhad_shiri_ex مشاهده تاپیک
    اگر خیلی سریع بخوام بگم... البته در ویندوز و اندروید استودیو 3 به بعد
    1- دانلود NDK از سایت اندروید.
    2- دانلود LLDB ابزار دیباگ کدهای سی در اندروید استودیو .
    3- دانلود CMake برای ساخت فایل تنظیمات کامپایلر البته در نسخه های قدیمی اندروید از Android.mk , Application.mk استفاده می شد ولی با اومدن cmake کار خیلی راحتتر شده و خطا ها کمتر شده.
    4- شروع به ساخت پروژه جدید برای استفاده از jni نحوه نوشتن کد به زبان سی و سی پلاس پلاس و استفاده از کامپایلر CLANG برای ساخت لایبررهای so و نحوه استفاده در جاوا.
    برای شروع سایت اندروید رفرنس های زیادی داره برای استفاده البته باید به سی پلاس مسلط باشید.
    به هر حال برای نوشتن کد با بازدهی بالا با استفاده از سی پلاس پلاس در JNI باید با ساختارهای زبان سی آشنا باشید تا بتونید از تغییراتی که لازم در کدهایی که می نویسید برای کتابخانه ها نهایت استفاده را ببرید
    مثال در JNI باید حتما از کلاس jni.h استفاده کنید
    باید نام متدها را با استفاده از ماکرو JNICALL رجیستر کنید واین تعریف حتما باید در سمت جاوا هم تعریف بشه .
    برای اینکه بتونیدبا داده های جاوا کار کنید باید اونها را به نوع هایی که JNI تدارک دیده تبدیل کنید مثلا ما تو سی نوعی به نام byte نداریم بجای این char داریم حالا همین char با یک نوع خاص به اسم C در JNI تعریف میشه
    مثلا یک String جاوا در JNI میشه jbytearray که البته نوع نیست یک کلاس که اگر بخواهید از داده ای که بهش اشاره میکنه استفاده کنید باید از متدهایی که در JNI تعریف شده استفاده کنید به صورت مستقیم مفهوم ندارن.
    تمام متدها دو تا پارامتر اجباری دارند که یکیش *env هست که کلاسی که متدهای تبدیل داده و ارتباط با JVM را پوشش میده و پارامتر بعدی از نوع جاوا آبجکت هست.
    و خیلی موارد دیگه فعلا برای شروع مراحلی که گفتم را انجام بدید چون در حال تهیه یک آموزش تصویری از JNI و برنامه هایی که با سی نوشتم هستم که حتما تا چند روز آینده تو همین تالار میذارم تا حداقل چیز هایی که بلد هستم را به دوستان دیگه انتقال بدم
    یعنی برای اینکه ما یه String بزاریم توی فایل Gradle و کسی نتونه این رشته را ببینه این همه دردسر باید بکشیم؟
    چقدر بده این اندروید استودیو!!

  3. #3

    نقل قول: آیا فایل gradle قابل هک شدن است

    نقل قول نوشته شده توسط nasr مشاهده تاپیک
    یعنی برای اینکه ما یه String بزاریم توی فایل Gradle و کسی نتونه این رشته را ببینه این همه دردسر باید بکشیم؟
    چقدر بده این اندروید استودیو!!
    البته که نه! اصلا ربطی به گریدل فایل و غیره نداره...

  4. #4
    کاربر دائمی آواتار nasr
    تاریخ عضویت
    آذر 1382
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره فکر هوا عشق زمین مال من است
    پست
    2,018

    نقل قول: آیا فایل gradle قابل هک شدن است

    نقل قول نوشته شده توسط farhad_shiri_ex مشاهده تاپیک
    البته که نه! اصلا ربطی به گریدل فایل و غیره نداره...
    پس چی؟
    من هدفم اینه که یه String بزارم توی فایل Gradle و این رشته قابل هک کردن و دسترسی نباشه

    لطفا راهنماییم کنید چکار کنم؟

    ممنون

  5. #5
    کاربر دائمی آواتار hesam67_b
    تاریخ عضویت
    دی 1387
    محل زندگی
    مازندران
    پست
    192

    نقل قول: آیا فایل gradle قابل هک شدن است

    نقل قول نوشته شده توسط nasr مشاهده تاپیک
    پس چی؟
    من هدفم اینه که یه String بزارم توی فایل Gradle و این رشته قابل هک کردن و دسترسی نباشه

    لطفا راهنماییم کنید چکار کنم؟

    ممنون
    دوست عزیز شما نمیتونی string ذخیره کنی داخلش چون دسترسی نخواهی داشت.
    از توابع رمزنگاری استفاده کن و رشته مورد نظر رو رمزگذاری کن تا کمی سخت تر بشه. یا از راهنمایی دوستمون برای ذخیره کردن string استفاده کن.

  6. #6
    کاربر دائمی آواتار nasr
    تاریخ عضویت
    آذر 1382
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره فکر هوا عشق زمین مال من است
    پست
    2,018

    نقل قول: آیا فایل gradle قابل هک شدن است

    نقل قول نوشته شده توسط hesam67_b مشاهده تاپیک
    دوست عزیز شما نمیتونی string ذخیره کنی داخلش چون دسترسی نخواهی داشت.
    از توابع رمزنگاری استفاده کن و رشته مورد نظر رو رمزگذاری کن تا کمی سخت تر بشه. یا از راهنمایی دوستمون برای ذخیره کردن string استفاده کن.
    چرا دسترسی ندارم؟
    من الان این کار را میکنم و دسترسی هم دارم، فقط میخوام کسی نتونه از طریق فایل APK و هک کردن به این رشته دشت پیدا کنه

    buildTypes
    { debug {
    minifyEnabled true
    useProguard false
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    testProguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguardTest-rules.pro'



    buildConfigField "String", "DBName", '"MyDB"'
    buildConfigField "String", "DBUserName", '"DBUser"'
    buildConfigField "String", "DBPass", '"123456@Q"'


    }


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

    String db = BuildConfig.DBName; 
    String username = BuildConfig.DBUserName;
    String password = BuildConfig.DBPass;

  7. #7

    نقل قول: آیا فایل gradle قابل هک شدن است

    نقل قول نوشته شده توسط nasr مشاهده تاپیک
    چرا دسترسی ندارم؟
    من الان این کار را میکنم و دسترسی هم دارم، فقط میخوام کسی نتونه از طریق فایل APK و هک کردن به این رشته دشت پیدا کنه

    buildTypes
    { debug {
    minifyEnabled true
    useProguard false
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    testProguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguardTest-rules.pro'



    buildConfigField "String", "DBName", '"MyDB"'
    buildConfigField "String", "DBUserName", '"DBUser"'
    buildConfigField "String", "DBPass", '"123456@Q"'


    }


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

    String db = BuildConfig.DBName; 
    String username = BuildConfig.DBUserName;
    String password = BuildConfig.DBPass;
    دوست گرامی البته که می تونید از کلاس های گریدل استفاده کنید و تا حدی هم روش خوبی برای وقتی که برنامه دی کامپایل میشه حداقل به راحتی نمی تونن به این تنظیمات دسترسی داشته باشند.
    خوب بالاخره که شما باید اون تنظیمات را استخراج کنید و ازشون استفاده کنید و برای استفاده به هرحال باید uniform resource locator URL شما حتما به صورت رشته استاندارد به سرویس http انتقال بدید که در اینجا برنامه هایی که برای اسنیف کردن هستند به راحتی این URL ها را استخراج میکنن (یعنی حتی نیازی به دی کامپایل هم نیست ) و اگر دیتا هایی که در URL ها ارسال میکنید حساس هستند می تونید در سمت اندروید درهم سازی کنید و سمت سرور هم بخونید البته حتما باید از یک روش درهم سازی استفاده کنید البته اگر احتیاج دارید که سمت سرور دیکریپت شده دیتاها را داشته باشید.
    به طور مثال کلمه عبور را در نظر بگیرید می تونید سمت اندروید درهم سازی کنید و همینطور هم در سرور ذخیره کنید و هربار رمز را دریافت کنید و درهم سازی کنید و با دیتا سرور مقایسه کنید یعنی دیگه نیازی به روش بالعکس در سرور نباشه.
    اگر هم که دیتاهایی که دارید خیلی حساس هستند که اونوقت فقط باید از سوکت استفاده کنید وب سرویس ها را فراموش کنید می تونید یک سرور سوکت که سمت سرور فعال هست دیتا را به صورت رمز شده ارسال کنید و سمت سرور هم این داده ها را دریافت کنید در برنامه نویسی سوکت دیگه به راحتی نمیتونن پورت شما را اسنیف کنند به این علت که وقتی یک سوکت در سمت مشتری باز میشه سیستم عامل به برنامه دیگه ای اجازه دسترسی به هیچ برنامه دیگه ای رو نمیده که اون پورت را گوش کنند به همین علت بسیار با امنیت خواهد بود کاری که تمام برنامه های شبکه های اجتماعی الان انجام میدن.

  8. #8

    نقل قول: آیا فایل gradle قابل هک شدن است

    نقل قول نوشته شده توسط nasr مشاهده تاپیک
    پس چی؟
    من هدفم اینه که یه String بزارم توی فایل Gradle و این رشته قابل هک کردن و دسترسی نباشه

    لطفا راهنماییم کنید چکار کنم؟

    ممنون
    برای این کار هم همون گریدل خوب هست !

    buildTypes {
    def serverUrl = '"' + (System.getenv("SERVER_URL")?: "http://default.fallback.url.com")+'"'
    debug{
    buildConfigField "String", "SERVER_URL", serverUrl
    }
    release {
    minifyEnabled true
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    buildConfigField "String", "SERVER_URL", serverUrl
    }
    }

    خوب در این حالت بازهم این property ها در یک فایل به نام buildConfig.java ذخیره میشه که بازهم به راحتی قابل دی کامپایل هستش همونطور که در بالا هم عرض کردم شاید خود فایل build.gradle پروژه دی کامپایل نشه ولی پراپرتی های استفاده شده قابل دسترس هستند.
    پس این روش هم خیلی قابل اعتماد نیست.
    یکی از روشهای مقابله با هک برنامه ها استفاده از لایبررهای استاتیک مثل DLL در ویندوز SO در اندروید هست. پس می توان دیتا های حساس را در لایبرری ذخیره و استفاده کرد البته به غیر از URL ها که ذخیره اونها در لایبرری مفید فایده نخواهد بود.
    بستگی به حساسیت برنامه شما داره !
    به هرحال...
    1- برنامه های اندروید فوق العاده شکننده هستند و به راحتی قابل کامپایل (اصولا تمامی زبان هایی که به یک زبان میانی تفسیر می شوند به راحتی قابل کامپایل هستند این نقطه ضعف را در سی شارپ هم وجود داره ).
    2- برای امن کردن برنامه ها باید از تکنیک هایی که در برنامه نویسی اندروید هست استفاده کرد مثل JNI - در هم سازی سورس کد - استفاده از پکیچ های متفاوت در سورس - استفاده از تکنیکهای SOLID برای سخت تر شدن پروسه مهندسی معکوس.
    3- استفاده از زبانهای چند رگه برای ساخت برنامه های اندرویدی مثل Qt-Qml , ReactJS که خوب استفاده از این برنامه ها هم چالش های خودش را داره.
    4- استفاده از ابزارهای سایت هایی که برای همین منظور خدمات میدن.

    به نظر من در این برهه کمتر کسی هست که دنبال سورس کد برنامه خاصی باشه وقتی یک سایتی مثل StackOverFlow هست شاید دنبال اطلاعات باشند که اونهم راه های زیادی برای مقابله وجود داره.
    آخرین ویرایش به وسیله farhad_shiri_ex : دوشنبه 25 تیر 1397 در 16:57 عصر

  9. #9
    کاربر دائمی آواتار nasr
    تاریخ عضویت
    آذر 1382
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره فکر هوا عشق زمین مال من است
    پست
    2,018

    نقل قول: آیا فایل gradle قابل هک شدن است

    نقل قول نوشته شده توسط farhad_shiri_ex مشاهده تاپیک
    برای این کار هم همون گریدل خوب هست !

    buildTypes {
    def serverUrl = '"' + (System.getenv("SERVER_URL")?: "http://default.fallback.url.com")+'"'
    debug{
    buildConfigField "String", "SERVER_URL", serverUrl
    }
    release {
    minifyEnabled true
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    buildConfigField "String", "SERVER_URL", serverUrl
    }
    }

    خوب در این حالت بازهم این property ها در یک فایل به نام buildConfig.java ذخیره میشه که بازهم به راحتی قابل دی کامپایل هستش همونطور که در بالا هم عرض کردم شاید خود فایل build.gradle پروژه دی کامپایل نشه ولی پراپرتی های استفاده شده قابل دسترس هستند.
    پس این روش هم خیلی قابل اعتماد نیست.
    یکی از روشهای مقابله با هک برنامه ها استفاده از لایبررهای استاتیک مثل DLL در ویندوز SO در اندروید هست. پس می توان دیتا های حساس را در لایبرری ذخیره و استفاده کرد البته به غیر از URL ها که ذخیره اونها در لایبرری مفید فایده نخواهد بود.
    بستگی به حساسیت برنامه شما داره !
    به هرحال...
    1- برنامه های اندروید فوق العاده شکننده هستند و به راحتی قابل کامپایل (اصولا تمامی زبان هایی که به یک زبان میانی تفسیر می شوند به راحتی قابل کامپایل هستند این نقطه ضعف را در سی شارپ هم وجود داره ).
    2- برای امن کردن برنامه ها باید از تکنیک هایی که در برنامه نویسی اندروید هست استفاده کرد مثل JNI - در هم سازی سورس کد - استفاده از پکیچ های متفاوت در سورس - استفاده از تکنیکهای SOLID برای سخت تر شدن پروسه مهندسی معکوس.
    3- استفاده از زبانهای چند رگه برای ساخت برنامه های اندرویدی مثل Qt-Qml , ReactJS که خوب استفاده از این برنامه ها هم چالش های خودش را داره.
    4- استفاده از ابزارهای سایت هایی که برای همین منظور خدمات میدن.

    به نظر من در این برهه کمتر کسی هست که دنبال سورس کد برنامه خاصی باشه وقتی یک سایتی مثل StackOverFlow هست شاید دنبال اطلاعات باشند که اونهم راه های زیادی برای مقابله وجود داره.

    آقا ضمن تشکر فراوان از شما
    میشه لطفا در مورد این خط یه توضیحی بدید
    چیه و چطور باید ازش استفاده کنیم و چه دلیلی داره که از این استفاده بشه
    def serverUrl =  '"' + (System.getenv("SERVER_URL")?: "http://default.fallback.url.com")+'"'


    ممنون

تاپیک های مشابه

  1. پاسخ: 2
    آخرین پست: چهارشنبه 09 اسفند 1391, 19:10 عصر
  2. پسورد بانک اطلاعاتی اوراکل قابل هک شدن است
    نوشته شده توسط AminSobati در بخش SQL Server
    پاسخ: 5
    آخرین پست: جمعه 21 اردیبهشت 1386, 18:57 عصر
  3. آیا فایل بانک اطلاعاتی بزرگ مشکل ساز است یا خیر ؟
    نوشته شده توسط MOHSEN731 در بخش برنامه نویسی در Delphi
    پاسخ: 6
    آخرین پست: جمعه 19 تیر 1383, 14:20 عصر
  4. با هک شدن سایتتون ایا اطلاعات ما لو رفته اند ؟
    نوشته شده توسط ilovelinux در بخش امنیت در شبکه
    پاسخ: 6
    آخرین پست: سه شنبه 23 دی 1382, 10:04 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •