امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 5
  • 1
  • 2
  • 3
  • 4
  • 5
مقاله : تزریق کد به کد باینری
نویسنده پیام
lord_viper غایب
مدیر کل انجمن
*****

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

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #1
مقاله : تزریق کد به کد باینری
injection
مقدمه
شاید همیشه برای همه(کسانی که تو کار نفوظ هستن) این سوال هست که چرا وقتی کدی رو به یک فایل اجرایی دیگه اضافه میکنیم با اجرا کردن فایل اول فایل دوم هیچ وقت اجرا نمیشه این کار معمولا به دو روش صورت میگیره استفاده از stub ها و استفاده از injection
Static Injection
تزریق(injection) متدی میباشد که نفوظ گر با دستکاری برنامه ها یا پروسس ها باعث اجرای برنامهای دیگرمی شود.2 نوع تزریق وجود دارد تزریق ایستا(static injection)و تزریق پویا(dynamic injection) .تزریق استا قبل از اجرای برنامه صورت میگیرد وتزریق پویا بعد ازبارگزاری پروسس در حافظه صورت میگیرد
static injection
در تزریق ایستا برنامه مخرب که حجم فوق العاده کوچکی داره روی یکی از قسمتهای غیر ضروری فایل باینری بازنویسی میشه و EntryPoint برنامه با یک Jmp ساده دستکاری میشه ، تا ضمن اجرای برنامه ویروس هم اجرا بشه .
حال ما میخواهیم تزریق ایستا را مورد برسی قرار دهیم برای این کار ما بازی ویندوزMineswipperرا تغییر داده تا در هنگام اجرا به ما پیغام i am trojan را نشان دهد ابتدا به C:\WINDOWS\system32 رفته و یک کپی از winmine.exe را در desktopیامحل مورد نظر قرار میدهیم ما برای تزریق از برنامهOllyDbg که یک اسمبلر32بتی ودیباگر برای محصولات مایکروسافت میباشد استفاده میکنیم.که از ویژگیهای ان تحلیل کد باینری هنگامی که به سورس برنامه دسترسی نداریم میباشد که شما میتوانید انرا از ادرس زیردربافت کنید
http://rapidshare.com/files/97676241/odbgSND.zip
http://home.t-online.de/home/ollydbg
ابتدا برنامه ollydbg را نصب کنیدروی دکمه open کلیک کرده و برنامه winmine.exe رابازکنید چیزی که داخل برنامه میبینید کدهای اسمبلی مربوط به بازی مین روب میباشد فضای برنامه شامل اطلاعات مهم و همچنین اطلاعات غیر ضروری میباشد که با noop یعنی خالی پر شده است این بخشها مکان خوبی برای قرار دادن کدهای مورد نظر بدون خراب شدن فایل میباشد
حالا در ollydbg پنجره سمت راست زیر منو انرا scroll down کنید تا به مکانی برسید که تعداد زیادی noop در کنار هم وجود دارد اینجا مکانی هست که فضای کافی برای قرار دادن کدهایتان وجود دارد.به این مکان غار(cave )نامیده میشود
[تصویر:  2rgzvok.jpg]
حال ما کد خود را در این محل قرار میدهیم. تابعی که میخواهیم از ان استفاده کنیم msgboxA میباشد که به صورت
msgboxA(0,"this is static injection","this is staric injection",0)
میباشد کهکد ان به اسمبلی بصورت
Push 0
Push “i am trojan”
Push “i am trojan”
Push 0
Call User32.MessageBoxA
میشود در کد ماشین و سطح پایین ما باید برای رشته this is static injection یک فضا اختصاص دهیم وسپس ادرس محل ارا با تابع
Push <Address> به تابع ارسال کنیم
حال شروع به اضافه کردن کد به محل مورد نظر میکنیم
ابتدا دستهای از noop های موجود در غار را انتخاب میکنیم(حدود 20 تا)سپس روی این محدوده راست کلیک کرده selectBinary/Edit را انخاب میکنیم
[تصویر:  a5fasy.jpg]
حالا در فیلد ascii ظاهر شده مینویسیم i am Trojan
[تصویر:  2hgybtg.jpg]
حالا متن شما به مکان مورد نظر اضافه شده است حالا ollydbg نیاز به تحلیل کد وارده دارد برای این کار دکمهctrl+A را فشار دهید بعد از این کار شما متن this is static injection را در ان ادرس خواهید دید حالا در زیر مکانی که رشته خود را اضافه کردید روی DB00 دابل کلیک کنید و در کاردی کا ظاهر میشود بنویسید

push0

ودر خط زیری بنویسید push و ادرس رشته ای که درپنجره ollydbg در ستون سمت چپ قرار دارد مینویسیم
push <sting address>
در خط بعد هم دوباره
push <sting address>
را تایپ میکنیم در خط بعدی دوباره مینویسیم
push 0
و در اخرین خط تابع MsgBoxA را فراخوانی میکنیم
call user32.MessageBoxA
[تصویر:  2yys4tw.jpg]
حالا ادرس اولین push 0 را در جایی یاداشت میکنیم
حالا * را فشار دهید تا به نقطه اغاز برنامه برسید حالا 6 سطر ریزرین را انتخاب کرده با ctrl+c کپی کرده و در جایی دیگر مانند notepad قرار دهید تا هنگامی که یک سری دستورها را تغییردادیم انها را سر جای خود قرار دهیم حالا روی خط اول دابل کیک کرده و می نویسیم
jmp<address code>
این address code ادرس مکانی هست که کد ما از انجا شروع میشود توجه داشته باشید که بیشتر از 1 خط تغییر میکند خطهای تغییر یافته بصورت قرمز نمایش داده میشود . خطهایی که تغییر کرده اند باید اضافه شوند با استفاده ازکپی که در ابتدا از انها در مکانی دیگر قرار دادیم با ایجاد این پرش روند اجرا به کد ما منتقل میشود و بعد از ان باید روند اجرا را دوباره به برنامه اصلی بازگردانیم قبل از این کار باید کدهایی را که در ایجاد پرش تغییر کردند را در زیر کد خود بازنویسی کنیم حالا به مکانی که پرش خود را ایجاد کردید بروید و روی ان راست کلیک کرده و follow را انتخاب کنید اگر کارها را درست انجام داده باشید با این کار شما به نقطه شروع کد خود خواهید رفت(یعنی به اولین push 0) حالا کدهای تغییر یافته را در زیر کد خودمان یعنی call msgboxA اضافه میکنیم توجه هنگامی که میخواهید کد های تغییر یافته را اضافه کنید اگر کدی به شکل'PUSH winmine.1234567' بود انرا به صورت push 1234567 بنویسید حالا نوبت به نوشتن سطر اخر و بازگردانی اجرا به برنامه اصلی میباشد حالا در انتها پرش اخر را اضافه میکنیم
Jump<address>
که address مکان اولین خط کد بعد از پرشی است که از اول برنامه به کدمان انجام دادیم میباشد حالا راست کلیک کرده Copy to executable / All Modifications/copyall را انتخاب میکنیم حالا پنجره جدید ظاهر میشود روی این راست کلیک کرده و save to file راانتخاب میکنیم و برنامه را save میکنیم .حالا به مکانی که فایل را ذخیره کردیم رفته و انرا اجرا میکنیم خواهیم دید که یک MsgBoxبا متن I am Trojan ظاهر خواهد شد
موفق باشید
این هم خود مقاله با فورمت pdf
http://rapidshare.com/files/106617598/Sa...n.rar.html

نویسنده Lord_Viper
(آخرین ویرایش در این ارسال: ۲۳-فروردین-۱۳۸۷, ۱۲:۵۲:۱۰، توسط lord_viper.)
۲۳-فروردین-۱۳۸۷, ۱۲:۲۹:۲۵
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : Di Di, hamed_Arfaee, Mamad2003, mbza11, saeedsmk, godvb, amirjan, yonas021, Neynava, saied_new, kuhnavard, AntiVirus, بهروز عباسی, babyy, mahdi321
saeedsmk آفلاین
مدیر بخش کرک و کامپیوتر
*****

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

تشکرها : 677
( 1179 تشکر در 348 ارسال )
ارسال: #2
RE: مقاله : تزریق کد به کد باینری
سلام
خوب هستيد
لورد جان بهتر است براي اينكه پشته و ريجيستر هاي ديگه تغيير نكنند ابتدا با فرمان pusha و بعد pushf از همه چيز يك پشتيبان ايجاد كنيد و اخر كد با دستورات popf و بعد popa اونها رو برگردونيد كه مشكلي ايجاد نشه ( در اين حالت اينجكشن مشكلي ايحاد نميشه چون sp تغيير نميكنه - براي يك مسيج باكس ساده - اما در بعضي از حالت شما بايد بصورت دستي sp رو تنظيم كنيد )

اميدوارم كمك كنه

در دنياي كه مرگ شكارچي ان است بايد شكارچي بود - تعليمات دون خوان نوشته كارلوس كاستاندار
(آخرین ویرایش در این ارسال: ۰۸-مرداد-۱۳۸۷, ۱۱:۰۰:۰۸، توسط saeedsmk.)
۰۸-مرداد-۱۳۸۷, ۱۰:۵۹:۰۵
ارسال‌ها
پاسخ
تشکر شده توسط : lord_viper, Di Di, kuhnavard, babyy, mahdi321
بهروز عباسی آفلاین
تازه وارد

ارسال‌ها: 14
موضوع‌ها: 4
تاریخ عضویت: خرداد ۱۳۹۱

تشکرها : 10
( 60 تشکر در 14 ارسال )
ارسال: #3
RE: مقاله : تزریق کد به کد باینری
درود
lord_viper خیلی ممنون بابت آموزش

چرا عکس هایی که توی متن قرار دادی دیده نمیشن ؟؟؟

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

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

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #4
RE: مقاله : تزریق کد به کد باینری
به تاریخ پست یک نگاه بندازین متوجه میشین

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

ارسال‌ها: 14
موضوع‌ها: 4
تاریخ عضویت: خرداد ۱۳۹۱

تشکرها : 10
( 60 تشکر در 14 ارسال )
ارسال: #5
RE: مقاله : تزریق کد به کد باینری
نقل قول: به تاریخ پست یک نگاه بندازین متوجه میشین
تاریخو دیدم
گفتم شاید عکس های رو روی همین سرور آپ کرده باشی و من نتونم ببینم

نقل قول: به تاریخ پست یک نگاه بندازین متوجه میشین
تاریخو دیدم
گفتم شاید عکس های رو روی همین سرور آپ کرده باشی و من نتونم ببینم
(آخرین ویرایش در این ارسال: ۰۶-فروردین-۱۳۹۲, ۰۰:۴۸:۳۳، توسط بهروز عباسی.)
۰۶-فروردین-۱۳۹۲, ۰۰:۴۷:۱۵
ارسال‌ها
پاسخ
تشکر شده توسط : babyy, mahdi321


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  مقاله:اشنایی با قفلهای سخت افزاری و نرم افزاری lord_viper 3 8,079 ۱۳-شهریور-۱۳۹۲, ۰۱:۳۷:۴۹
آخرین ارسال: NO DONGLE
  خیلی خیلی فوری برای تزریق کد TORIST 4 4,098 ۳۰-دى-۱۳۹۰, ۱۱:۱۹:۴۵
آخرین ارسال: p3rtic@n
  تزریق یه فایل اجرایی به برنامه خودمان zahed2009 2 3,197 ۲۷-فروردین-۱۳۸۸, ۱۴:۲۸:۱۱
آخرین ارسال: zahed2009
  مقاله : اموزش dcompress upx lord_viper 0 2,904 ۱۹-خرداد-۱۳۸۷, ۲۱:۳۶:۴۵
آخرین ارسال: lord_viper

پرش به انجمن:


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

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