امتیاز موضوع:
  • 2 رأی - میانگین امتیازات: 3
  • 1
  • 2
  • 3
  • 4
  • 5
injection
نویسنده پیام
The.Ghost غایب
مدیر بازنشسته
*****

ارسال‌ها: 461
موضوع‌ها: 201
تاریخ عضویت: مهر ۱۳۸۸

تشکرها : 674
( 354 تشکر در 158 ارسال )
ارسال: #1
Question  injection
سلام
می خواستم بدونم چه فرقی میکنه که ما Code injection استفاده کنیم برای پردازش و یا از dll injection برای پردازش ها استفاده کنیم.

کلا چه فرقی بین Code injection و dll injection وجود داره؟
و از کدام یکی استفاده کنیم بهتر هست؟

و سئوال آخر وقتی ما dll injection انجام میدم که تابعی ای که نوشتیم اجراء بشه بعد چطوری می تونیم dll injection که به پردازش مورد نظر انجام داده شده است را غیر فعال کنیم یعنی فضای dll injection را از پردازش چطور آزاد و یا پاک کنیم؟

با تشکر فراوان.

Assembly Language 039

۱۶-فروردین-۱۳۹۳, ۰۱:۳۸:۰۷
ارسال‌ها
پاسخ
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #2
RE: injection
تفاوتشون در اینه که در codeinjection اگه توابعی رو درش استفاده کرده باشین که لود نشده باشه تو پروسه شما خودتون باید لودش کنین اما تو dll injection تمامی رفرنسها به apiها رو خود سیستم عامل انجام میده
شما با تابع loadlibrary یک dll رو اینجکت میکنین و با استفاده از تابع freelibrary و دادن هندل dll به اون(هندلشو هم با استفاد از توابع api و گرفتن لیست ماژولهای لود شده)

[تصویر:  xshon.png]
از آن نماز که خود هیچ از آن نمی فهمی خدا چه فایده و بهره اکتساب کند
تفاخری نبود مر خدای عالم را که چون تو ابلهی او را خدا حساب کند
۱۶-فروردین-۱۳۹۳, ۰۸:۲۳:۳۶
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : The.Ghost, babyy, godvb
The.Ghost غایب
مدیر بازنشسته
*****

ارسال‌ها: 461
موضوع‌ها: 201
تاریخ عضویت: مهر ۱۳۸۸

تشکرها : 674
( 354 تشکر در 158 ارسال )
ارسال: #3
Question  RE: injection
(۱۶-فروردین-۱۳۹۳, ۰۸:۲۳:۳۶)lord_viper نوشته است: تفاوتشون در اینه که در codeinjection اگه توابعی رو درش استفاده کرده باشین که لود نشده باشه تو پروسه شما خودتون باید لودش کنین اما تو dll injection تمامی رفرنسها به apiها رو خود سیستم عامل انجام میده
شما با تابع loadlibrary یک dll رو اینجکت میکنین و با استفاده از تابع freelibrary و دادن هندل dll به اون(هندلشو هم با استفاد از توابع api و گرفتن لیست ماژولهای لود شده)

ممنون جناب lord_viper.Rolleyes
فقط یک سئوال dll که injection شده به یک پردازش را چطوری باید هندلشو پیدا کنیم و بعد از freelibrary استفاده کنیم؟؟؟؟ Sad

Assembly Language 039

۱۶-فروردین-۱۳۹۳, ۰۸:۴۱:۳۰
ارسال‌ها
پاسخ
saeedsmk آفلاین
مدیر بخش کرک و کامپیوتر
*****

ارسال‌ها: 506
موضوع‌ها: 74
تاریخ عضویت: آبان ۱۳۸۴

تشکرها : 677
( 1179 تشکر در 348 ارسال )
ارسال: #4
RE: injection
سلام
خوب هستيد
من دلفي بلد نيستم ولي بر اساس تجربيات كه دارم ميدونم وقتي كه با استفاده از loadlibrary فايل dll لود ميكنيد اگر موفقت اميز باشه اين عمل هندل اون به برنامه برگشت داده ميشه وگرنه مقدار 0 ، از همين هندل براي انلود استفاده ميشه .
راستي يادتون باشه حين اجراي توابع داخلي dll در برنامه اگر آزادش كنند ممكنه برنامه كرش كنه .
اميدوارم كمك كنه
به اميدديدار

در دنياي كه مرگ شكارچي ان است بايد شكارچي بود - تعليمات دون خوان نوشته كارلوس كاستاندار
۱۶-فروردین-۱۳۹۳, ۱۳:۵۶:۱۹
ارسال‌ها
پاسخ
تشکر شده توسط : The.Ghost, babyy, godvb, lord_viper, omid_phoenix
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #5
RE: injection
(۱۶-فروردین-۱۳۹۳, ۰۸:۴۱:۳۰)The.Ghost نوشته است: یک سئوال dll که injection شده به یک پردازش را چطوری باید هندلشو پیدا کنیم و بعد از freelibrary استفاده کنیم؟؟؟؟ Sad
شما 2 راه داری
راه اولی رو که سعید عزیز گفنم
راه دوم رو هم من تو پست اولم گفته بودم
یک سری توابع هستن که لیست dll های لود شده در یک پروسه رو برمیگردونن مثلا NtQueryInformationProcess از nrdll.dll و ساده ترش EnumProcessModules از psapi.dll

[تصویر:  xshon.png]
از آن نماز که خود هیچ از آن نمی فهمی خدا چه فایده و بهره اکتساب کند
تفاخری نبود مر خدای عالم را که چون تو ابلهی او را خدا حساب کند
۱۷-فروردین-۱۳۹۳, ۱۰:۰۷:۳۰
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : babyy, saeedsmk, The.Ghost, omid_phoenix
The.Ghost غایب
مدیر بازنشسته
*****

ارسال‌ها: 461
موضوع‌ها: 201
تاریخ عضویت: مهر ۱۳۸۸

تشکرها : 674
( 354 تشکر در 158 ارسال )
ارسال: #6
RE: injection
یک سئوال مهم داشتم که اگه لطف کنید و پاسخ بدهید بی نهایت ممنون میشم.

برای مثال:
ما یک برنامه داریم که اسمش Form1 هست داخل این فرم هم یک Timer1 هست که هر یک دقیقه ساعت و تاریخ ویندوز به ما نمایش میدهد، یعنی این یک برنامه در حال اجراء هست.

حالا چطوری ما میتونیم به این برنامه injection کنیم و با این عمل به اون Timer1 دسترسی پیدا کنیم و زمانشو برای مثال بکنیم هر دو دقیقه یک بار پیغام بده؟؟؟؟

آیا به نظر شما این کار امکان پذیر هست؟؟؟؟
چون من هر کاری کردم نتوانستم با injection به کامپیوننت های برنامه دسترسی پیدا کنم؟؟؟؟
لطف اساتید محترم راهنمایی کنید، با تشکر.

Assembly Language 039

۲۳-فروردین-۱۳۹۳, ۲۳:۱۶:۴۱
ارسال‌ها
پاسخ
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #7
RE: injection
اگه تایمر از توابع api استفاده کنه میشه هوکش کرد
اگه از vcl و rtti دلفی استفاده میکنه باید اسم کلاسشو بگیرین getclassname بعد اونو تبدیل به شیی تایمر کنید و مقدار خاصیتشو تغییر بدین

[تصویر:  xshon.png]
از آن نماز که خود هیچ از آن نمی فهمی خدا چه فایده و بهره اکتساب کند
تفاخری نبود مر خدای عالم را که چون تو ابلهی او را خدا حساب کند
۲۴-فروردین-۱۳۹۳, ۰۸:۲۷:۳۱
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : babyy, The.Ghost
The.Ghost غایب
مدیر بازنشسته
*****

ارسال‌ها: 461
موضوع‌ها: 201
تاریخ عضویت: مهر ۱۳۸۸

تشکرها : 674
( 354 تشکر در 158 ارسال )
ارسال: #8
RE: injection
(۲۴-فروردین-۱۳۹۳, ۰۸:۲۷:۳۱)lord_viper نوشته است: اگه تایمر از توابع api استفاده کنه میشه هوکش کرد
اگه از vcl و rtti دلفی استفاده میکنه باید اسم کلاسشو بگیرین getclassname بعد اونو تبدیل به شیی تایمر کنید و مقدار خاصیتشو تغییر بدین

ممنون دوست عزیز، نمونه کدی مثالی ندارید که در این زمینه باشه و یا یکم بیشتر توضیح بدهید؟؟Rolleyes

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

با تشکر فراوان.

Assembly Language 039

(آخرین ویرایش در این ارسال: ۲۴-فروردین-۱۳۹۳, ۲۳:۵۱:۲۴، توسط The.Ghost.)
۲۴-فروردین-۱۳۹۳, ۱۷:۵۳:۵۳
ارسال‌ها
پاسخ
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #9
RE: injection
کدخاصی ندارم ولی شما میتونی از روی کپشن فورمی که اون تایمر توش هست هندل فورم رو بگیری از طریق هندل به کلاسش برسی و یک متغییر ازش بسازی با داشتن متغییر فورم مورد نظر میتونی به المانهاش که اون تایمر هم میشه دسترسی پیدا کنی و با استفاده از کلاسش مقدارشو عوض کنی
البته این یک نظر هست کد خاصی هم جایی ندیدم ولی میشه اینو تست کرد
البته دلفی تنظیمات پیشفرض کامپوننتها رو تو سکشن ریسورس ذخیره میکنه که با یک resource hacker میشه اونها رو دید و تغییر داد امتحانش ضرری نداره

[تصویر:  xshon.png]
از آن نماز که خود هیچ از آن نمی فهمی خدا چه فایده و بهره اکتساب کند
تفاخری نبود مر خدای عالم را که چون تو ابلهی او را خدا حساب کند
۲۵-فروردین-۱۳۹۳, ۱۰:۲۹:۳۶
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : The.Ghost, babyy
The.Ghost غایب
مدیر بازنشسته
*****

ارسال‌ها: 461
موضوع‌ها: 201
تاریخ عضویت: مهر ۱۳۸۸

تشکرها : 674
( 354 تشکر در 158 ارسال )
ارسال: #10
RE: injection
(۲۵-فروردین-۱۳۹۳, ۱۰:۲۹:۳۶)lord_viper نوشته است: کدخاصی ندارم ولی شما میتونی از روی کپشن فورمی که اون تایمر توش هست هندل فورم رو بگیری از طریق هندل به کلاسش برسی و یک متغییر ازش بسازی با داشتن متغییر فورم مورد نظر میتونی به المانهاش که اون تایمر هم میشه دسترسی پیدا کنی و با استفاده از کلاسش مقدارشو عوض کنی
البته این یک نظر هست کد خاصی هم جایی ندیدم ولی میشه اینو تست کرد
البته دلفی تنظیمات پیشفرض کامپوننتها رو تو سکشن ریسورس ذخیره میکنه که با یک resource hacker میشه اونها رو دید و تغییر داد امتحانش ضرری نداره

ممنونم ولی من هر کاری می کنم بازم نمیتونم دسترسی به اون تایمر داشته باشم با این که تمام مشخصاتش هم میدونم مثلا اسم فرم برنامه و اسم تایمر ولی بعد از injection یک کلاس تایمر تعریف کردم ولی نمیدونم اینو چطوری به اون تایمره ربط بدم و بعد تغییرات انجام بدم؟؟؟؟ :divar: :divar:

Assembly Language 039

(آخرین ویرایش در این ارسال: ۲۵-فروردین-۱۳۹۳, ۱۲:۱۳:۲۴، توسط The.Ghost.)
۲۵-فروردین-۱۳۹۳, ۱۲:۱۱:۴۱
ارسال‌ها
پاسخ
The.Ghost غایب
مدیر بازنشسته
*****

ارسال‌ها: 461
موضوع‌ها: 201
تاریخ عضویت: مهر ۱۳۸۸

تشکرها : 674
( 354 تشکر در 158 ارسال )
ارسال: #11
RE: injection
من این کد زیر را نوشتم.
کد:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  WinClass: array[0..255] of Char;
  str:string;
  MyHandle: THandle;
begin
MyHandle:=FindWindow(nil, Pchar(Trim(Edit1.Text)));

if (MyHandle <> 0) then
   begin
     GetClassName(MyHandle, WinClass, SizeOf(WinClass));
     ShowMessage(WinClass);

     for i := 0 to Form1.ComponentCount - 1 do
       begin
         if Form1.Components[i] is TLabel then
           begin
             Str:=Trim((Form1.Components[i] as TLabel).Caption);
             ShowMessage(Str);
         end;
     end;
end;
end;

حالا چطوری میشه متغییر WinClass که یک رشته می باشد را به متغییر فرم تبدیل کرد.
که بعد از این کار به جای Form1 بزاریم WinClass که بعد بشه برای مثال Label برنامه را تغییر داد.
در اینجا من از Label استفاده کردم چون گفتم هم راحت تر است و هم سریع نتیجه را میشه دید که بعد برم برای اون تایمر استفاده کنم.

سئوال من الان این هست که چطوری متغییر WinClass را چطوری ربطش بدم. و بعد به جای Form1 بزارم WinClass ؟؟؟؟

لطفا راهنمایی کنید.

Assembly Language 039

۲۵-فروردین-۱۳۹۳, ۱۳:۴۷:۰۲
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  process injection مقاله lord_viper 2 3,005 ۲۷-آذر-۱۳۹۱, ۰۹:۴۷:۱۴
آخرین ارسال: zahmatkesh8519
Question Injection The.Ghost 6 6,002 ۲۸-اردیبهشت-۱۳۹۱, ۱۲:۳۲:۵۰
آخرین ارسال: lord_viper
  Yahoo Fun(Code Injection) veyskarami 5 3,079 ۱۷-اردیبهشت-۱۳۸۷, ۱۲:۲۵:۴۶
آخرین ارسال: veyskarami

پرش به انجمن:


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

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