ساخت کامپایلر در ویژوال بیسیک 6

margeGole

New Member
سلام دوستان

کسی از دوستان اطلاع دارن چطور میشه یه کامپایلر توی ویژوال بیسیک 6 طراحی کرد ؟ منظورم تبدیل به اسمبلی و اینچیزا نیست ، یه کامپایلر مستقل که سورس رو توی خودش Run کنه ، این رو برای جلوگیری از گیر دادن آنتی ویروس ها می خوام !!!
 

the_king

مدیرکل انجمن
سلام دوستان

کسی از دوستان اطلاع دارن چطور میشه یه کامپایلر توی ویژوال بیسیک 6 طراحی کرد ؟ منظورم تبدیل به اسمبلی و اینچیزا نیست ، یه کامپایلر مستقل که سورس رو توی خودش Run کنه ، این رو برای جلوگیری از گیر دادن آنتی ویروس ها می خوام !!!

اگه منظورتون اینه که بجای تبدیل کد به فایل exe مستقیما کد ها رو سطر به سطر اجرا کنه، میشه مفسر، نه کامپایلر.
کد زیادی لازم داره و هر چقدر که توانایی مفسر رو بیشتر کنید پیچیده تر میشه. در ضمن مفسر کندی هم خواهد شد.

اگه دقیقا توضیح بدهید که آنتی ویروس به چه موردی گیر میده بهتر میشه برایش راه حل پیدا کرد.
 

margeGole

New Member
اگه منظورتون اینه که بجای تبدیل کد به فایل exe مستقیما کد ها رو سطر به سطر اجرا کنه، میشه مفسر، نه کامپایلر.
کد زیادی لازم داره و هر چقدر که توانایی مفسر رو بیشتر کنید پیچیده تر میشه. در ضمن مفسر کندی هم خواهد شد.

اگه دقیقا توضیح بدهید که آنتی ویروس به چه موردی گیر میده بهتر میشه برایش راه حل پیدا کرد.

ولله بنده یه بار یه سورس واسه پیدا کردن پسورد های ذخیره شده ی فایرفاکس رو پیدا کردم و آنتی ویروس بهش گیر داد ، یه بار واسه چت با یاهو سورس نوشتم آنتی ویروس بهش گیر داد ، یه بار یه تروجان کاربردی نوشته بودم که آنتی ویروس بهش گیر داد ، بعدها متوجه شدم که کلا آنتی ویروس ها به بعضی توابع مثلا Find Window مشکل دارن ، بنده یه چند روز پیش از یکی از دوستان شنیدم که باید از RunPE برای حل مشکلم استفاده کنم ، منبع فارسی خوبی برای این موضوع پیدا نکردم و ازش خواستم برام توضیح بده ، اطلاع دقیقی نداشت و می گفت کد رو باید به صورت Run Time اجرا کنم تا آنتی ویروس بهش گیر نده .
از همین جا بود که بنده تصمیم گرفتم همچین چیزی بنویسم ، یا حداقل بتونم یه کریپتور اختصاصی رو بنویسم واسه خودم تا دیگه از شر آنتی ویروس ها راحت بشم. اگه کمکم کنی لطف بزرگی رو در حق انجام میدی.

ممنون / موفق باشی
 

the_king

مدیرکل انجمن
ولله بنده یه بار یه سورس واسه پیدا کردن پسورد های ذخیره شده ی فایرفاکس رو پیدا کردم و آنتی ویروس بهش گیر داد ، یه بار واسه چت با یاهو سورس نوشتم آنتی ویروس بهش گیر داد ، یه بار یه تروجان کاربردی نوشته بودم که آنتی ویروس بهش گیر داد ، بعدها متوجه شدم که کلا آنتی ویروس ها به بعضی توابع مثلا Find Window مشکل دارن ، بنده یه چند روز پیش از یکی از دوستان شنیدم که باید از RunPE برای حل مشکلم استفاده کنم ، منبع فارسی خوبی برای این موضوع پیدا نکردم و ازش خواستم برام توضیح بده ، اطلاع دقیقی نداشت و می گفت کد رو باید به صورت Run Time اجرا کنم تا آنتی ویروس بهش گیر نده .
از همین جا بود که بنده تصمیم گرفتم همچین چیزی بنویسم ، یا حداقل بتونم یه کریپتور اختصاصی رو بنویسم واسه خودم تا دیگه از شر آنتی ویروس ها راحت بشم. اگه کمکم کنی لطف بزرگی رو در حق انجام میدی.

ممنون / موفق باشی
شخصا تا به حال چنین مشکلی رو با ویروس کش ها نداشتم، البته از وضعیت همه ویروس کش هم اطلاعی ندارم.
تابع FindWindow خیلی عمومی یه، در اکثر برنامه های تحت ویندوز استفاده شده، در هر صورت قبلا کدی رو
معرفی کردم که میشه تابع API ای رو بدون اینکه با Declare تعریف اش کنید فراخوانی نمایید :

فراخوانی توابع API بدون Declare در ویژوال بیسیک

با کد معرفی شده فراخوانی FindWindow اینطوری خواهد بود :
کد:
    Dim hWnd As Long
    Dim LibCall As New LibCall
    With LibCall
        .CallType = LIBCall_StdCall
        .LibraryName = "user32.dll"
        .FunctionName = "FindWindowA"
        hWnd = .CallFunction(0, "Calculator")
        MsgBox hWnd
    End With

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

اینکه ویروس کش به فایل اجرایی Pack و Encode شدن گیر بده یا نه قابل پیشبینی کردن نیست، بعضی از ویروس کش ها
به همه فایل های اجرایی Pack و Encode شده گیر می دهند. بعضی هاشون این توانایی رو دارند که محتویات Pack رو
از حالت فشرده خارج کنند و Pack کردن شون فایده ای نداره.
 

margeGole

New Member
ممنونم برادر ،

اما به محض خارج کردن سورس از حالت Rar آنتی ویروس آویرای بنده به فایل Beep.exe گیر داد به عنوان TR/Dropper.Gen

هر برنامه ای که می نویسم این مشکل رو دارم باهاش ، چند وقت پیش یه فایل که مطمئن بودن تروجان هست رو از یکی گرفتم ولی آنتی ویروسم بهش گیر نداد ، یعنی هیچ آنتی ویروسی بهش گیر نداد ، از طرف خواستم روشش رو توضیح بده ولی چیزی بهم نگفت. من گیر کردم !!!!
 

the_king

مدیرکل انجمن
ممنونم برادر ،

اما به محض خارج کردن سورس از حالت Rar آنتی ویروس آویرای بنده به فایل Beep.exe گیر داد به عنوان TR/Dropper.Gen

هر برنامه ای که می نویسم این مشکل رو دارم باهاش ، چند وقت پیش یه فایل که مطمئن بودن تروجان هست رو از یکی گرفتم ولی آنتی ویروسم بهش گیر نداد ، یعنی هیچ آنتی ویروسی بهش گیر نداد ، از طرف خواستم روشش رو توضیح بده ولی چیزی بهم نگفت. من گیر کردم !!!!

این مورد رو هم بررسی کنید، در منوی Project ویژوال استدیو گزینه ...projectname Properties را بزنید و در
زبانه Compile گزینه Compile to P-Code رو فعال کنید و OK کنید و حالا مجددا با گزینه Make در منوی File فایل
اجرایی بسازید. ببینید به نوع P-Code اش هم گیر میده یا نه.
 

margeGole

New Member
این مورد رو هم بررسی کنید، در منوی project ویژوال استدیو گزینه ...projectname properties را بزنید و در
زبانه compile گزینه compile to p-code رو فعال کنید و ok کنید و حالا مجددا با گزینه make در منوی file فایل
اجرایی بسازید. ببینید به نوع p-code اش هم گیر میده یا نه.

آره داش ، به اینم گیر میده !!! به محض کامپایل کردن آنتی شناساییش میکنه !
 

Aref_Alikhani

Well-Known Member
سلام
ببخشید پریدم وسط بحثتون!!!
خب جناب کینگ با چه زبانی طراحی یه کامپایلر یا مفسر که قدرتمند باشه و سرعت زیادی هم داشته باشه امکان پذیره؟؟؟:rose:
 

the_king

مدیرکل انجمن
سلام
ببخشید پریدم وسط بحثتون!!!
خب جناب کینگ با چه زبانی طراحی یه کامپایلر یا مفسر که قدرتمند باشه و سرعت زیادی هم داشته باشه امکان پذیره؟؟؟:rose:

حالا سرعت به کنار، باید اول زبانی انتخاب بشه که خودش از عهده قابلیت های یک کامپایلر بر بیاد، ویژوال بیسیک
علاوه بر اینکه کنده، محدودیت های زیادی هم داره، مثلا نوع داده مشخصی به عنوان اشاره گر نداره و باید
به زور VarPtr و توابع API اشاره گر رو داخل بکار برد، متغیر های صحیح بدون علامت Unsigned رو پشتیبانی نمی کنه،
همه کد ها رو تک نخی (Single Thread) اجرا می کنه، مدیریت رخداد های پنجره ها (WinProc) اش ناقصه،
به دستورات کد ماشین یا زبان اسمبلی دسترسی نداره، مدیریت حافظه اش تحت تسلط برنامه نویس نیست
و ...

اغلب برای ساختن کامپایلر ها از زبان های C و ++C استفاده می کنند، دلایل زیادی هم داره، اولا اینکه یکسری
ابزار های کامپایلر ساز هستند که اصلا کارشون ساختن کامپایلره و خروجی شون کد های C و ++C است و
مراحل ساختن کامپایلر رو ساده تر می کنند و اگه همه کد کامپایلرتون رو هم نسازند، لااقل بخش زیادی از کد کامپایلر
رو براتون می نویسند. در ضمن یکسری کد آماده کامپایلر های رایگان و کد باز هست که به زبان C یا ++C نوشته شده اند
و کامپایلر های جدید رو بر اساس کد اونها می نویسند. در ضمن C و ++C زبان های منعطف و قدرتمندی اند و هیچکدوم
از معایب زبان ویژوال بیسیک رو هم ندارند.
 

margeGole

New Member
برادر ، در مورد RunPE می تونی بهم یه سری اطلاعات بدی ؟ اصلا این قابلیت در ویژوال بیسیک امکان پذیره ؟
 

the_king

مدیرکل انجمن
برادر ، در مورد RunPE می تونی بهم یه سری اطلاعات بدی ؟ اصلا این قابلیت در ویژوال بیسیک امکان پذیره ؟

RunPE تکنیکی یه که قبلا در همون مثال فراخوانی توابع API بدون Declare در ویژوال بیسیک انجام دادیم،
یک پروسه ای ایجاد میشه، حافظه مربوط به روتین اش با کد های زبان ماشین دلخواه مون پر میشه و سپس به پروسه
فرمان اجرا شدن رو می دهیم و در نتیجه کد های زبان ماشین ای که داخل حافظه اش نوشتیم اجرا میشه.
 

جدیدترین ارسال ها

بالا