رفتن به مطلب
  • 0

سختی دسترسی و امنیت string مبهم شده در b4a


rasool.g

سوال

سلام. b4a در حالت Release (obfuscation)

string هایی که داخل Process_Globals باشن رو تغییر میده و مبهم میکنه یا رمزنگاری میکنه

توضیحات اصلی

و اگه کد بیسیک این باشه

(متغیر استرینگ a فقط مد نظر هستش اینجا مثلا)

Sub Process_Globals

	Private xui As XUI
	
	Dim a As String = "Hello Word!" 
	
End Sub

Sub Globals

End Sub

Sub Activity_Create(FirstTime As Boolean)
	Activity.LoadLayout("Layout")
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub Button1_Click
	xui.MsgboxAsync(a, "a:")
End Sub

به این کد های جاوا تغییر پیدا مکینه

public class main extends Activity implements B4AActivity {
    public static String _v5 = "";
	...
}

public static String _process_globals() throws Exception {
        _v6 = new B4XViewWrapper.XUI();
        _v5 = vvv13(new byte[]{65, 39, -40, 89, 109, 53, -19, 1, 103, 102, -109}, 814144);
        return "";
    }

public static String _button1_click() throws Exception {
        B4XViewWrapper.XUI xui = _v6;
        B4XViewWrapper.XUI.MsgboxAsync(processBA, C0001BA.ObjectToCharSequence(_v5), C0001BA.ObjectToCharSequence("a:"));
        return "";
    }

 

دوستانی که به جاوا تسلط دارند یا تغییر-ریکامپایل apk بلند. ممنون میشم بگن دسترسی به این استرینگ تا چه حد سخت با اسون هستش؟

 

یک نفر میتونه فایل apk رو دکامپایل کنه

کد هارو تغییر بده

(همین کد msgbox رو مثلا به یک جایی یا به باتن اضافه کنه که مقدار استرینگ رو نشون بده)

public static String _button1_click() throws Exception {
        B4XViewWrapper.XUI xui = _v6;
        B4XViewWrapper.XUI.MsgboxAsync(processBA, C0001BA.ObjectToCharSequence(_v5), C0001BA.ObjectToCharSequence("a:"));
        return "";
    }

و فایل apk رو کامپایل کنه و مقدار string رو راحت ببینه و به دست بیاره؟

 

این ها کدوم و تا حد شدنی یا سخت و اسون هست بنظرتون؟

 

خود متد vvv13 و

vvv13(new byte[]{65, 39, -40, 89, 109, 53, -19, 1, 103, 102, -109}, 814144);

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

 

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

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

15 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

در ۱۴۰۰/۱۲/۲۲ در ۱۰:۲۹، محمدرضا شاهپیری گفته است:

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

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

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

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱۴۰۰/۱۲/۲۱ در 22:12، محمدرضا شاهپیری گفته است:

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

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱۴۰۰/۱۲/۲۱ در 22:12، محمدرضا شاهپیری گفته است:

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

همچین چیزی اندروید استودیو هم داره جناب شاهپیری؟

بهتر از این مثلا برای b4a یا خود جاوا کاتلین چی میشه استفاده کرد؟

(برای سخت تر کردن کپی کردن اطلاعات.. )

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

در حد یک دو ساعت اگه بتونه بازش کنه مثلا هلو بپر تو گلو ممکنه بشه دیگه برنامه

یه همچین کاربرد های منظورم هست

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱۴۰۰/۱۲/۲۴ در ۱۷:۴۱، امیرحسین قاسمی گفته است:

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

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

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱۴۰۰/۱۲/۲۱ در 22:22، rasool.g گفته است:

ادرس ها url و کلید عمومی و این جور چیز ها

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر

برای قرار دادن لینک و پسورد و از این جور قبیل چیزها باید از چ روشی استفاده بشه؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱۴۰۰/۱۲/۲۱ در ۲۳:۲۶، DexterFstone گفته است:

برای قرار دادن لینک و پسورد و از این جور قبیل چیزها باید از چ روشی استفاده بشه؟

دوستان واسه چی میخواین لینک مخفی کنید؟؟؟؟؟؟ داشتن لینک چه اهمیتی داره اصلا؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱۴۰۰/۱۲/۲۱ در 23:28، محمدرضا شاهپیری گفته است:

دوستان واسه چی میخواین لینک مخفی کنید؟؟؟؟؟؟ داشتن لینک چه اهمیتی داره اصلا؟

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

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱۴۰۰/۱۲/۲۱ در 23:30، DexterFstone گفته است:

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

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

ببینید عزیز درصورتی که api ها امن باشه و یه کاربر فقط بتونه از طریق این api اطلاعات خودشو تغییر بده که خب مشکلی نداره و فرقی نمیکنه از طریق app خودتون باشه یا از طریق مثلا postman مهم اینه که کسی نتونه اطلاعات سایر کاربران رو مشاهده یا ویرایش کنه و امنیت یعی همین. نه اینکه لینکها رو مخفی کنید که کسی نبینه که اصلا همچین چیزی غیر ممکنه چون با یه v.p.n ساده میشه فهمید یه اپ به چه سرورها و url هایی دیتا ارسال میکنه و اصلا نیازی به باز کردن فایل apk نداره

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱۴۰۰/۱۲/۲۱ در ۲۳:۲۶، محمدرضا شاهپیری گفته است:

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

برای ااطلاعات خود برنامه چیکار میشه کرد اقای شاهپیری (اطلاعات لوکال برنامه -افلاین ) بنظرتون؟

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

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱۴۰۰/۱۲/۲۱ در 23:46، محمدرضا شاهپیری گفته است:

ببینید عزیز درصورتی که api ها امن باشه و یه کاربر فقط بتونه از طریق این api اطلاعات خودشو تغییر بده که خب مشکلی نداره و فرقی نمیکنه از طریق app خودتون باشه یا از طریق مثلا postman مهم اینه که کسی نتونه اطلاعات سایر کاربران رو مشاهده یا ویرایش کنه و امنیت یعی همین. نه اینکه لینکها رو مخفی کنید که کسی نبینه که اصلا همچین چیزی غیر ممکنه چون با یه xpn ساده میشه فهمید یه اپ به چه سرورها و url هایی دیتا ارسال میکنه و اصلا نیازی به باز کردن فایل apk نداره

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱۴۰۰/۱۲/۲۱ در ۲۳:۲۶، محمدرضا شاهپیری گفته است:

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

😨 من دقیقا همین روش رو پیاده کردم به چند برنامه نویس دیگه هم apk رو فرستادم گفتم بیاین هک کنین هیچکس نتونست بعد خیال کردم امن ترین ارتباط رو بین کلاینت و سرور برقرار کردم😂

آقای شاهپیری شما همیشه میگید منطق برنامه رو سمت سرور پیاده کنین! این یعنی چی؟

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱۴۰۰/۱۲/۲۲ در ۰۳:۰۸، امیرحسین قاسمی گفته است:

😨 من دقیقا همین روش رو پیاده کردم به چند برنامه نویس دیگه هم apk رو فرستادم گفتم بیاین هک کنین هیچکس نتونست بعد خیال کردم امن ترین ارتباط رو بین کلاینت و سرور برقرار کردم😂

آقای شاهپیری شما همیشه میگید منطق برنامه رو سمت سرور پیاده کنین! این یعنی چی؟

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

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

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

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

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

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...