اول باید تبریک بگم به آقای جوکر به خاطر پیشرفتی که تو این نسخه داشتند
تکنیکهای آنتی دباگ در حد قابل قبولی بود
آقای جوکر ولی یک چیزی رو نمیشه فراموش کرد اونم WriteProcessMemory تا هست آنپک شدن برنامه شما رو به دنبال داره
اول باید تبریک بگم به آقای جوکر به خاطر پیشرفتی که تو این نسخه داشتند
تکنیکهای آنتی دباگ در حد قابل قبولی بود
آقای جوکر ولی یک چیزی رو نمیشه فراموش کرد اونم WriteProcessMemory تا هست آنپک شدن برنامه شما رو به دنبال داره
چه راه هائی برای مخفی کردن api ها سراغ دارید ؟
یک راه ساده اینه که رابط برای محاسبه آدرس api درست کنید، مثلا آدرس ها رو با یک کلید به روش RSA کد کنید بعد موقعی که میخواید یک api رو صدا کنید دیکد کنید و بعد با call ax مثلا صداش کنید. البته همیشه هم از call ax استفاده نکنید. push ax بعدش ret هم کار میکنه. مسلما بهتره روشهای فراخوانی تو جاهای متفاوت متفاوت باشه.چه راه هائی برای مخفی کردن api ها سراغ دارید ؟
بردیا جان، چرا یه آموزش MUP نمیسازی؟ اینطوری هم جوکر بیشتر متوجه میشه هم خلق الله بار علمی بیشتری پیدا میکنن...آقای جوکر ولی یک چیزی رو نمیشه فراموش کرد اونم WriteProcessMemory تا هست آنپک شدن برنامه شما رو به دنبال داره
برای مخفی کردن api بد نیست این سایت رو ببنید مثالش تو پک masm32 هم وجود داره
http://www.asmcommunity.net/board/index.php?topic=28761.0
من به اندازه بقیه دوستان وارد نیستم ولی دوست دارم ببنیم کار این پروتکتر به کجا میرسه
میشه یک مثال بزارید؟
من الان آدرس توابع را توی حافظه لود میکنم بعد موقع صدا زدن میره از آدرسی که لود شده استفاده میکنه. ولی فکر کنم در هر حال هرزمان آدرس دیکود بشه و قرار باشه API لود بشه همون اتفاق می افته .
سورس این قسمت خدمت شما:
تابع مورد نظر من اصلا توی جدول Import Table استفاده نشده و به صورت کد توی حافظه لود میشه
WPM: function(hProcess: THandle; const lpBaseAddress: Pointer;
lpBuffer: Pointer; nSize: DWORD; var lpNumberOfBytesWritten: DWORD): BOOL; stdcall;
DllHandle: DWord;
DllHandle := LoadLibraryA(PChar('kernel32.dll'));
if (DllHandle <> 0) then
begin
@WPM := GetProcAddress(DllHandle,'WriteProcessMemory');
WPM( ProcInfo.hProcess, pointer(ImageNtHeaders.FileHeader.NumberOfSections ), @OverWriteData , 13, Bytes);
نسخه 1.1.3
آپدیت شد (
الان خراب کردن اطلاعات Header فایل ، موقع لود شدن توی حافظه اضافه شد
اینطوری DumpRegion دیتا خراب را سیو میکنه ، که بعضیاش بعد از Repair هم تصحیح نمیشن.(ایشالا ، آمین ، الهی و ربی ، ..... )
( تقلب نکنید از اطلاعات فایل قبلی که بردیا آنپک کرده سوء استفاده کنید و جایگزین کنیدآ ، خودتون مقادیر را یا محاسبه کنید یا .... اصلا خودتون یک برنامه دیگه را پروتکت کنید و روش Mup بدین )
کمی مکث در حدود 3-2 ثانیه تا لود کامل برنامه براش طبیعیه ،
داره غلط اضافه میکنه )
سورسی برای دیباگ داخلی سراغ ندارید ، هرچی بیشتر در موردش دارم میخونم ، کمتر میفهمم :) یه چیزی شبیه آرمادیلو
سورسی برای Code Spliceing
سورسی برای دختری با کفشهای کتانی
سورسی برای ....
سلام:
از اینکه منو عددی حساب نکردید ممنونم.
بابا جان میشه بدون اینکه اسم یک API رو داشته باشی اونو صدا بزنی.
من اینو 4 سال پیش توی یک برنامه 2-3 کیلوبایتی دیدم.
سعی میکنم برنامشو واستون بذارم.
اولا دارم آخرین ورژن MAdCollection را (بخاطر MAdCodehook ) دانلود میکنم (11 مگه منم دیال آپ و هزارتا کار الکی دیگه :) خورد خورد دانلود میشه )جناب آقای Joker:
من چند تا راهکار اساسی دارم که شما رو از شر دامپرها نجات میده.
اول اینکه آدرس OpenProcess ویندوز رو با یک فانکشن عوض کن شبیه کاری که Hook انجام
میده و در فانکشنی که میخوای اونو جایگزین کنی نگاه کن ببین Handle برنامه درخواستی با
برنامه شما یکی هست یا نه اگه نبود اجازه بده OpenProcess کارش رو بکنه.
و دوم اینکه پروسه فرزند رو بصورت HideProcess اجرا کن .
و سوم اینکه از تکنیکهای آنتی دیباگ و آنتی تریس پیچیده استفاده کن و سعی کن اجازه ندی
برنامه با هیچ دیباگری تریس بشه.
و چهارم اینکه یه بسم الله بگو و شروع کن.
و پنجم اینکه من هم میتونم کمکتون کنم روی منم حساب کنید.
دوم مخفی کردن پروسه بود که سورسی که گذاشته بودی را دیدم ، فکر نکنم حالا حالا بتونم کدشو اضافه کنم.
سوم دارم همینکارارا میکنم دیگه....
چهارم»
پنجم : خیال کردی میتونی قسر در بری
پیوست: من به حد کافی با اسمبلی مشکل دارم ،توروخدا سختش نکن خودت اون 2-3 کیلوبایت را آنالیز کن خبرشو به زبون دلفی بهم بده
با نگارش قبلیش زیاد فرقی نمیکرد همون اشتباهات گذشته
HOOK خیلی میتونه تو سختی آنپک کمکت کنه
فردا شب یک فایل تو این زمینه میزارم شاید کمکت کنه
وقتی آدرس api رو تو حافظه ذخیره کنی، فرقی نمیکنه که با استفاده از LoadLibrary تو برنامه این کار رو بکنی یا سیستم عامل قبل اجرا این کار رو انجام بده.
من تا بحال کار دقیقی روی این موضوع نکردم ولی ایده میتونه این باشه
function CalcApiAddr(Coded: Cardinal): Cardinal; register; assemblyبعدش موقع صدا زدن
asm
mov ax, Coded
// یک مقدار عملیات ریاضی برای دکود کردن
// نتیجه تو eax قرار بگیره
end;یا روشهای غیر مستقیم دیگه برای فراخوانی یک آدرس. اینطوری دیگه آدرس حاضر و آماده یک api تو حافظه نیست که با یک تحلیل ساده، محل jmp و یا call های به اون آدرس رو بشه پیدا کرد.
asm
mov eax, CodedApiAddress
push eip
pop ebx
add ebx, 8
push ebx
push eax
jmp near @CalcApiAddr
// قرار دادن پارامترها در استک، البته نه به طرز تابلو
push eax
ret
end
نا گفته نماند این تکنیک ها جلوی BP روی حافظه رو نمیگیره و بنا براین باید به تعداد دفعات معتنا بهی از آدرس ابتدای api استفاده غیر از فراخوانی اصلی بکنید که به راحتی محلش پیدا نشه
در نهایت یک راه هم اینه که چند تا pop و pushهای اول api رو خودمون انجام بدیم و آدرس کد شده مربوط به ابتدای تابع api نباشه.
سلام:
در مورد فراخوانی یک API باید بگم اگه روی اون API ای که میخواهیم اونو صدا بزنیم یک BP بگذاریم
دیگه فرقی نداره که چه شکلی فراخوانیش کنی با هر روشی که اونو صدا بزنی Debugger روی BP
نگه میداره و براحتی میشه هر تکنیکی رو دور زد.
ولی نامید نشید یک راه خوب معرفی میکنم که با هیچ دیباگری نشه جلوی اونو گرفت!!!!!
اونم نوشته یک Driver هستش که با استفاده از اون بتونیم توی یک Process مقادیری رو نوشت مثل کاری
که WriteProcessMemory انجام میده.
دوستانی که میتونن این کار رو انجام بدن دستاشون بالا.
تمامی پروتکتورهای پرقدرت دنیا برای انجام کارهایی که باید دور از دسترس کرکرها انجام بشه
از این تکنیکها یعنی استفاده از فایلهای Driver استفاده میکنن.
بطور مثال SVKP از درایور SVKP.SYS استفاده میکنه و Themida از Oreans32 استفاده میکنه.
این فایل همون کاری رو می کنه که پروتکتور شما انجام میده ولی با تکنیکهای پیشرفته تر اگه بتونی خوب آنالیزش کنی تکنیکهای خوبی دستت میاد موفق باشید
این کار این قدر هم راحت نیست. بجز BP دسترسی به حافظه، همه باقی انواع BP رو میشه یا شناسایی کرد و یا به اشتباه انداخت. BP دسترسی رو هم هر چند نمیشه از کار انداخت ولی میشه استفاده کنندش رو اذیت کرد، با دسترسی زیاد، به نحوی که کم حوصله ها رو دودر کنه.در مورد فراخوانی یک API باید بگم اگه روی اون API ای که میخواهیم اونو صدا بزنیم یک BP بگذاریم
دیگه فرقی نداره که چه شکلی فراخوانیش کنی با هر روشی که اونو صدا بزنی Debugger روی BP
نگه میداره و براحتی میشه هر تکنیکی رو دور زد.
در ضمن استفاده از درایور هر چند خوبه ولی معایب خودش رو داره، به عنوان مثال ساده عدم تطابق ساختار apiی مستند نشده در ورژن های مختلف ویندوز هستش.
در نهایت هم که همه برنامه ها کرک میشن، مهم اینه که زمان لازم برای این کار به نسبت ارزش نرم افزار زیاد بشه و دیگه نصرفه که نرم افزار رو کرک کنند!
آقاي برديا شما فايل خود را به اينترنت اكسپلورر تزريق مي كنيد . بسياري از ويروسيابها مانند نسخه اينترپرايس مك آفي اجازه اين كار را نمي دهند . و نتيجه اين كار اين مي شود كه فايل شما اجرا نمي شود .
سلام به همه اساتید گرامی:
من یه کد آنتی BP نوشتم که پایین میزارمش که دوستان استفاده کنن.
این کد MessageBoxA رو چک میکنه اگه BP روی اون بود به شما پیغام BP پیدا شد رو میده.
شما میتونید از این تکنیک برای فراخوانی API استفاده کنید و ببینید که کرکر روی API مورد نظر شما
BP گذاشته یا نه اگه گذاشته بود که دیگه میدونید باید چیکار کنید.
بی خیال MadcodeHook شو ؟؟؟!!!
اینم آموزش آنپک کردن JOKER PROTECTOR
Adobe Flash Player رو باید نصب کنی
UnPacker Updated A Little :
ديگه حالم از درس داشت بهم ميخورد ! گفتم ببينم اينجا چه خبره انشاءالله فردا آزاد ميشوم !کد HTML:< 1.0.1 > - Fixes some headers ! 1 - SubSystem 2 - SizeOfImage 3 - Base Of Code/Data
جوکر جان، بعید میدونم این مقاله رو ندیده باشی. ولی بازهم واست می ذارم ... باشد که رستگار شوی
سلام:
اون Anti-BPX که دیروز گذاشتم یه کمی اشکال داشت.
اولا" GetProcAddress رو میشه BP بزاریم ولی با این برنامه بدون استفاده از
GetProcAddress میشه آدرس یک API رو پیدا کنید و چک کنید که BP روش هست یا نه.
دوما" این سورس راه پیدا کردن BP روی یک فانکشن داخلی از برنامه خودمان رو هم نشون
میده.
حالا یک مورد که خیلی مهمه این که اگه BP هم داشت چطوری میشه اونو بدون اینکه
Debugger برنامه رو روی BP نگه داره اجرا کرد.
راه حلش توی این سورسه.
کد CC همون 204 دسیمال هستش که به معنای int3 است.
من سعی میکنم یه کد برای خنثی کردن اون همین جا بذارم.
به امید پیروزی همه شما یا حق تا فردا.
چقدر دردسر داشت
زحمت کشیدی
برم برای آپدیت