۰۲-خرداد-۱۳۹۷, ۰۳:۰۶:۲۷
۰۲-خرداد-۱۳۹۷, ۱۷:۵۱:۵۶
آقا من قوانینش رو نمیدونم! من دوجا رو فیکس کردم پیام بهم داد!
با تشکر از لرد گرامی اون روش اولی که تابع exit رو NOP کردم از استاد لرد گرامی یاد گرفته بودم
حالا نمیدونم منظروتون از اینکه از طریق دیباگر باید حل بشه چیه؛
چون تابع ptrace شما وقتی برنام اجرا نشه نمیتونه دیباگر رو تشخصی بده
کد php:
0x00000640 e85bfeffff => 9090909090 0x00000640
0x00000663 75 => 74 0x00000663
کد php:
Hello
You must debug me to solve
GoodBoy
حالا نمیدونم منظروتون از اینکه از طریق دیباگر باید حل بشه چیه؛
چون تابع ptrace شما وقتی برنام اجرا نشه نمیتونه دیباگر رو تشخصی بده
۰۳-خرداد-۱۳۹۷, ۰۰:۳۹:۳۲
نقل قول: آقا من قوانینش رو نمیدونم! من دوجا رو فیکس کردم پیام بهم داد!
قانونی وجود نداشت
نقل قول: با تشکر از لرد گرامی اون روش اولی که تابع exit رو NOP کردم از استاد لرد گرامی یاد گرفته بودم
یه ویدیو آموزشی از طریق پچ کردن exit() میتونی قرار بدی ؟
که تاپیک آموزشی هم باشه ؟
نقل قول: حالا نمیدونم منظروتون از اینکه از طریق دیباگر باید حل بشه چیه؛
سورس کد و قرار میدم.
اما داخل این کرک می با استفاده از ptrace دیباگ تشخیص داد میشه.
چون فقط یک بار تابع ptrace داخل هر پروسسی اجرا میشه و برای دیباگ کردن برنامه باید از این تابع استفاده بشه.
در نتیجه وقتی من داخل برنامه ام تابع ptrace و دارم میتونم تشخیص بدم که برنامه در حال اشکال زدایی هست یا خیر.
یک متغیر سراسری داریم به اسم ch که داخل gdb هم با دستور info variables قابل مشاهده است، مقدار پیشفرض این متغیر صفر هست و داخل تابع ptrace مقدار دهی میشه و در انتهای برنامه چک میشه که اگر متغیر ch برابر با مقداری که در تابع ptrace بهش اختصاص دادیم بود رشته ی GoodBoy نمایش داده میشه.
اینم باید اضافه کنم که قبل از مقدار دهی کردن متغیر ch تابع exit اجرا میشه پس وقتی شما میخوای برنامه دیباگ کنی تابع exit اجرا میشه و دیگه متغیر ch مقدار دهی نمیشه و در نتیجه رشته ی BadBoy نمایش داده میشه
نقل قول: چون تابع ptrace شما وقتی برنام اجرا نشه نمیتونه دیباگر رو تشخصی بده
متوجه نمیشم !
مگه بدون اجرا شدن هم میشه دیباگر تشخیص داد؟
آهان منظورتون استفاده از دیس اسمبلرها هست ؟
-------------------------------------------------
من امیدوارم بودم شما از متدهای بایپس ptrace استفاده کنی ولی راه حل دیگه ای و رفتی.. (FU :))) )
سورس برنامه:
کد:
#include <stdio.h>
#include <sys/ptrace.h>
int ch = 1;
int main()
{
int offset = 0;
if (ptrace(PTRACE_TRACEME, 0, 1, 0) == 0)
{
offset = 2;
}
if (ptrace(PTRACE_TRACEME, 0, 1, 0) == -1)
{
offset = offset * 3;
}
if (offset == 2 * 3)
{
printf("Hello\nYou must debug me to solve\n");
}
else
{
printf("!! Debugger Detected !!\nGooBye\n");
exit(0);
ch = 2;
}
password();
return 0;
}
void password(){
if(ch == 2){
printf("\nGoodBoy\n");
} else {
printf("\nBadBoy\n");
}
}
آقا یه تکونی بدید خداییش منم مثل شما نصف بیشتر وقتم سرکار میرم اما به فروم و بقیه فعالیت ها هم میرسم.
ایرانویچ هم اکنون به یاری سبزتان نیازمند است
۰۳-خرداد-۱۳۹۷, ۰۱:۴۹:۰۸
نقل قول: یه ویدیو آموزشی از طریق پچ کردن exit() میتونی قرار بدی ؟برنامه رو دی اسمببلر باز کردم؛ کدهای اسمبلیش رو دیدم؛
که تاپیک آموزشی هم باشه ؟
دستوراتی که واسه فبکس کردن استفاده کردم ایناست:
کد php:
xxd -ps debug |tr -d "\n" | \
sed -e 's/e85bfeffff/9090909090/' -e "s/02750c/02740c/" | \
xxd -r -p > debug_fix_babyy
یعنی اول هگز کد رو بدست اوردم؛ بعدش اون قسمت از اسمبلی ها اپ کد ها رو که توی مرحله قبل میخواستم پچ بشه پیدا کردم و جایگزینشون کردم!
اولی که معلومه؛ کلا بجاز تابع exit نوپ کد میزاره
دومی هم بجای jne ,, je رو میزاره
-----------------------------------
نقل قول: متوجه نمیشم !
مگه بدون اجرا شدن هم میشه دیباگر تشخیص داد؟
آهان منظورتون استفاده از دیس اسمبلرها هست ؟
-------------------------------------------------
من امیدوارم بودم شما از متدهای بایپس ptrace استفاده کنی ولی راه حل دیگه ای و رفتی.. (FU :))) )
شما توی بنرامه پیام میدید که باید منو دیباگ کنی تا حل بشه؛ ولی برنامه شما کاربر رو مجاب نمیکنه که برنامه رو حتما در دیباگر اجرا کنه؛
چه انتظارات زیادی ازم داریا
من روشهای بای پس و .. بلد نیستم!! اگه بلدید سر نخ بدید بریم بخونیم ما هم یا بگیریم
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
نقل قول: اینم یادم رفت بگم بقیه بچه ها این crackme ها رو در حد خودشون و نمیبینن یا من و آدم حساب نمیکنن یا خوابیدن ؟ :))
آقا یه تکونی بدید خداییش منم مثل شما نصف بیشتر وقتم سرکار میرم اما به فروم و بقیه فعالیت ها هم میرسم.
ایرانویچ هم اکنون به یاری سبزتان نیازمند است
کاملا واضح هست گزینه وسطی و سپس گزینه اولی
حقیقت اینه که اساتید اینجا از سالهای دور درگیر همین چیزا بودند و یاد یادن و اموزش و نشوتند و جواب دادند و کلی هم اطلاعات به من و امثال من و این حرفه اضافه کردند؛ دیگه از یجایی به بعد نمیشه چون اینکار نون و اب نمیشه و شکم و سیر نمیکنه!
کجا سر کار میری؟ بلاخره مشکل انتخاب شغلت حل شد؟ شام چی میدی؟
−−−−−−−−
الان استاد DIDI میاد میزنه پودرم میکنه؛ همین مونده بود توی بخش کرک اسپم بدم
۰۳-خرداد-۱۳۹۷, ۰۲:۲۲:۱۵
۰۳-خرداد-۱۳۹۷, ۰۲:۳۱:۳۹
آره منم همین بلاگ و خوندم.
اگه میخواستم کسی نفهمه از جایی کپی کردم که اصلا سورس و نمیزاشتم یا حداقل عوضش میکردم
این همون سر نخی که میگفتی
اگه میخواستم کسی نفهمه از جایی کپی کردم که اصلا سورس و نمیزاشتم یا حداقل عوضش میکردم
این همون سر نخی که میگفتی