PDA

View Full Version : اجرا کردن برنامه در Startup و مشکل با ویروس کش NOD3



S_VB.max
دوشنبه 05 شهریور 1386, 17:13 عصر
سلام
برنامه من باید با بالا آمدن ویندوز ، به طور خودکار اجرا شود ، دستوری نوشتم که توی رجیستری مسیر برنامه را قرار دهد و این کار را برام انجام بده

اما وقتی برنامه را به فایل اجرایی تبدیل می کنم ویروس کش NOD32 فعال میشه و این فایل را به عنوان ویروس می شناسه و بعدشم پاکش می کنه (این تا زمانی است که دستور مربوطه وجود داشته باشه) حالا باید چی کار کنم تا این مشکل پیش نیاد ؟

S_VB.max
دوشنبه 12 شهریور 1386, 10:52 صبح
کسی هست جوابی برای این سئوال داشته باشد ؟

Bahram0110
دوشنبه 12 شهریور 1386, 11:31 صبح
به عنوان چه ویروسی میشناسه برنامتو؟ اسمی که رو برنامه می زاره بگو . . .

dot_net_iran
دوشنبه 12 شهریور 1386, 15:22 عصر
سلام دوسته من .و.
تکنولوژی ویروس یاب بر پایه فایل سیستمی و ریجستری و پورت سیستمها و پروسسور سیستم هستش . شما متاسفانه امدین در ریجستری کلیدهایی یا ساب کلیدهایی رو تولید یا مال خود ویندوز رو مقدار دهی کردی و یا هم از کتابخانه dll وی بی با یکسری اسکریپتهاداری کار میکنی که این ویروس کش ما اونو نمیتونه بزاره ران شه . در ضمن اگه میشه سواله آقا بهرام رو جواب بدین شاید اسکریپت نباشه یا یه چیز دیگه باشه .
خوی اینم طبیعی هست که ویربوس کش اتوماتیک نمیزاره کسی یا برنامه ای به ریجستری دسترسی داشته باشه . بازم مشکلی داره میتونی باهام تماس بگیری
3546 983 0911

S_VB.max
دوشنبه 12 شهریور 1386, 18:18 عصر
ممنون از توجه شما
این کل دستوراتی هست که من استفاده می کنم :


Public Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Public Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long ' Note that if you declare the lpData parameter as String, you must pass it By Value.
Public Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long

Public Const REG_SZ = 1
Public Const HKEY_LOCAL_MACHINE = &H80000002


Public Sub StartUp()
Dim AppPath As String
strAppName = App.EXEName
AppPath = App.Path & "\" & App.EXEName & ".exe"
Dim keyhwnd As Long
Dim r As Long
r = RegCreateKey(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Run", keyhwnd)
r = RegSetValueEx(keyhwnd, strAppName, 0, REG_SZ, ByVal AppPath, Len(AppPath))
r = RegCloseKey(keyhwnd)
End Sub

Private Sub Form_Load()
Call StartUp
End Sub


اینم عکسی از ویروس کش :

http://i4.tinypic.com/52ko77a.gif

Bahram0110
دوشنبه 12 شهریور 1386, 20:51 عصر
توی برنامت از توابع ثبت کلید (keylogger) استفاده نمی کنی؟

estefan
دوشنبه 12 شهریور 1386, 22:39 عصر
با upx پکش کن درست میشه

Evil 69
سه شنبه 13 شهریور 1386, 09:23 صبح
تو باید بتونی از توی فایل اصلی برنامت کلمات reg رو حذف کنی چون آنتی ویروس ها بهیک سری کلمات مانند این کلمه حساس هستند و اون فایل رو به عنوان ویروس میشناسن

S_VB.max
سه شنبه 13 شهریور 1386, 09:23 صبح
توی برنامت از توابع ثبت کلید (keylogger) استفاده نمی کنی؟
نه تمام دستوراتی را که من بکار می برم را در بالا من نوشتم
اگر دستور Call StartUp را را پاک کنم دیگه مشکلی نیست


با upx پکش کن درست میشه
میشه بیشتر توضیح بدی ؟

کسانی که ویروس کش nod32 دارند خواهشا دستورات بالا را امتحان کنند ببینند ویروس کش فعال میشه یا نه ؟ شاید این مشکل فقط برای من باشه ؟

S_VB.max
پنج شنبه 15 شهریور 1386, 13:10 عصر
آقای مهران رسا اگه اونا آپلودکنید ممنون میشم

Bahram0110
پنج شنبه 15 شهریور 1386, 14:45 عصر
http://upx.sourceforge.net/

S_VB.max
جمعه 16 شهریور 1386, 12:43 عصر
در سایتی که معرفی کردید upx301w.zip (http://upx.sourceforge.net/download/upx301w.zip) را دانلود کردم
آنتی ویروس را غیرفعال کردم و بعد از اینکه فایل اجرایی را ساختم توی خط فرمان این دستور را نوشتم :

c:\upx.exe c:\Project1.exe
با این کارحجم فایل از 20کیلو بایت به 6کیلو بایت کم شد
اما بعدش وقتی درایو سی را اسکن کردم دوباره فایل Project1.exe را ویروس شناسایی می کنه

Bahram0110
جمعه 16 شهریور 1386, 22:35 عصر
آنتی ویروسا دیگه با پک کردن فایل گول نمی خورن
فایلو باز می کنن و اسکنش می کنن
کدت هم که فکر نمی کنم اشکالی داشته باشه

این کاری که می گم امتحان کن :
تابع Startup رو بی خیال شو و کد مربوط به قرار دادن برنامه در استارت آپ رو در فرم لود قرار بده ببین جواب می ده :متفکر:

djcsaeed
شنبه 17 شهریور 1386, 11:43 صبح
روشی که در بالا اشاره شد روش خوب است.

یه روش دیگه هم پیشنهادی من، از Encrypt Code استفاده کن%

farzampur
شنبه 17 شهریور 1386, 12:25 عصر
سلام
nod و یک سری آنتی ویروسها این قابلیت رو دارند که برنامه هایی رو که حدس بزنن ممکنه برای سیستم ضرر داشته باشند رو مثل ویروس برخورد کرده اونها رو پاک یا قرنطینه میکنن .
شما باید از تنظیمات آنتی ویروس این مورد رو غیر فعال کنین و بگین فقط ویروسهای شناخته شده توسط بانک خودش رو شناسایی کنه و با فایلهای مشکوک کاری نداشته باشه.

S_VB.max
یک شنبه 18 شهریور 1386, 21:56 عصر
این کاری که می گم امتحان کن :
تابع Startup رو بی خیال شو و کد مربوط به قرار دادن برنامه در استارت آپ رو در فرم لود قرار بده ببین جواب می ده :متفکر:

کاری که گفتید را انجام دادم ولی بازم مشکل پا برجاست



یه روش دیگه هم پیشنهادی من، از Encrypt Code استفاده کن%

چطوری می تونم کدها را انکریپت کنم ؟




شما باید از تنظیمات آنتی ویروس این مورد رو غیر فعال کنین و بگین فقط ویروسهای شناخته شده توسط بانک خودش رو شناسایی کنه و با فایلهای مشکوک کاری نداشته باشه.

روش شما زیاد جالب نیست شاید کاربری باشه که این مورد را ندونه و ممکنه فکر کنه که برنامه ویروسی است

djcsaeed
یک شنبه 15 مهر 1386, 07:01 صبح
یا خودتون یه روض برای کد گذاری درست کنید، یا اگه میخواید من چند تا انکریپت بهتون بدم.

فقط دوستان توجه داشته باشید من به دلایل مشغله ی کاری دیر به دیر سر میزنم.

majidrezaei2007
شنبه 22 دی 1386, 04:20 صبح
نه دوست من . اصلا نیازی به این کارا نیست آنتی ویروس فقط در یک حالت اون فایل رو به عنوان ویروس نمی شناسه که آدرس فایلی که تو رجیستری قرار می دی . آدرس همون فایلی که در حال اجرا است باشه نه یک آدرس دلخواه . تنها راه و آسان ترین راه اینه که یک فایل کمکی کنار فایل اصلی بزاری و تو فایل کمکی بگی که فایل اصلی رو برو اونجایی که دلت می خواد کپی کنه و اجراش کنه . بعد از این کار اون فایل سر جایی که می خوای است و آدرس رجیستری هم بدون مزاحمت آنتی ویروس ثبت میشه . در غیر این صورت اگه نخوای دو فایله باشه باید بری value رو که تو رجیستری به ثبت رسوندی رو بخونی و ببینی که فایل اونجایی که می خوای هست یا نه و کلی درد سر دیگه .

HjSoft
شنبه 22 دی 1386, 07:40 صبح
دوست عزیز می تونی با یک برنامه nod32 رو غیر فعال کنی _ ویروس یاب های دیگه میشناسنش __ اگه این ویروسی که گفته باشه تمام بخش ریجستری و nod32 رو از کار می اندازه میتونی برای حل این مشکل برنامه ات رو جای دیگه ای برای استارت آپ قرار بدی __ من باید بگردم ببینم سورسی دارم که کمکت کنه

DoctorJay
شنبه 22 دی 1386, 11:33 صبح
من این کدهارو چند ماه پیش واسه یکی از W-orm هام نوشتم

که NOD32 دیگه بهش گیر نداد و W-ormام بدون هیچ مشکلی حل اجرا شد

حالا شما از این کدا استفاده کن .

توجه : اگر با وجود استفاده از این کدا باز هم NOD32 به برنامت گیر داد

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

که آنتی ویروس با در کنار هم قرار دادن اون کدا و تغییر در رجیستری و ...

فایل شما رو خطرناک اعلام میکنه و مانع اجرای اون میشه .

ببینم چکار میکنی .

کاری که من توی این کدا انجام دادم استفاده نکردن از کلمات شناخته شده است

مثل کلمه ی Copy بوده و بجای اون از کارکترها استفاده کردم

و اینکه دستور کپی رو توی فایل eXeام انجام ندادم و اونو محول کردم به یه فایل دسته ای (Bat)

برای دانلود به این صفحه بروید
(http://barnamenevis.org/forum/showthread.php?t=90906&page=2)

vbhamed
یک شنبه 23 دی 1386, 03:45 صبح
سلام
دوست عزیز نیاز نیست کار زیادی انجام بدی
فقط کدی که نوشتی رو به شکل زیر تغییر بده

ضمنا بهتره به جای HKEY_LOCAL_MACHINE از HKEY_CURRENT_USER استفاده کنی تا توی ویندوز ویستا مشکل نداشته باشی





Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long ' Note that if you declare the lpData parameter as String, you must pass it By Value.
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long

Private Const REG_SZ = 1
Private Const HKEY_CURRENT_USER = &H80000001
Private Const HKEY_LOCAL_MACHINE = &H80000002

Public Sub StartUp()

Dim AppPath As String, strAppName As String

strAppName = App.EXEName
AppPath = App.Path & "\" & App.EXEName & ".exe"

Dim keyhwnd As Long
Dim r As Long
Dim p As String

p = "SOFTWARE\Microsoft\"
p = p & "Windows\CurrentVersion\Run"

r = RegCreateKey(HKEY_LOCAL_MACHINE, p, keyhwnd)
r = RegSetValueEx(keyhwnd, strAppName, 0, REG_SZ, ByVal AppPath, Len(AppPath))
r = RegCloseKey(keyhwnd)

End Sub

Private Sub Form_Load()

Call StartUp

End Sub

DoctorJay
یک شنبه 23 دی 1386, 08:53 صبح
چرا باید کد رو به این شکل که شما نوشتین تغییر داد ؟؟ ( منظورتون کدوم کداست ؟؟ )

میشه دلیلشو بفرمایید ؟؟

ali virus
جمعه 23 فروردین 1387, 09:39 صبح
سلام آقای s _vb.max
شما اون کدهایی رو که مربوط به اجرای برنامه از ریجستری هست رو بزار داخل یه تایمر با اینتروال 1 . بعد یه تایمر دیگه قرار بده با اینتروال 1000 . حالا توی تایمر دوم دستور غیر فعال کردن تایمر اول رو بنویس . (timer1.enabled=false ) . حالا برنامه رو به فایل اجرایی تبدیل کن . من این روش رو امتحان کردم و nod32 اصلا متوجه نشد .
-----------------------------------
اخبار جدیدترین ویروس ها و دانلود آنتی ویروسها و سورس آنها در :
www.ali-virus.blogfa.com (http://www.ali-virus.blogfa.com)

vbhamed
جمعه 23 فروردین 1387, 18:14 عصر
سلام
قبل از هر چیز بگم تاریخ تاپیک قدیمیه ولی برای اینکه بقیه دوستان که میان دلیل موضوع رو بدونن این پست رو زدم

من تو کد بالا خطوط زیر رو جدا کردم
دلیلش هم اینه که عبارات داخل گیومه عینا داخل فایل exe یادداشت میشه و چون یکی از این عبارات تو برنامه دوستمون مسیر استارت آپ رجیستری هست NOD32 بهش گیر می ده
ولی اینطوری که جدا شده نمی تونه تشخیص بده


Dim p As String

p = "SOFTWARE\Microsoft\"
p = p & "Windows\CurrentVersion\Run"

HjSoft
شنبه 24 فروردین 1387, 14:15 عصر
دوست عزیز اگه به جوابت نرسیدی جوابت این است که شما تابع app.vis ... را در یک فرم با reg نباید بیاری حالا شما 2 تا فرم درست کن و ریجستری ها رو تو اون بریز من خودم با این روش nod32 رو دور زدم

H4i0 ACP
چهارشنبه 28 فروردین 1387, 09:10 صبح
سیستمتو به طور کامل با mcafee virusscan enterprise اسکن کن ، شاید تاثیر کرد ....

salamu
پنج شنبه 02 آذر 1391, 10:46 صبح
حالا چرا با رجیستری؟اگه برنامتو توی مسیر زیر کپی کنی برنامه به استارت آپ منتقل می شه:
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
البته اگه ویندوز تو درایو C باشه.که البته خیلی ساده با دستور زیر میشه درایوی که ویندوز توشه رو بدست آورد:

توی ماژول بنویسید:

Option Explicit

Public Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long

Public Function WinDrive() As String
Dim strDrive As String
strDrive = Space(500)
Call GetWindowsDirectory(strDrive, Len(strDrive))
strDrive = Left(strDrive, 3)
WinDrive = strDrive
End Function

حالا ديگه هر جاي برنامه كه نياز به درايو ويندوز داشتيد فقط كافي است كه از كلمه ي WinDrive استفاده كنيد.