ايران ويج

نسخه‌ی کامل: injection به فایل در نسخه 64بیت
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام
برای code injection یا dll injection تو نسخه های 64 بیت ویندوز باید کار خاصی انجام بشه ؟ یعنی متد فرق میکنه ؟
داخل نسخه ی 32 بیت این کد جواب میده :
کد:
hProc=OpenProcess(PROCESS_VM_OPERATION|PROCESS_VM_WRITE|PROCESS_CREATE_THREAD, FALSE, pid);




LPVOID hRemoteMem = VirtualAllocEx(hProc, NULL, 0x20, MEM_COMMIT, PAGE_EXECUTE_READWRITE);


   DWORD numBytesWritten;
   WriteProcessMemory(hProc, hRemoteMem, code, 0x20, &numBytesWritten);

 
   HANDLE hRemoteThread = CreateRemoteThread(hProc, NULL, 0, (LPTHREAD_START_ROUTINE)hRemoteMem, 0, 0, NULL);
حالا تا دوستان بیان حواب تخصصی بدین من یه چیزی بگم که گفته باشم فقط  Biggrin


فکر نمیکنم فرقی بکنه؛ اگه با اسمبلی باشه که فرق میکنه؛ باید واسه ۶۴ بیتی نشوته بشه و با همون ادرسها .. ولی چون این زبانش سطح بالاست . خود کامپایلر تبدیلش میکنه به زبان ماشین؛ فکر نمیکنم کار خاصی باید انجام بدین..
سوالم رو فکر کنم اشتباه پرسیدم چون داشتم سرچ میکردم متوجه شدم تابع CreateRemoteThread از ویندوز ویستا به بعد کار نمیکنه یا یه همچنین چیزی این لینک رو ببین
نقل قول: نقل قول
[NOTE FOR VISTA/WIN7]

CreateRemoteThread() for windows Vista and Windows 7 isn't working because of boundaries (msdn reference: http://msdn.microsof...v=vs.85%29.aspx [end of the page]), the solution is the undocumented function NtCreateThreadEx(), we can get it from ntdll.dll, and replace CreateRemoteThread() with it in the above code (and remember to adjust the parameters)

یا این یکی
سلام خوب هستيد نه فرق نميكنه اما نوع تعريف متغير ها مثلا long بايد 64 بيتي باشه و همچنين بجايCreateRemoteThread از اين استفاده كنيد NtCreateThreadEx 
راهنماي NtCreateThreadEx 
http://securityxploded.com/ntcreatethreadex.php
همچنين به اين لينك ها سر بزنيد
http://www.codeproject.com/Articles/4610...her-Proces
و
https://msdn.microsoft.com/en-us/library...s.85).aspx
و
http://stackoverflow.com/questions/63527...-injection
اميدوارم كمك كنه