????? ???


مهمان گرامی، خوش‌آمدید!
شما قبل از این که بتوانید در این انجمن مطلبی ارسال کنید باید ثبت نام کنید.


  

گذرواژه‌
  





جستجوی انجمن‌ها

(جستجوی پیشرفته)

آمار انجمن
» اعضا: 149,319
» آخرین عضو: Alireza2001
» موضوعات انجمن: 23,697
» ارسال‌های انجمن: 183,691

آمار کامل

 
Question نصب fluxion از github روی linux kali
ارسال کننده: crafcrab - امروز ۱۳:۱۳:۵۸ - پاسخ (3)

سلام دوستان 
من میخوام fluxion را روی linux kali نصب کنم
ترمینال باز میکنم و دستور زیر رو تایپ میکنم:
git clone https://github.com/deltaxflux/fluxion.git

بعد از من یوزر و پسورد سایت
git
خودم رو میخواد که بهش میگم
ولی اررو میده
remote: Repository not found.
fatal: repository 'https://github.com/deltaxflux/fluxion.git/' not found

عکسش رو هم پیوست کردم

یک نکته دیگه این هست که من kali linux رو با VMware اجرا میکنم

چطوری نصبش کنم؟



فایل‌(های) پیوست شده بندانگشتی (ها)
   
چاپ این مطلب ارسال این مطلب به یک دوست

  The Holy Book of X86
ارسال کننده: nImaarek - دیروز ۱۷:۵۷:۲۷ - بدون پاسخ

این کتاب به مررور و آموزش معماری x86 از دید یک مهندسی معکوس و تحلیلگر بدافزار یا هکر..

نقل قول: This book tends to overview and teach x86 subjects in the eyes of a reverse engineer, malware analyst or a  hacker. We're not going to teach you how to build an OS or other subjects that are not related to those  mentioned above.


فهرست:

کد:
Volume 1: Pure Assembly
Introduction to Intel x86 Assembly
Learn the most frequently used assembly instructions and their conventions
Reverse Engineer simple binaries
Control structures and loops
Write simple applications in pure assembly

Volume 2: Internals
Section 1: Raw Intel Architecture
Chapter 0x01: Introduction to Intel x86 Architecture
Chapter 0x02: Segmentation
Chapter 0x03: Paging
Chapter 0x04: Cache Control
Chapter 0x05: Interrupts and Exceptions

Section 2: Windows Internals
Chapter 0x06: Exploring PE files

Section 3: Linux Internals

لینک:
کد:
https://github.com/Captainarash/The_Holy_Book_of_X86



فایل‌(های) پیوست شده
.pdf   book-vol-2.pdf (اندازه: 3.18 MB / تعداد دفعات دریافت: 0)
چاپ این مطلب ارسال این مطلب به یک دوست

  WIN64 Driver Development Basic Tutorial
ارسال کننده: nImaarek - دیروز ۱۷:۴۳:۲۰ - بدون پاسخ

این مقاله شامل موضوعات زیر است :

کد:
0.Begin
|-Hardware preparation
|-Configure environment of driver development
------------------------------
1.HelloWorld In Kernel-Mode
|-Configure environment of driver testing
|-Compile and load kernel-mode HelloWorld
------------------------------
2.Basic Code
|-Basic rule of WIN64 kernel-mode programming
|-Communication between EXE and SYS
|-Use memory in kernel-mode
|-Use string in kernel-mode
|-File operation in kernel-mode
|-Registry operation in kernel-mode
|-Process/Thread operation in kernel-mode
|-Other common code
------------------------------
3.Kernel-Mode Hook And Unhook
|-SYSCALL,WOW64 and Compatibility Mode
|-Disable WIN7 PatchGuard
|-Structure of System Services Descriptor Table
|-SSDT HOOK and UNHOOK
|-SHADOW SSDT HOOK and UNHOOK
|-INLINE HOOK and UNHOOK
------------------------------
4.Monitor Process Behavior Without Hook
|-Monitor Process/Thread startup and exit
|-Monitor Load module (DLL and SYS)
|-Monitor Registry operation
|-Monitor File operation
|-Monitor Process/Thread handle operation
|-Monitor File access by object notify
|-Monitor Internet access
|-Monitor Time change
------------------------------
5.Some Stuff
|-Use ASM code in driver
|-DKOM hide/protect process
|-Enumerate and hide kernel module
|-Kill process by PspTerminateProcess
|-Read/Write process memory enforcement
|-Enumerate message hook
|-Unlock file
|-Preliminary exploration on PE32+ file
------------------------------
6.User-Mode Hook And Unhook
|-Inject DLL to system process
|-RING3 INLINE HOOK and UNHOOK
|-RING3 EAT HOOK and IAT HOOK
------------------------------
7.Anti Notify And Callback
|-Enumerate and Delete CreateProcess/CreateThread notify
|-Enumerate and Delete LoadImage notify
|-Enumerate and Delete Registry callback
|-Enumerate and Anti MiniFilter
|-Enumerate and Delete Object notify

تنها مشکل این آموزش اینکه به زبان چینی هست و شما باید از یه مترجم کمک بگیرید تعجب - بهینه شده برای ورژن جدید

.rar   code.rar (اندازه: 4.16 MB / تعداد دفعات دریافت: 8)  

چاپ این مطلب ارسال این مطلب به یک دوست

  پیش نیاز برای وارد شدن به دنیای آنپک
ارسال کننده: nImaarek - دیروز ۱۷:۰۹:۳۷ - پاسخ (3)

سلام،

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

چاپ این مطلب ارسال این مطلب به یک دوست

  اجرای کد مخرب با فایلهای پاور پوینت
ارسال کننده: babyy - ۲۵-مرداد-۱۳۹۶ ۱۷:۳۵:۳۹ - پاسخ (2)

سلام

این کد بهره برداری هست که یک فایل ppsx آلوده رو ایجاد میکنه؛ که بعد از اجرا توسط اون میتونید کدها و فایلهای اجرایی خودتون و .. رو اجرا کنید


کد اولی ایشون هستند:
https://github.com/IranLed/ppsx-file-generator


کد دومی که بهتر و شیک تر هست؛ و با متااسپلویت توضیح داده که چکار کنید این هست:
https://github.com/IranLed/CVE-2017-0199


این هم مربطو به متا اسپلویت:
https://github.com/rapid7/metasploit-fra...ssues/8220

چاپ این مطلب ارسال این مطلب به یک دوست

  IDA Pro 6.8
ارسال کننده: nImaarek - ۲۵-مرداد-۱۳۹۶ ۰۹:۴۲:۵۰ - پاسخ (1)

سلام،

امروز تو یکی از فروم های RE ورژن 6.8 دیس اسمبلر IDA قرار دادن..


کد:
http://www99.zippyshare.com/v/XWkDNIXO/file.html

لینک مستقیم از سرور خودم :|
http://78.46.213.135/IDAPRO68.zip

چاپ این مطلب ارسال این مطلب به یک دوست

  مشکل در کرک یک نرم افزار خارجی که قویاً پروتکت شده
ارسال کننده: journalist - ۲۴-مرداد-۱۳۹۶ ۱۹:۲۸:۵۸ - بدون پاسخ

سلام خدمت دوستان عزیز
من تازه با این فروم آشنا شدم و احساس کردم کسانی هستن که بتونن به من در این زمینه کمک کنن
راستش من یه نرم افزار خارجی ( کشور مصر ) دارم که برای اجرای فایلِ نصب ، به سریال احتیاح داره و حتما باید موقع نصب به اینترنت متصل باشه
یه نسخه دیگه از این نرم افزار دارم که فکر کنم یه قفل USB داره ولی من اون قفل رو ندارم
میتونم هر دو نسخه را در صورت نیاز در اینجا قرار بدم

کسی میتونه برای کرکش به من کمک کنه؟؟؟
البته بگم که حجمش حدود 32 مگابایته و قبلن به یه کرکر حرفه ای دادمش اما نتونست کاری کنه

چاپ این مطلب ارسال این مطلب به یک دوست

  ویژوال اسمبلی
ارسال کننده: babyy - ۱۷-مرداد-۱۳۹۶ ۲۳:۲۸:۱۹ - بدون پاسخ

با این برنامه به راحتی میتونید gui ایجاد کنید و کدهاتون رو در یک محیط ویژوال بنویسید! اونم با زبان اسمبلی

محیطش بسیار بسیار شبیه ویژوال بیسیک 6 دوست داشتنی هستش؛
زبان اسمبلی هم مهم نیست؛ با asmc fasm goasm jwasm masm poasm uasm کارمیکنه؛

خیلی برنامه جالبی هستش


[تصویر:  ObjEng.gif]


سایت:
http://www.easycode.cat/English/

دانلود:
http://www.easycode.cat/English/Download.htm

نحوه نصب:
فایل رو دانلود کنید؛
راست کلیلک کنید و propertis رو بزنید؛ و گزینه unblock رو بزنید
از حالت فشرده خارج کنید؛ 
پوشه رو به محلی میخوایین کپی کنید
برید به پوشه easycode و فایل setting.exe رو اجرا کنید  (تحت ادمین)
و بعدش برید به پوشه bin و فایل easycode رو اجرا کنید؛
و لذت ببرید خنده بلد − بهینه شده برای ورژن جدید


پیش نیاز ها:
باید اسمبلرتون رو بهش معرفی کنید


پس نیاز ها:
بعد اینکه برنامه رو خواستید کامپایل کنید باید اون پیش نیازها رو بهش معرفی کنید؛ خودش یک صفحه میاره که تنظیمات رو انجام بدید و . . .


دستم درد نکنه خنده بلد − بهینه شده برای ورژن جدید خنده بلد − بهینه شده برای ورژن جدید


--
اسمبلی ویژوال gui محیط گرافیکی بیسیک
ویندوز

چاپ این مطلب ارسال این مطلب به یک دوست

  هک گوشی اندروید "سامسونگ"
ارسال کننده: ***setareh*** - ۱۷-مرداد-۱۳۹۶ ۱۰:۵۷:۰۱ - پاسخ (1)

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

چاپ این مطلب ارسال این مطلب به یک دوست

  تفاوت بین برنامه‌نویس، هکر و توسعه دهنده
ارسال کننده: Ghoghnus - ۱۴-مرداد-۱۳۹۶ ۲۳:۰۵:۴۰ - بدون پاسخ

معمولا بحث و گفتگوی زیادی بر سر تفاوت میان برنامه‌نویس، هکر و توسعه دهنده وجود دارد. در این مطلب تلاش شده تا حد امکان توضیحات کاملی ارائه شود.

یک برنامه‌نویس کسی است که می‌تواند مشکلات را با نوشتن ماهرانه کد‌های کامپیوتر بر طرف کند. او می‌تواند مهارت‌های زیادی در سطوح مختلف داشته باشد – از تنها داشتن توانایی برنامه‌نویسی عمومی تا یک معجزه‌گر در همه زبان‌ها.
یک هکر کسی است که چیزی را می‌سازد. در این متن، کسی است که با برنامه‌نویسی کامپیوتر چیزی را می‌سازد. این تعریف اصلی و خالص این واژه است. به عنوان مثال: شما ایده‌ای دارید و چیزهایی را با هم ادغام می‌کنید و آن ایده را پیاده‌سازی می‌کنید. همچنین کسانی که کدها را به گونه‌ای تغییر می‌دهند که عملکرد آن به کلی تغییر می‌کند نیز هکر محسوب می‌شوند.
یک توسعه‌دهنده برنامه‌نویسی است که به طور رسمی آموزش داده شده باشد. آن‌ها تنها مشکلات را رفع نمی‌کنند و چیزهای جدید نمی‌سازند، بلکه این کار را همزمان با طراحی، نگهداری، مقیاس دهی، امنیت و … انجام می‌دهد.
به طور خلاصه هر سه کدنویسی می‌کنند. برنامه‌نویس کسی است که مشکلی را برطرف می‌کند. هکر کسی است که می‌سازد/تعمیر می‌کند و توسعه‌دهنده کسی است که نه تنها مشکلات را بر طرف می‌کند بلکه این کار را به صورت ساخت یافته و منظم به گونه‌ای که در آموزش‌های رسمی یاد گرفته انجام می‌دهد.

روابط
هر کسی می‌تواند مجموعه‌ای از این ۳ باشد. آن‌ها به این گونه با هم در ارتباط هستند:
  • همه هکرها و توسعه‎‌دهنده‌ها برنامه‌نویس هستند.
  • بسیاری از برنامه‌نویس‌ها و حتی توسعه‌دهنده‌ها به اندازه کافی خلاق نیستند که به عنوان هکر در نظر گرفته شوند.
  • بسیاری از برنامه‌نویس‌ها و حتی هکرها به اندازه کافی تحصیلکرده و با تجربه نیستند که به عنوان توسعه دهنده در نظر گرفته شوند.
در حالت ایده‌آل، یک نفر می‌تواند هر ۳ آن‌ها باشد. به اندازه کافی خلاق که به عنوان هکر در نظر گرفته شود و به اندازه کافی تحصیلکرده و با تجربه که یک نرم‌افزار را طراحی کند.
اما حتی اگر خیلی خلاق نباشید و/یا به اندازه کافی تحصیلکرده نباشید و/یا تجربه کافی برای ساخت یک برنامه بزرگ را نداشته باشید، شما باید به خودتان افتخار کنید که برنامه‌نویس هستید. بر طرف کردن مشکلات با نوشتن کد خود یک توانایی بزرگ است.
نکات
  1. “کدنویس” معادل برنامه‌نویس است.
  2. هک کردن گاهی نه همیشه به معنی کیفیت پایین است. به این خاطر که این کار معمولا با خلاقیت مهار نشده‌‌ای همراه است که باعث می‌شود کار به خوبی انجام نشود. در صورتی که هکر توسعه دهنده باشد یا دستی در طراحی و … داشته باشد، پس از پایان کار، به ناچار برمی‌گردد و برنامه را بهبود می‌دهد.
  3. تصمیم‌گیری این که چه کسی هکر است و چه کسی نیست بحث بر انگیز است. اکثریت توافق دارند که برای هکر بودن ۱) نیاز دارید که یک یا تعداد بیشتری محصول که به نظر افراد مفید است تولید کرده باشید، و ۲) از نظر بقیه هکرها به عنوان یک هکر شناخته شوید.
  4. در دنیای امنیت، هکر همچنین معنی‌های دیگری دارد. برای عموم مردم معمولا کسی است که اشکالات سیستم را متوجه می‌شود و می‌تواند کنترل امنیتی ‌آن‎ را مختل کند. در ردیف بالای امنیتی، کسی است که نرم‌افزار و ابزار‌های امنیتی برای استفاده سایرین تولید می‌کند.
  5. در فرهنگ عام، هکر کسی است که جرایم یارانه‌ای مرتکب می‌شود. در چارچوب دنیای امنیت، کسی که چنین جرایمی را انجام می‌‍دهد به عنوان ” حمله کننده ” شناخته می‌شود.
  6. اریک ریموند، برنامه‌نویس برجسته و شخصیت شناخته شده در جامعه کامپیوتر، هکر را به این صورت معنی می‌کند: ” یک شخصیت باهوش، خلاق و روشن فکر که از حل کردن مشکلات، یادگیری، اشتراک گذاری دانش لذت می‌برد.”
  7. “مهندس نرم‌افزار” با توسعه دهنده هم معنی است. که بر نوعی از آموزش مفاهیم اصلی از مهندسی نرم‌افزار، طراحی و … دلالت می‌کند.

چاپ این مطلب ارسال این مطلب به یک دوست

  نرم افزار جایگزین
ارسال کننده: jjafari47 - ۱۱-مرداد-۱۳۹۶ ۱۵:۲۰:۵۳ - پاسخ (2)

سلام دوستان چرا نرم افزار تیم ویوور کار نمیکنه
این مشکل دایمی هستش
میشه ی نرم افزار جایگزین معرفی کنید ؟

چاپ این مطلب ارسال این مطلب به یک دوست

  پروژه و سروس برنامه ی ExeInside (Parse a PE)
ارسال کننده: nImaarek - ۱۰-مرداد-۱۳۹۶ ۲۳:۱۳:۵۲ - بدون پاسخ

سلام،

این برنامه بسیار شبیه Dependcy Walker که میاد فایل فرمت های PE مثل exe ،dll و ocx پارس میکنه و توابع Import و Export نمایش میده..

اطلاعات بیشتر عینک افتابی − بهینه شده برای ورژن جدید



فایل‌(های) پیوست شده
.zip   exe_inside.zip (اندازه: 71.15 KB / تعداد دفعات دریافت: 3)
چاپ این مطلب ارسال این مطلب به یک دوست

  Fake Signature
ارسال کننده: nImaarek - ۱۰-مرداد-۱۳۹۶ ۲۲:۲۱:۰۴ - پاسخ (1)

سلام،

امروز تو فروم p30download یه مطلب خوندم در رابطه با اینکه PE Scanner ها با این روش اطلاعات غلط میدن خواستم بدونم چطوری این کار میکنن ؟ مثلا UPX تو PE سکشن اضافه میکنه به اسم UPX حالا من اگه همچنین کاری بکنم یعنی سکشن به اسم UPX درست کنم برنامه ی من دچار مشکل نمیشه ؟

لینک مطالب  گیج - بهینه شده برای ورژن جدید
یک
دو
سه

چاپ این مطلب ارسال این مطلب به یک دوست

  تحلیل پویای یک بدافزار در بستر لینوکس
ارسال کننده: nImaarek - ۱۰-مرداد-۱۳۹۶ ۲۲:۱۵:۳۳ - بدون پاسخ

سلام،
این لینک به وبلاگه خودمه و ترجمه هست...
لینک به مطلب


کلمات کلیدی:
اسنیف wireshark تحلیل بد افزار strace آنالیز لینوکس شبکه

چاپ این مطلب ارسال این مطلب به یک دوست

  تحلیل آسیب پذیری content injection vulnerability in wordpress
ارسال کننده: nImaarek - ۱۰-مرداد-۱۳۹۶ ۲۲:۱۴:۳۹ - بدون پاسخ

سلام،
این لینک به وبلاگه خودمه و ترجمه هست البته یکم قدیمی شد... قلب عشق - بهینه شده برای ورژن جدید
لینک به مطلب



کلمات کلیدی:
آسیب پذیری وردپرس تزریق محتویات وبلاگ

چاپ این مطلب ارسال این مطلب به یک دوست

  Introduction to Windows Kernel Exploitation
ارسال کننده: nImaarek - ۱۰-مرداد-۱۳۹۶ ۲۲:۱۱:۴۹ - پاسخ (1)


میگم یه وقت مشکلی نداره که لینک از سایت دیگه میزارم؟
@Baby ؟

چاپ این مطلب ارسال این مطلب به یک دوست

  Reversing Malware: CoinMiner
ارسال کننده: nImaarek - ۰۸-مرداد-۱۳۹۶ ۲۰:۱۰:۰۴ - پاسخ (4)

کد:
https://secrary.com/ReversingMalware/CoinMiner

چاپ این مطلب ارسال این مطلب به یک دوست

  Inject All the Things
ارسال کننده: nImaarek - ۰۸-مرداد-۱۳۹۶ ۰۰:۴۶:۲۳ - بدون پاسخ

سلام،

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

7 تکنیک مختلف تزریق DLL که برای هر دو 32 و 64 بیت کار میکند را در یک پروژه ویژوال استودیو (به زبان سی) موجود میباشد که برای دانلود آن میتوانید به این لینک سری بزنید:

کد:
https://github.com/fdiskyou/injectAllTheThings

[تصویر:  screen.png]


تزریق DLL اساسا روند وارد کردن یا تزریق کد به یک فرایند در حال اجرا است.

میتوان کد را به صورتهای هر فایل assembly ،shellcode ،PE و غیره به فرآیند تزریق کرد حالا چرا باید از DLL استفاده کرد؟
 چون DLL های مورد نیاز در زمان اجرا بارگذاری می شوند (مثل libs مشترک در یونیکس). در این پروژه تنها از DLL استفاده شده است.

همچنین در نظر داشته باشید که برای شروع بازی با حافظه فرایندهای دیگر نیاز به یک سطح دسترسی مناسب داریم، با این حال درباره فرایندهای محافظت شده و سطوح امتیاز (privilege levels) ویندوز صحبت نمی کنم این یک موضوع کاملا متفاوت است.

همانطور که قبلا اشاره شد از تکنیک تزریق DLL در راه های قانونی هم استفاده میشود. به عنوان مثال، آنتی ویروس ها از این تکنیک برای قرار دادن قلاب ها (hooks) در همه ی فرایندهای در حال اجرا در سیستم استفاده میکنند با این تکنیک آنتی ویروس ها هر پروسه را نظارت میکنند. همچنین اهداف مخربی هم وجود دارد. یک روش رایج که اغلب مورد استفاده قرار می گیرد تزریق به فرآیند "lsass" است تا هش های رمز عبور دریافت شود.

DLL ها از اولین نسخه ی ویندوز وجود داشتند و API های ویندوز داخل فایل های DLL هستند که مهمترین آنها Kernel32.dll (که شامل توابع برای مدیریت حافظه، فرآیندها و موضوعات است)، User32.dll (توابع رابط کاربر) و GDI32.dll (توابع برای طراحی گرافیک و نمایش متن) هستند و همچنین API های مختلفی برای پیاده سازی تکنیک تزریق DLL وجود دارد.
شکل زیر روند تزریق DLL را نمایش میدهد:

[تصویر:  diagram.png]
همانطور که میبینید تزریق DLL در چهار مرحله انجام میشود:

Attach to the target/remote process
Allocate memory within the target/remote process
Copy the DLL Path, or the DLL, into the target/remote process memory
Instruct the process to execute the DLL
تمام این مراحل با فراخوانی یک مجموعه خاص از توابع API انجام می شود. هر تکنیک نیاز به نصب خاصی دارد که هر تکنیک ضعف ها و مزیت های خاص خودش را دارد.
ما گزینه های متعددی برای اجرای DLL در یک پروسه داریم که شایع ترین آنها استفاده از توابع CreateRemoteThread و NtCreateThreadEx است. با این حال، امکان انتقال DLL به عنوان پارامتر به این توابع وجود ندارد ما باید یک آدرس حافظه داشته باشیم که نقطه شروع اجرای DLL را نگه دارد... برای این، میبایست ما تخصیص حافظه را انجام دهیم DLL را با تابع LoadLibrary را در حافظه بارگذاری کنیم.

روش های که در این تاپیک به بررسی آنها میپردازیم:
CreateRemoteThread
NtCreateThreadEx
QueueUserAPC
SetWindowsHookEx
RtlCreateUserThread
Code cave via SetThreadContext
Reflective DLL
تابع LoadLibrary():
همانطور که در MSDN گفته شد، تابع LoadLibrary() "ماژول مشخص شده را به فضای آدرس فرایند فراخوانی بار می کند. ماژول مشخص شده ممکن است ماژول های دیگر را بارگیری کند."
کد:
HMODULE WINAPI LoadLibrary(
 _In_ LPCTSTR lpFileName
);

پارامتر ورودی این تابع فقط نام فایل است و ممکن است بدانید که یک مسئله مهم در اینجا این است که تابع LoadLibrary مسیر و فایل DLL بارگذاری شده را در برنامه ثبت می کند به همین دلیل به راحتی میتوان DLL را شناسایی کرد، برای جلوگیری از شناسایی DLL هنوز تکنیکی پیدا نشده است و همچنین توجه داشته باشید که اگر DLL قبلا با LoadLibrary () بار شده باشد دوباره اجرا نخواهد شد.

Attach to the target/remote process:
برای شروع، ما نیاز به برقراری ارتباط با فرآیند که میخواهیم به آن DLL تزریق کنیم داریم و برای این منظور ما از تابع OpenProcess استفاده می کنیم.
کد:
HANDLE WINAPI OpenProcess(
 _In_ DWORD dwDesiredAccess,
 _In_ BOOL  bInheritHandle,
 _In_ DWORD dwProcessId
);

اگر مستندات را در MSDN بخوانید خواهید دید که ما باید یک مجموعه خاص از حقوق دسترسی را درخواست کنیم. لیست کامل دسترسی را می توان در اینجا یافت.

Allocate memory within the target/remote process:
برای اختصاص دادن حافظه برای مسیر DLL ما از تابع VirtualAllocEx استفاده می کنیم. همانطور که در MSDN گفته شده است تابع VirtualAllocEx وضعیت یک منطقه حافظه در فضای آدرس مجازی یک فرآیند را مشخص یا تغییر میدهد.
کد:
LPVOID WINAPI VirtualAllocEx(
 _In_     HANDLE hProcess,
 _In_opt_ LPVOID lpAddress,
 _In_     SIZE_T dwSize,
 _In_     DWORD  flAllocationType,
 _In_     DWORD  flProtect
);

اساسا، این کار را به این صورت انجام میدهند:
کد:
// calculate the number of bytes needed for the DLL's pathname
DWORD dwSize = (lstrlenW(pszLibFile) + 1) * sizeof(wchar_t);

// allocate space in the target/remote process for the pathname
LPVOID pszLibFileRemote = (PWSTR)VirtualAllocEx(hProcess, NULL, dwSize, MEM_COMMIT, PAGE_READWRITE);

اگر میخواهید فضای کامل DLL را اختصاص دهید:
کد:
hFile = CreateFileW(pszLibFile, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

dwSize, = GetFileSize(hFile, NULL);

PVOID pszLibFileRemote = (PWSTR)VirtualAllocEx(hProcess, NULL, dwSize, MEM_COMMIT, PAGE_READWRITE);

Copy the DLL Path, or the DLL, into the target/remote process' memory:
مسیر DLL یا کل DLL را به حافظه فرآیند کپی کنید..

حال با استفاده از تابع WriteProcessMemory، فقط کپی مسیر DLL یا کل DLL را در فرآیند مقصد قرار می دهیم.
کد:
BOOL WINAPI WriteProcessMemory(
 _In_  HANDLE  hProcess,
 _In_  LPVOID  lpBaseAddress,
 _In_  LPCVOID lpBuffer,
 _In_  SIZE_T  nSize,
 _Out_ SIZE_T  *lpNumberOfBytesWritten
);

یا یه چیزی شبیه به ...

کد:
DWORD n = WriteProcessMemory(hProcess, pszLibFileRemote, (PVOID)pszLibFile, dwSize, NULL);
 
Instruct the process to execute the DLL:

CreateRemoteThread():

می توانیم بگوییم که CreateRemoteThread یک تکنیک کلاسیک و محبوب تزریق DLL است. همچنین، به خوبی تایید شده است که شامل مراحل زیر است:



پروسه هدف را با OpenProcess باز کنید
آدرس LoadLibrary را با استفاده از GetProcAddress پیدا کنید
برای استفاده از حافظه ذخیره شده برای مسیر DLL در فضای آدرس فرآیند از VirtualAllocEx استفاده کنید
نوشتن مسیر DLL در حافظه قبلی با WriteProcessMemory
استفاده از CreateRemoteThread برای ایجاد یک Thread جدید و فراخوانی تابع LoadLibrary با مسیر DLL به عنوان پارامتر

اگر به تابع CreateRemoteThread در MSDN سری بزنید می توانید ببینید که ما نیاز به یک اشاره گر به عملکرد تعریف شده کاربردی (application-defined function) از نوع LPTHREAD_START_ROUTINE داریم که از طریق اجرای Thread بدست میاید و نشان دهنده آدرس اولیه Thread در فرایند است این به این معناست که برای اجرای DLL ما فقط باید فرآیند را برای انجام این کارها سوق دهیم. تمام مراحل اولیه ذکر شده در بالا را ببینید:

کد:
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_CREATE_THREAD | PROCESS_VM_OPERATION | PROCESS_VM_WRITE, FALSE, dwProcessId);

// Allocate space in the remote process for the pathname
LPVOID pszLibFileRemote = (PWSTR)VirtualAllocEx(hProcess, NULL, dwSize, MEM_COMMIT, PAGE_READWRITE);

// Copy the DLL's pathname to the remote process address space
DWORD n = WriteProcessMemory(hProcess, pszLibFileRemote, (PVOID)pszLibFile, dwSize, NULL);

// Get the real address of LoadLibraryW in Kernel32.dll
PTHREAD_START_ROUTINE pfnThreadRtn = (PTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle(TEXT("Kernel32")), "LoadLibraryW");

// Create a remote thread that calls LoadLibraryW(DLLPathname)
HANDLE hThread = CreateRemoteThread(hProcess, NULL, 0, pfnThreadRtn, pszLibFileRemote, 0, NULL);

برای اطلاعات کاملتر فایل t_CreateRemoteThread.cpp را بخوانید.

NtCreateThreadEx:
گزینه دیگری استفاده از NtCreateThreadEx است که یک تابع "ntdll.dll" نامشخص (undocumented) است و ممکن است در آینده حذف شود یا تغییر کند. این تکنیک کمی پیچیده تر است.
کد:
struct NtCreateThreadExBuffer {
 ULONG Size;
 ULONG Unknown1;
 ULONG Unknown2;
 PULONG Unknown3;
 ULONG Unknown4;
 ULONG Unknown5;
 ULONG Unknown6;
 PULONG Unknown7;
 ULONG Unknown8;
};

توضیحات خوبی در مورد این تابع وجود دارد. پیاده سازی این روش بسیار شبیه به آنچه که ما برای CreateRemoteThread انجام دادیم.
کد:
PTHREAD_START_ROUTINE ntCreateThreadExAddr = (PTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle(TEXT("ntdll.dll")), "NtCreateThreadEx");

LPFUN_NtCreateThreadEx funNtCreateThreadEx = (LPFUN_NtCreateThreadEx)ntCreateThreadExAddr;

NTSTATUS status = funNtCreateThreadEx(
 &hRemoteThread,
 0x1FFFFF,
 NULL,
 hProcess,
 pfnThreadRtn,
 (LPVOID)pszLibFileRemote,
 FALSE,
 NULL,
 NULL,
 NULL,
 NULL
 );

برای اطلاعات بیشتر سورس کد مربوط به 't_NtCreateThreadEx.cpp' بخوانید.

QueueUserAPC:
یک جایگزین برای تکنیک های قبلی که یک Thread جدید در فرآیند هدف را ایجاد نمی کند استفاده از تابع QueueUserAPC است.
همانطور که در MSDN مستند شده است، این فراخوانی، یک شی تماس نامتقارن در مد کاربر (APC یا asynchronous procedure call) را به صف APC در Thread هدف اضافه می کند.
کد:
DWORD WINAPI QueueUserAPC(
 _In_ PAPCFUNC  pfnAPC,
 _In_ HANDLE    hThread,
 _In_ ULONG_PTR dwData
);

بنابراین اگر ما نمیخواهیم Thread خودمان را ایجاد کنیم میتوانیم از QueueUserAPC برای ربودن (hijack) یک Thread موجود در فرآیند هدف استفاده کنیم.
یعنی، فراخوانی این تابع یک فراخوانی روش نامتقارن در Thread مشخص شده را صف می کند.

ما می توانیم به جای LoadLibrary یک تابع برگشتی APC استفاده کنیم، پارامتر می تواند یک اشاره گر به نام فایل DLL باشد که ما می خواهیم آن را تزریق کنیم.
کد:
DWORD dwResult = QueueUserAPC((PAPCFUNC)pfnThreadRtn, hThread, (ULONG_PTR)pszLibFileRemote);

اگر شما این تکنیک را امتحان میکنید ممکن است متوجه این موضوع شوید که هیچ زمانبندی به دنبال صف APC نیست، به این معنی که صف فقط زمانی مورد بررسی قرار می گیرد که Thread قابل تشخیص باشد (thread becomes alertable).

به همین دلیل ما اساسا هر Thread را hijack می کنیم، کد زیر را ببینید:


کد:
BOOL bResult = Thread32First(hSnapshot, &threadEntry);
 while (bResult)
 {
   bResult = Thread32Next(hSnapshot, &threadEntry);
   if (bResult)
   {
     if (threadEntry.th32OwnerProcessID == dwProcessId)
     {
       threadId = threadEntry.th32ThreadID;

       wprintf(TEXT("[+] Using thread: %i\n"), threadId);
       HANDLE hThread = OpenThread(THREAD_SET_CONTEXT, FALSE, threadId);
       if (hThread == NULL)
         wprintf(TEXT("[-] Error: Can't open thread. Continuing to try other threads...\n"));
       else
       {
         DWORD dwResult = QueueUserAPC((PAPCFUNC)pfnThreadRtn, hThread, (ULONG_PTR)pszLibFileRemote);
         if (!dwResult)
           wprintf(TEXT("[-] Error: Couldn't call QueueUserAPC on thread> Continuing to try othrt threads...\n"));
         else
           wprintf(TEXT("[+] Success: DLL injected via CreateRemoteThread().\n"));
         CloseHandle(hThread);
       }
     }
   }
 }

به عنوان یک مطالعه جانبی خوب است که بدانید این تکنیک توسط DOUBLEPULSAR استفاده شده است.
برای اطلاعات بیشتر سورس کد مربوط به 't_QueueUserAPC.cpp' بخوانید.

SetWindowsHookEx:
برای استفاده از این تکنیک میبایست درک کنیم که چگونه هوک ها در ویندوز کار می کنند در حقیقت هوک ها راهی برای رد کردن رویدادها هستند و به آنها عمل می کنند.

پست ادامه دارد....



فایل‌(های) پیوست شده بندانگشتی (ها)
       
چاپ این مطلب ارسال این مطلب به یک دوست

Cool آرشیو CrackMe Solutions
ارسال کننده: nImaarek - ۰۵-مرداد-۱۳۹۶ ۱۷:۳۰:۰۳ - پاسخ (1)

سلام،

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

از خودم شروع میکنم :

کد:
Lena UnPackMe 8 Unpacking 2.2M
dhx_Jen_keygenme1.rar 13K
dhx_Jen_keygenme2.rar 27K
dhx_Lutin_Noir_RSA_keygenme.rar 54K
dhx_ORiON_Hard.rar 75K
dhx_TMG_TRiAL_KEYGENME_2.rar 34K
dhx_TMG_TRiAL_KEYGENME_3.rar 59K
dhx_bishop_crackme_3.rar 30K
dhx_byteptr_keygenme1.rar 59K
dhx_coolwolf_keygenme1.rar 65K
dhx_duelists_keyfilecrackme.rar 19K
dhx_jB_keygenme1.rar 78K
dhx_keygenme1.rar 34K
dhx_pGC_OFFiCiAL_KEYGENME_2002.rar 49K
dhx_pdrill_keygenme2.rar 55K
dhx_pdrill_keygenme3.rar 72K
dhx_pdrill_keygenme4.rar 128K


لینک دانلود:
کد:
http://repo.meh.or.id/Reverse%20Engineering/Best_Reverse_Collection/CrackMe%20Solutions/

خودم که دانلودشون کردم تو یه فایل zip داخل سایت پیویست میکنم...



فایل‌(های) پیوست شده
.zip   A.zip (اندازه: 3.02 MB / تعداد دفعات دریافت: 6)
چاپ این مطلب ارسال این مطلب به یک دوست

  اجرای پی در پی تابع __NR_write و مزیت هوک
ارسال کننده: nImaarek - ۰۴-مرداد-۱۳۹۶ ۰۴:۱۷:۳۰ - پاسخ (3)

سلام،
من از طریق system call table سیستم کال __NR_write هوک کردم و تابع ای که جایگزین کردم فقط یه printk معمولی هست وقتی ماژولمو اجرا میکنم، dmesg که میخونم پشت سر هم مثل یه لوپ تابع جایگزینم که یه printk هست اجرا میشه:

   

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

چاپ این مطلب ارسال این مطلب به یک دوست


صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS