امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
آموزش چهار روش کلی اینجکت کد برای بدست آوردن پسورد TextBox
نویسنده پیام
Pedram_HookEx آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 459
موضوع‌ها: 23
تاریخ عضویت: خرداد ۱۳۸۴

تشکرها : 1
( 109 تشکر در 65 ارسال )
ارسال: #1
آموزش چهار روش کلی اینجکت کد برای بدست آوردن پسورد TextBox
دیدم چند روزیه که بحث اینجکشنو حلقه ها خیلی داغ شده برا همین تصمیم گرفتم آموزشش رو بزارم اینجا
البته این آموزش در چهار قسمت خواهد بود که من در چهار مقاله کوتاه اونا رو بیان میکنم و اما در این قسمت به طور خلاصه یک پیش مقدمه در باب تعریف اینجکشن و چهار روش Injection میزارم امیدوارم که مفید باشه
این آموزش صرفا برای برنامه نویسان زبان ویژوال بیسیک نیست و برنامه نویسان زبان سی++ حتی بهتر میتونن از اون بهره ببرن
سطح مقاله هم متوسط به بالاست

موضوع به دام انداختن پیغامها همیشه یکی از مهمترین بحثها بین برنامه نویسان بوده و منم که علاقه بسیار شدید به این مبحث دارم خوب نتیجه تمام تحقیقاتمو میزارم برای همه

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

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

همونجور که میدونیم از سیستم عامل داس و سیستم ویندوز xxx.3 به بعد بود که ما شاهد قسمتی بودیم که میتونست آدرس پروسس ها رو بطور جداگونه در جایی برای دسترسی به اونا ذخیره کنه یعنی در ویندوز 9x و NT/2K و XP این دسترسی ها ایجاد شد

خوب فایده کلی که این جور برنامه ها دارن (جاسوسی با حلقه ها) اینه:
  • جاسوسی کردن بر سر توابع فراخوانده شده که شما رو قادر میکنه که بتونین یه سری عملیات مخفی حین فراخونی اون تابع داشته باشین(البته برداشت بد نکنین)
  • در کنار روشهای استاندارد برای دیباگ کردن حلقه ها میتونند یکی از کمک کننده ترین برنامه ها برای اشکال یابی در این قسمت باشن
  • و آخرین و مهمترین قسمت هم تغییر در ساختار اجرایی برنامه هاست برای ایجاد عملکردی بهتر یا ساختن محیط اجرایی برنامه به صورت اختصاصی برای پیشبرد اهداف شما

Atموارد اساسی که برای ایجاد یک حلقه احتیاج دارین

خوب در این مرحله شما باید محیط کاری و نیازمندی های خودتون رو اجرا کنید
منظور اینه که شما میخوای فقط یک برنامه رو کنترول کنید لازم نیست حلقه رو به صورت گسترده(Wide) پیاده کنید اما اگر میخوایین کل پیغام های سیستم رو کنترول کنید اصلا بزارید با یک مثال توضیحش بدم مثلا اگه شما بخوای فقط تابع TerminateProcess رو جاسوسی کنید مجبورید حلقه رو روی سیستم به صورت گسترده پیاده کنید چون تقریبا تمام برنامه ها از این تابع استفاده میکنند

خوب به اختصار فقط نام روشها رو اینجا مینویسم و در مقاله های بعد به صورت کامل اونا رو توضیح میدم
البته در پایین چهار روش رو گفتم که روش اول در واقع یک ترفند هست و آسانترین و بهترین روش(از نظر من) که باعث اینجکت کد در پروسه های دیگه میشه

  1. روش اول قرار دادن کدمون در یک Dll و اینجکت کد با استفاده از رجیستری
  2. روش دوم قرار دادن کدمون در یک Dll و اینجکت کد با استفاده از حلقه ها
  3. روش دوم قرار دادن کدمون در یک Dll و اینجکت کد با استفاده از دو تابع CreateRemoteThread & LoadLibrary
  4. و روش آخر به جای استفاده از درست کردن Dll کدمون رو مستقیم با استفاده از تابع WriteProcessMemory به پروسه مذکور اینجکت کنیم و توسط CreateRemoteThread اونو اجرا کنیم

خوب میخواییم حول این چهارتا روش یک مسیررو دنبال کنیم و اونم بدست آوردن محتوای TextBoxها در پروسه های دیگه هست که دارای Styleی با نام ES_Password هستند

برای بدست آوردن محتویات یک TextBox که میتواند به پروسه شما متعلق باشد یا نه به طور معمول از پیغام WM_GETTEXT استفاده میکنیم بصورت زیر

کد:
SendMessage hWnd, WM_GETTEXT, 256, Buffer

که در خط بالا مقدار یا محتوای TextBox در متغیر Buffer قرار میگیرد

حال اگر این TextBox متعلق به یک پروسه دیگه باشه و همچنین دارای Styleی با نام ES_PASSWORD باشه نمیتونیم اون محتوا رو بصورت معمول بدست بیاریم برای این کار مجبوریم به اینجکشن رو بیاریم

در آموزش هایی که قرار خواهم داد چهار روش رو توضیح خواهم داد

راستی اگه نظراتتون رو ندید آموزش ها رو نمیزارم ها Angry
سوالاتتون رو هم حتما بپرسین اگه مطلبی هم برای کامل کردن مقاله ها داشتین حتما بگین

_______________________________________________________________________________
  • کشف الکتریسیته توسط پارتها برای اولین بار کلیک کنید
  • 135 نکته و آموزش از سطح پایین تا پیشرفته در غالب مثال های کوچک و قابل فهم (حجم 97KB)لینک دانلود
  • 101 آموزش پیشرفته ویژوال بیسیک. حتما دانلود کنید(حجم 314KB)لینک دانلود
  • اینم یه کتابچه ویژوال بیسیک برا اونایی که میخوان برنامه نویسی رو شروع کنن(حجم 916KB)لینک دانلود
  • تمام نکات و ترفند های مهم در ویندوز XP حتما دانلود کنید(حجم 86KB)لینک دانلود[تصویر:  new4.gif]
  • بروزرسانی ویژوال بیسک 6 به آخرین نسخه یعنی سرویس پک 6 (حجم 61MB)لینک دانلود[تصویر:  new4.gif]

(آخرین ویرایش در این ارسال: ۲۳-مرداد-۱۳۸۶, ۱۹:۴۹:۱۹، توسط Pedram_HookEx.)
۱۹-مرداد-۱۳۸۶, ۱۹:۵۴:۱۹
ارسال‌ها
پاسخ
تشکر شده توسط : Darg, HoseinVig, Kadilak, nImaarek
HoseinVig آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 1,165
موضوع‌ها: 97
تاریخ عضویت: مرداد ۱۳۸۵

تشکرها : 4768
( 2464 تشکر در 677 ارسال )
ارسال: #2
RE: آموزش چهار روش کلی اینجکت کد
آقا پدرام هنوز نخوندم .ولی قبل از خوندن ازت خیلی ممنونم .واقعاً مفیدی Biggrin
منتظر بخش بعدی مقالت هستم

(آخرین ویرایش در این ارسال: ۲۰-مرداد-۱۳۸۶, ۰۰:۵۳:۰۰، توسط HoseinVig.)
۲۰-مرداد-۱۳۸۶, ۰۰:۴۲:۳۵
ارسال‌ها
پاسخ
تشکر شده توسط : Kadilak
Pedram_HookEx آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 459
موضوع‌ها: 23
تاریخ عضویت: خرداد ۱۳۸۴

تشکرها : 1
( 109 تشکر در 65 ارسال )
ارسال: #3
آموزش اول برای اینجکت کد
خوب بازم سلام امروز میخوام به اولین راه برای اینجکشن کد بپردازم اما قبل از اون یه نکته یادم اومد که دیدم خیلی توی تفهیم این روشها و خود تکنیک اینجکت میتونه کمک کنه

نکته:

اول یک سوال میپرسم آیا میدونید چرا وقتی که یک پیغام برای بدست آوردن پسورد یک TextBox به برنامه خودتون میفرستید قادره که محتویات رو بدست بیاره ولی وقتی که میخوایید محتویات TextBox با استایل ES_PASSWORD یک برنامه دیگه رو بگیرید نمیتونید؟

برای جواب به سوال بزارید اینجوری توضیح بدم فرض کنید وقتی شما یک پکیج از طریق اینترنت دریافت میکنید اون پکیج شامل یک سری اطلاعات از جمله IP آدرس فرستنده هست شما از این طریق میتونید بفهمید که اون پکیج از طرف چه کسی اومده
دقیقا در پروسس ها هم اینچنینه یعنی وقتی شما یک پیغام دریافت میکنید یا میفرستید اون پیغام شامل اطلاعات خاصی هست که یکی از اون ها ProcessID فرستنده هست یعنی اگر شما دریافت کننده پیام باشید میتوانید برنامه ای که اون پیغام رو به شما داده رو شناسایی کنید

اما سوال بعدی اینه که این مکانیزم در مورد TextBox ها با Style ES_PASSWORD چگونه جلوگیری میکنن؟
خوب جواب اینه که اون ساختاری که از بدست آوردن این محتویات جلوگیری میکنه در خود برنامه قرار نداره بلکه این مکانیسم در خود سیستم عامل قرار داره فرض کنید شما یک در برنامه خودتوی یک PasswordTextBox (همون تکست باکس با Style ES_PASSWORD) دارید وقتی که از داخل برنامه میخواهید محتویات اون تکست باکس رو بخونید برای اون پیغام WM_GETTEXT رو میفرستید خوب این پیغام اون از یک حلقه که توسط سیستم عامل طراحی شده عبور میکنه اگه ProcessID فرستنده پیغام با ProcessID دریافت کننده پیغام یکی بود اجازه عبور رو بهش میده و چون در اینجا فرستنده و گیرنده یک هر دو در یک پروسه قرار دارند پیغام اجازه عبور از حلقه مذکور رو پیدا میکنه اما وقتی که از برنامه ی دیگه ای اون پیغام رو بفرستید به دلیل مختلف بودن ProcessID فرستنده و گیرنده اون پیغام از بین میره (البته این حلقه کنترول در سیستم عاملهای NT و XP اضافه شده) به همین دلیل هست نمیتونیم محتویات یک PasswordTextBox رو که در یک پروسه دیگه قرار داره بخونیم
و برای همینه که از اینجکت کد استفاده میکنیم تا بتونیم از طریق همون پروسه این پیغام رو بفرستیم تا ProcessID گیرنده و فرستنده یکی باشه
در ضمن این حلقه کنترول همیشه وجود نداره
  • روش اول قرار دادن کدمون در یک Dll و اینجکت کد با استفاده از رجیستری:


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

این روش که بسیار ابتدایی و ساده هم هست به این صورته که: ابتدا اون کدی که میخواییم اینجکت کنیم رو درون یک Dll قرار میدیم و Dll مون رو Compile میکنیم خوب حالا به مسیر زیر در رجیستری دقت کنید

کد:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs

در Value این مسیر نام Dll تون رو وارد میکنید یا میتونید نام تمام Dll هاتون رو وارد کنین و با استفاده از یک کاما (,) یا Space اونها رو از هم جدا کنید البته برای راه اندازی نیاز به یک ریاستارت نیز دارید

خوب به این صورت عمل میکنه که وقتی ویندوز بالا میاد ویندوز تمام Dll هایی که در مسیر رجییستری مذکور قراردارن در تمامی برنامه های در حال اجرا لود میشه البته جالبه بدونین که لود شدن اصلی زمانی اتفاق می افته که کتابخانه User32 توسط اون برنامه های لود میشه. کتابخانه User32 میاد و نام Dll هایی که در مسیر مذکر ذخیره شدن رو میخونه و در نهایت برای این Dll ها تابع LoadLibrary رو در قسمت DllMain خودش فراخونی میکنه
بازم یادتون باشه که این ترفند فقط برنامه هایی رو پوشش میده که از User32 استفاده میکنن
و نکته دیگه اینکه یادتون باشه که این ترفند فقط در سیستم عامل های NT , 2K قابل اجراست
نکته: ویندوز XP خود نسخه ای از ویندوز NT ست

این روش یک سری نقص ها هم داره که در زیر مشاهده میکنین:
  • برای اینجکت کردن و از اینجکت در آوردن شما مجبور به ری استارت هستید

  • این روش فقط میتونه کد شما رو در Dllهایی اینجکت کنه که از کتابخانه USER32 استفاده میکنن پس به طور یقین نمیتونه در اکثر برنامه ایی که با ویژوال بیسک نوشته شدن یا برنامه هایی که به صورت Console Application هستند کاربرد داشته باشه چون در در اکثر برنامه های ویژوال بیسیک برنامه از کتابخانه اختصاصی خودش یعنی MSVBVM60 استفاده میکنه و برنامه های کنسول هم که به همین شکل هستند

  • مشکل دیگه این روش اینه که شما هیچ کنترولی روی روند اینجکت ندارید پس باید یه مسیر مشخص رو انتخاب کنید که Dllتون طی کنه

راستی حسین خان ممنون

_______________________________________________________________________________
  • کشف الکتریسیته توسط پارتها برای اولین بار کلیک کنید
  • 135 نکته و آموزش از سطح پایین تا پیشرفته در غالب مثال های کوچک و قابل فهم (حجم 97KB)لینک دانلود
  • 101 آموزش پیشرفته ویژوال بیسیک. حتما دانلود کنید(حجم 314KB)لینک دانلود
  • اینم یه کتابچه ویژوال بیسیک برا اونایی که میخوان برنامه نویسی رو شروع کنن(حجم 916KB)لینک دانلود
  • تمام نکات و ترفند های مهم در ویندوز XP حتما دانلود کنید(حجم 86KB)لینک دانلود[تصویر:  new4.gif]
  • بروزرسانی ویژوال بیسک 6 به آخرین نسخه یعنی سرویس پک 6 (حجم 61MB)لینک دانلود[تصویر:  new4.gif]

(آخرین ویرایش در این ارسال: ۲۰-مرداد-۱۳۸۶, ۰۳:۳۷:۰۸، توسط Pedram_HookEx.)
۲۰-مرداد-۱۳۸۶, ۰۳:۳۵:۱۳
ارسال‌ها
پاسخ
تشکر شده توسط : Kadilak, nImaarek
ajlajlajl آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,192
موضوع‌ها: 70
تاریخ عضویت: مهر ۱۳۸۴

تشکرها : 932
( 2618 تشکر در 1020 ارسال )
ارسال: #4
RE: آموزش چهار روش کلی اینجکت کد
HoseinVig نوشته است:آقا پدرام هنوز نخوندم .ولی قبل از خوندن ازت خیلی ممنونم .واقعاً مفیدی Biggrin
منتظر بخش بعدی مقالت هستم

واقعا راست میگه.

میزان رای دشمن است!
[تصویر:  cff100.png]
۲۰-مرداد-۱۳۸۶, ۱۰:۳۸:۴۹
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : Kadilak
Pedram_HookEx آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 459
موضوع‌ها: 23
تاریخ عضویت: خرداد ۱۳۸۴

تشکرها : 1
( 109 تشکر در 65 ارسال )
ارسال: #5
روش دوم اینجکت کد توسط حلقه ها
بازم سلام
یه نکته: بابت دیرکرد این قسمت من چون خیلی میخواستم به زبان ساده بنویسمش طول کشید شرمنده ام

پیشنهاد میکنم که اول با حلقه ها آشنایی کامل پیدا کنین بعد شروع به خوندن این مقاله بکنین هر سوالی که راجع به حلقه ها دارین بپرسین(شاید یک آموزش کامل هم در این باره در سایت بزارم البته سعی کردم که توضیحات مختصری هم در این باره بدم)

Exclamationروش های بعدی هم به مراتب سختتر از این روش خواهد بود به همین دلیل
حتما هر قسمت رو متوجه نشدید سوالتون رو راجع به اون قسمت بپرسید

  • روش دوم قرار دادن کدمون در یک Dll و اینجکت کد با استفاده از حلقه ها:


اول یک توضیح مختصر راجع به حلقه ها میدم
اولین و اصلی ترین نقشی که حلقه ها بر عهده دارن جاسوسی کردن و به دام انداختن پیغامهایی هست که به یک پروسه خا ص یا قسمتی از اون پروسه فرستاده میشه

در کل ما دو نوع حلقه داریم:

  1. حلقه های محلی(Local Hooks) که در اون شما یک یا چند ترید(Thread نخ) رو جاسوسی میکنید که به پروسه خودتون تعلق دارند
  2. حلقه های خارجی(Remote Hooks) که خود به دو دسته تقسیم میشه :
    1. 2 برای جاسوسی کردن یک Thread که متعلق به یک پروسه دیگه هست
    2. 2 برای جاسوسی کردن سیستم به صورت گسترده (System-Wide Hooks) که برای جاسوسی تمامی Threadهای فعال در سیستم شما که مطعلق به هر پروسه ای باشه به کار میره



نکته:میتوان Thread را کلاس هایی که زیر مجموعه پروسه ماست در نظر گرفت و نکته کمکی هم اینکه هر شیئ در ویندوز(مانند یک TextBox) دارای یک ThreadID هست.

اگر حلقه مورد نظر Threadی رو جاسوسی میکرد که مربوط به پروسه دیگری بود (مورد 1-2 و 2-2) باید آن حلقه را در یک (dynamic-link library (DLL قرار بدهیم و سپس سیستم آن Dllی رو که حلقه در اون قرار داره رو در Threadی که حلقه گزاری شده لود میکنه و پس از اون سیستم کل Dll رو در Thread مذکور لود میکنه (یعنی تمام کد رو نه فقط تابع حلقه) این دلیل اینه که چرا حلقه ها میتونن باعث اینجکت کد در یک پروسه بشن.

خوب بزارید در این راستا چند اشاره و نکته رو داشته باشم :

بعد از ایجاد یک حلقه موفقیت آمیز توسط SetWindowsHookEx سیستم به صورت اوتوماتیک Dll رو در Thread مذکور اینجکت میکنه اما این کار رو بصورت کامل انجام نمیده و د مقابل میدونیم که کارکرد حلقه به گرفتن پیغام هست خوب پس تا زمانی که پیغامی رو به عنوان ورودی نگیره نمیتونه کار خودشو شروع کنه و به طور واقعی در Thread مذکور لود(اینجکت) شه

به عبارت دیگر اگه قضیه رو کمی بیشتر باز کنم اینجوری میشه که اگه قبل از اینکه حلقه ما پیغامی رو دریافت کنه ما اون حلقه رو از بین ببریم توسط UnhookWindowsHookEx به هیچ وجه در اون Thread اینجکت نمیشه مگه اینکه ما اونو سریعا توسط یک پیغام در پروسه مذکور اینجکت کنیم پس باید بلافاصله پس از ایجاد حلقه یک پیغام به Thread مورد نظر بفرستیم

و همچنین برای اینکه Dll رو کاملا از حالت لود شده خارج کنیم باید بلافاصله بعد قبل از فراخوانی UnhookWindowsHookEx یک پیغام اختصاصی به Thread مذکور بفرستیم با این کار باعث میشیم که Dll به طور کامل بسته شود

نکته:استفاده از واژه پروسه برای حلقه ها مناسب نیست چون در Remote Hook ها ما بیشتر یک Thread مربوط به یک پروسه سروکار داریم نه با کل پروسس


از اینجا کد نویسی رو شروع میکنیم

اولین کارمون اینه که بیاییم Dllمون رو ایجاد کنیم و بعد از اون کدمون رو در اون قرار بدیم

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

مثلا فرض کنید ما یک همچین تابعی برای Dll مون درست کردیم و اونو به این طریق فراخونی میکنیم

کد:
Declare Function GetRemoteText Lib "MyDll" (ByVal hWnd As Long, ByVal Pw As String) As Integer

خروجی این تابع طول رشته دریافتی و pw خود پسورد هست
البته این Dll رو باید همونطوری که گفتم طوری طراحی کنیم که موقع بازخونی اون به صورت اوتوماتیک به پروسه مورد نظر اینجکت بشه و بلافاصله از اون حالت اینجکت شده خارج شه و به قولی Unload شه
این تابعی هست که باید طراحی کنیم

کد:
Public Sub GetRemoteText(chWnd As Long, Strpwd As String)
Dim PID As Long
g = GetWindowThreadProcessId(chWnd, PID)
hHook = SetWindowsHookEx(WH_CALLWNDPROC, AddressOf WndProc, App.hInstance, g)
If hHook <> 0 Then
WM_HOOKSPY = RegisterWindowMessage("WM_HOOKSPY_Txt")
    SendMessage GG, WM_HOOKSPY, 0, 0
    Strpwd = StrPassRt
    GetRemoteText = Len(Strpwd)
End If
End Sub

در کد بالا
در خط اول ThreadID مربوط به هندل داده شده رو توسط GetWindowThreadProcessId بدست می آوریم
در خط بعد حلقه را ایجاد میکنیم و در همون خط آدرس دهی برای گرفتن پیغام ها رو مشخص میکنیم که در اینجا WndProc هست (این تیکه یادتون باشه تا بعدا کامل راجع بهش صحبت کنیم)

در دو خط بعد همونطور که گفتم باید یک پیغام به پنجره مورد نظر بفرستیم که اونو اینجکت کنه برای همین اول یک پیغام در سیستم تعریف میکنیم و سپس آن را به هندل مورد نظر میفرستیم

نکته: حلقه هایی که توسط SetWindowsHookEx ایجاد میشن فقط میتونن پیغام های ثبت شده (Register شده) رو دریافت کنن اما حلقه هایی که برای دریافت پیام توسط SetWindowLong ایجاد میشن هر نوع پیغامی رو میتونن بگیرن

در خط Strpwd = StrPassRt و(GetRemoteText = Len(Strpwd پسورد و طول پسورد رو بدست می آوریم اینجا یک سوال پیش میاد که چجوری و از کجا این پسورد بدست اومد

اگه دقت کرده بودین قبل از این دو خط یک پیغام به پنجره فرستاده بودیم که این پیغام باعث شده بود بلافاصله اینجکت کد صورت بگیره و پس از اون بلافاصله ما در حلقه پسورد رو بدست میاریم ولی این فرایند در زمان بسیار کوتاهی انجام میشه یعنی حلقه باعث میشه که برنامه بعد از فرستادن پیغام بلافاصله به قسمت تابع حلقه بره و در اونجا فرایند بدست آوردن پسورد صورت بگیره و دوباره به اون دوخط Strpwd = StrPassRt و(GetRemoteText = Len(Strpwd برگردیم و میدونیم که الان به StrPassRt در حلقه مقدار دهی شده

نکته: StrPassRt رو به صورت Public یا Global تعریف میکنیم

خوب در انتها به حلقه مون رسیدیم به کد زیر دقت کنید
کد:
Public Function WndProc(ByVal idHook As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If idHook < 0 Then

ElseIf idHook >= 0 Then
'''''''''''''''''''''''''''''''''''
    CopyMemory CWPe, ByVal lParam, Len(CWPe)
    If CWPe.message = WM_HOOKSPY Then
      Dim SD As String * 124
      MessageBeep MB_OK
      SendMessage wwHwnd, WM_GETTEXT, 128, SD
StrPassRt = Left(SD, InStr(1, SD, Chr(0)) - 1)

       UnhookWindowsHookEx hHook

    
    End If
End If

WndProc = CallNextHookEx(hHook, idHook, wParam, ByVal lParam)
End Function

برای این قسمت هم اینجوری توضیح میدم
اگه یادتون باشه ما بعد از ایجاد حلقه بلافاصله یک پیغام به پنجرمون فرستادیم که Dllمون اینجکت بشه همچنین در کد بالا اگر دقت کنین ما عملیات بدست آوردن پسورد رو زمانی شروع میکنیم که حلقه ما اون پیغام رو دریافت کرده باشه(یعنی در این زمان Dllمون به صورت کامل اینجکت شده وما میتونیم هر کاری که دلمون خواست بکنیم) پس حالا میتونیم از همون تابع معمولی و پیغام قبلی برای بدست آوردن پسوردمون استفاده کنیم (الان مثل اینه که داریم از TextBox خودمون محتوا میگیریم)

کد:
SendMessage wwHwnd, WM_GETTEXT, 128, SD

نکته مهم: اگه در کد تابع GetRemoteText دقت میکردین دیدید ما بدون ملاحضه اینکه پیغاممون رو فرستاده باشیم بلافاصله بعد از اون پسورد رو در متغیر اختصاصی مون قرار دادیم این قسمت همون قسمتی هست که Debugger از انجامش عاجز هست چون خاصیت حلقه ها اینه که سیستم دریافت و پاسخشون جدا از برنامه ست و در هر خط برنامه که باشیم اگه حلقه فراخونده شه ما از خطی که درونش قرار داریم خارج میشیم و به حلقه انتقال پیدا میکنیم و پس از اون به خط بعد در روند عادی کد نویسی میریم یعنی در قسمت زیر
قسمت زیر به این صورت اجرا میشه:
  1. اول خط اول اجرا میشه
  2. دوم ما به حلقه میریم و پسورد رو میگیریم
  3. سوم به خط دوم برمیگردیم و پسورد رو درمتغیرمون قرار میدیم

کد:
SendMessage GG, WM_HOOKSPY, 0, 0
    Strpwd = StrPassRt

اینم آموزش این روش بود که خیلی کاربردی و مفیده البته پیاده کردن اون در VB کمی مشکل هست (بدلیل ناسازگاری ویژوال بیسیک با Dllها) البته برای حل مشکلتون میتونین به مقاله زیر که قبلا توی سایت نوشتم مراجعه کنین این قسمت مشکلتون حل میشه

آموزش ساخت یک Dll استاندارد در ویژوال بیسیک

در قسمت آخر من به برنامه نویسان زبان سی ++ پیشنهاد میکنم که این Dll رو در زبان خودشون طراحی کنن و تا ببینن که چقدر راحت و بدون دردسر میشه برای این کار(بدست آوردن پسورد TextBoxها) از اون استفاده کرد.
همچنین کاربرد این روش فقط به TextBoxها ختم نمیشه و میشه برای بدست آوردن آیتمها در ListView نیز (که قبلا هم بحثش شد) از این روش استفاده کرد

تا مقاله بعدی نظرات پیشنهادات سوالات

_______________________________________________________________________________
  • کشف الکتریسیته توسط پارتها برای اولین بار کلیک کنید
  • 135 نکته و آموزش از سطح پایین تا پیشرفته در غالب مثال های کوچک و قابل فهم (حجم 97KB)لینک دانلود
  • 101 آموزش پیشرفته ویژوال بیسیک. حتما دانلود کنید(حجم 314KB)لینک دانلود
  • اینم یه کتابچه ویژوال بیسیک برا اونایی که میخوان برنامه نویسی رو شروع کنن(حجم 916KB)لینک دانلود
  • تمام نکات و ترفند های مهم در ویندوز XP حتما دانلود کنید(حجم 86KB)لینک دانلود[تصویر:  new4.gif]
  • بروزرسانی ویژوال بیسک 6 به آخرین نسخه یعنی سرویس پک 6 (حجم 61MB)لینک دانلود[تصویر:  new4.gif]

(آخرین ویرایش در این ارسال: ۲۳-مرداد-۱۳۸۶, ۲۳:۲۹:۲۹، توسط Pedram_HookEx.)
۲۳-مرداد-۱۳۸۶, ۰۳:۳۳:۱۱
ارسال‌ها
پاسخ
تشکر شده توسط : Kadilak, nImaarek
Pedram_HookEx آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 459
موضوع‌ها: 23
تاریخ عضویت: خرداد ۱۳۸۴

تشکرها : 1
( 109 تشکر در 65 ارسال )
ارسال: #6
RE: آموزش چهار روش کلی اینجکت کد برای بدست آوردن پسورد TextBox
سلام خسرو چطوری بابا پیدات نمیشه نه توی یاهو مسنجر میای نه توی سایت میای سر بزنی بابا دلمون تنگ شده
قشنگ تعریف کن ببینم این روزا چکارا میکردی

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

آموزش ایجاد یک Dll استناندارد در ویژوال بیسیک

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

_______________________________________________________________________________
  • کشف الکتریسیته توسط پارتها برای اولین بار کلیک کنید
  • 135 نکته و آموزش از سطح پایین تا پیشرفته در غالب مثال های کوچک و قابل فهم (حجم 97KB)لینک دانلود
  • 101 آموزش پیشرفته ویژوال بیسیک. حتما دانلود کنید(حجم 314KB)لینک دانلود
  • اینم یه کتابچه ویژوال بیسیک برا اونایی که میخوان برنامه نویسی رو شروع کنن(حجم 916KB)لینک دانلود
  • تمام نکات و ترفند های مهم در ویندوز XP حتما دانلود کنید(حجم 86KB)لینک دانلود[تصویر:  new4.gif]
  • بروزرسانی ویژوال بیسک 6 به آخرین نسخه یعنی سرویس پک 6 (حجم 61MB)لینک دانلود[تصویر:  new4.gif]

(آخرین ویرایش در این ارسال: ۲۳-مرداد-۱۳۸۶, ۲۳:۴۹:۴۱، توسط Pedram_HookEx.)
۲۳-مرداد-۱۳۸۶, ۲۳:۴۱:۳۵
ارسال‌ها
پاسخ
تشکر شده توسط : Kadilak
Payman62 آفلاین
مدیر بخش ویژوال بیسیک
*****

ارسال‌ها: 2,273
موضوع‌ها: 149
تاریخ عضویت: اسفند ۱۳۸۴

تشکرها : 1308
( 3661 تشکر در 942 ارسال )
ارسال: #7
RE: آموزش چهار روش کلی اینجکت کد برای بدست آوردن پسورد TextBox
سلام خسرو جان.
خیلی دلم برات تنگ شده بود. جات این مدت خالی بود. امیدوارم دیگه تنهامون نذاری.
۲۴-مرداد-۱۳۸۶, ۰۲:۵۱:۱۶
ارسال‌ها
پاسخ
تشکر شده توسط : Kadilak
Iron_Fist غایب
مدیر بازنشسته
*****

ارسال‌ها: 1,456
موضوع‌ها: 70
تاریخ عضویت: آبان ۱۳۸۴

تشکرها : 109
( 456 تشکر در 134 ارسال )
ارسال: #8
RE: آموزش چهار روش کلی اینجکت کد برای بدست آوردن پسورد TextBox
شرمنده پدرام جان و پیمان جان
آقا من پست ها رو پاک کردم که به تاپیک لطمه وارد نشه
این پست هم زدم بلکه کمکی باشه به بالا اومدن تاپیک و ادامه اون
دوستان موفق باشید
۲۶-مرداد-۱۳۸۶, ۱۷:۰۴:۱۸
ارسال‌ها
پاسخ
تشکر شده توسط : Kadilak
Payman62 آفلاین
مدیر بخش ویژوال بیسیک
*****

ارسال‌ها: 2,273
موضوع‌ها: 149
تاریخ عضویت: اسفند ۱۳۸۴

تشکرها : 1308
( 3661 تشکر در 942 ارسال )
ارسال: #9
RE: آموزش چهار روش کلی اینجکت کد برای بدست آوردن پسورد TextBox
سلام.
پدرام پس روش هایی بعدی چی شدن؟
۰۱-شهریور-۱۳۸۶, ۰۲:۵۷:۱۰
ارسال‌ها
پاسخ
تشکر شده توسط : Kadilak
Pedram_HookEx آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 459
موضوع‌ها: 23
تاریخ عضویت: خرداد ۱۳۸۴

تشکرها : 1
( 109 تشکر در 65 ارسال )
ارسال: #10
RE: آموزش چهار روش کلی اینجکت کد برای بدست آوردن پسورد TextBox
شرمنده فعلا دارم روی مقاله ی کار با حلقه ها کار می کنم . چون پیش نیاز آموزش های قبلی بود مجبور شدم اول روی این کار کنم ، ولی بقیه ی روش ها هم حتما بعد از این آموزش می ذارم .
۰۲-شهریور-۱۳۸۶, ۰۱:۰۴:۰۸
ارسال‌ها
پاسخ
تشکر شده توسط : Kadilak
Pedram_HookEx آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 459
موضوع‌ها: 23
تاریخ عضویت: خرداد ۱۳۸۴

تشکرها : 1
( 109 تشکر در 65 ارسال )
ارسال: #11
RE: آموزش چهار روش کلی اینجکت کد برای بدست آوردن پسورد TextBox
سلام به تمامی دوستان همون طور که گفتم برای درک بهتر مباحثی که آموزش داده شد مقاله
استفاده از حلقه ها در ویژوال بیسیک و انواع آن و کاربرد آنها(Hooks In VB)
را حتما یک مرور کنید لینک مطلب

_______________________________________________________________________________
  • کشف الکتریسیته توسط پارتها برای اولین بار کلیک کنید
  • 135 نکته و آموزش از سطح پایین تا پیشرفته در غالب مثال های کوچک و قابل فهم (حجم 97KB)لینک دانلود
  • 101 آموزش پیشرفته ویژوال بیسیک. حتما دانلود کنید(حجم 314KB)لینک دانلود
  • اینم یه کتابچه ویژوال بیسیک برا اونایی که میخوان برنامه نویسی رو شروع کنن(حجم 916KB)لینک دانلود
  • تمام نکات و ترفند های مهم در ویندوز XP حتما دانلود کنید(حجم 86KB)لینک دانلود[تصویر:  new4.gif]
  • بروزرسانی ویژوال بیسک 6 به آخرین نسخه یعنی سرویس پک 6 (حجم 61MB)لینک دانلود[تصویر:  new4.gif]

۰۵-شهریور-۱۳۸۶, ۱۶:۰۲:۰۰
ارسال‌ها
پاسخ
تشکر شده توسط : HoseinVig, Kadilak


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  بدست آوردن عین قسمت صحیح و اعشار mr91090 3 3,559 ۱۲-دى-۱۳۹۴, ۱۴:۵۲:۴۲
آخرین ارسال: sharin
  [سوال] به دست آوردن ماکسیمم یا مینیمم مقدار یک رنج اکسل eppagh 3 4,164 ۰۹-دى-۱۳۹۳, ۱۵:۳۲:۳۷
آخرین ارسال: eppagh
Question بدست اوردن IP ISP Ghoghnus 9 13,453 ۰۴-فروردین-۱۳۹۳, ۱۳:۳۲:۲۶
آخرین ارسال: mahdi321
  سورس کد بدست اوردن ادد لیست یاهو storng_function 15 17,977 ۱۶-بهمن-۱۳۹۲, ۱۷:۱۷:۱۰
آخرین ارسال: majid12376
  [سوال] sin cos بدست اوردن saeedsmk 1 2,076 ۰۲-بهمن-۱۳۹۲, ۰۰:۰۳:۱۰
آخرین ارسال: saeedsmk
  آموزش ساخت ستاپ برای برنامه Iron_Fist 48 58,427 ۲۵-دى-۱۳۹۲, ۱۵:۲۶:۳۴
آخرین ارسال: javad917
  آموزش دکمه ورو برای برنامه های تحت ویژوال بیسیک ovimez 5 5,790 ۲۶-آذر-۱۳۹۲, ۰۰:۳۲:۴۸
آخرین ارسال: Ghoghnus
  سوال در مورد بدست آوردن سورس Hacker_2010 7 6,056 ۰۵-مرداد-۱۳۹۲, ۰۰:۵۴:۵۰
آخرین ارسال: babyy
  بدست آوردن مطالب وب javaweb 4 5,975 ۱۶-خرداد-۱۳۹۲, ۱۳:۲۷:۳۰
آخرین ارسال: javaweb
  به دست اوردن ip یک textbox در web setroyd 3 3,525 ۱۹-فروردین-۱۳۹۲, ۲۲:۳۶:۰۷
آخرین ارسال: babyy

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

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