شرکت اینتل اعلام کرد که پردازنده نهالم (Nehalem) را در اواخر سال جاری عرضه خواهد کرد. این معماری قرار است به‌نوعی جایگزین ریزمعماری‌های به‌کار رفته در پردازنده‌های 2 Core این شرکت شود. این ریزمعماری سال گذشته به‌صورت بسیار سطحی معرفی شد، اما به‌‌‌‌تازگی و در نمایشگاه کامپیوتکس(Computex) ، اینتل جزییات بیشتری از این ریزمعماری را فاش کرد.

ریزمعماری نوین‌

شرکت اینتل اعلام کرد که پردازنده نهالم (Nehalem)  را در اواخر سال جاری عرضه خواهد کرد. این معماری قرار است به‌نوعی جایگزین ریزمعماری‌های به‌کار رفته در پردازنده‌های 2 Core این شرکت شود. این ریزمعماری سال گذشته به‌صورت بسیار سطحی معرفی شد، اما به‌‌‌‌تازگی و در نمایشگاه کامپیوتکس(Computex) ، اینتل جزییات بیشتری از این ریزمعماری را فاش کرد.

نتایج آزمایش‌های اولیه‌ای که بر روی این پردازنده صورت گرفته، نشان داده است که این ریزمعماری در کنار مزایای زیادی که دارد از اشکالاتی نیز رنج می‌برد. پردازنده‌های ساخته شده با استفاده از این ریزمعماری تا 10 درصد مصرف بیشتری نسبت به پردازنده‌های دیگر این شرکت دارند، اما در عوض 20 تا 50 درصد کارایی بهتری در فرکانس‌های کاری مشابه دارند. این امر بدان معنا است که بهره‌وری کلی این پردازنده‌ها نسبت به پردازنده‌های حال حاضر افزایش پیدا کرده است. در برخی از آزمایش‌ها فرکانس این پردازنده‌ها تا مرز 66/2 گیگاهرتز نیز افزایش پیدا کرده است. یکی از اشکالات اصلی در پردازنده‌های ساخته‌شده با استفاده از این ریزمعماری پایین آمدن سرعت لحظه‌ای در هنگام کار روی درگاه‌‌های PCI Express است. اما به احتمال زیاد، اینتل این اشکال را تا زمان عرضه نهایی این محصول برطرف خواهد کرد.

 گفته می‌شود که شرکت AMD نیز محصول جدیدی را در دست ساخت دارد که با نهالم رقابت خواهد کرد. بلافاصله پس از معرفی این ریزمعماری بسیاری از سازندگان مادربردها پشتیبانی خود را از آن اعلام کردند. شرکت گیگابایت به‌عنوان یکی از بزرگترین شرکت‌های سازنده مادربرد، یکی از شرکت‌هایی بود که تصمیم خود را برای پشتیبانی کامل از ریزمعماری در مادربردهای خود اعلام کرد.

نسل جدید معماری چند هسته‌ای‌

شرکت اینتل همچنین اطلاعات اجمالی را راجع به معماری چندهسته‌ای جدید خود منتشر کرد. پس از شایعاتی که پیرامون پلتفورم بعدی اینتل به‌گوش می‌رسید، خود این شرکت با انتشار جزییاتی بیشتر از این معماری بر شایعات موجود مهر تایید زد. این معماری که لارابی ( Larrabee ) نام دارد، از پردازش چندهسته‌ای برای افزایش سرعت محاسباتی نرم‌افزارهای سه‌بعدی گرافیکی و برنامه‌های شبیه‌ساز علمی و مهندسی استفاده می‌کند. به‌گفته اینتل تا زمان ارایه این پردازنده در سال 2009 یا 2010 اولین مدل‌های مبتنی بر این تراشه پرقدرت با هدف تسخیر بازار رایانه‌های شخصی مخصوص پردازش‌های گرافیکی معرفی خواهد شد.

این شرکت اعلام کرد که در جریان کنفرانس گرافیک رایانه سیگ‌گراف(SIGGRAPH)  درسال 2008، گزارش دقیق‌تری را در این باره منتشر خواهد کرد. لارابی بر مبنای پردازنده‌هایی با معماری مشابه 86 x ساخته خواهد شد، اما مشخصه‌هایی از آن  مانند پردازش برداری و سخت‌افزار اختصاصی برای عملیاتی همچون پردازش بافت‌های گرافیکی  ارتقا و بهبود خواهند یافت. طراحی این پلتفورم با هدف انعطاف بیشتر و قابلیت برنامه‌ریزی پیشرفته‌تر نسبت به تراشه‌های پردازش گرافیکی (GPU)  صورت گرفته است.

به‌گفته اینتل تراشه‌های جدید نسبت به انواع تراشه‌های گرافیکی حال حاضر از فاکتور انتساب به معماری آشنای اینتل و در نتیجه برنامه‌ریزی آسان‌تر برخوردار هستند. با وجود این که گفته می‌شود هسته لارابی بر مبنای فناوری پنتیوم است، اما ویژگی‌هایی مانند multithreading  و گسترش‌های 64 بیتی موجب می‌شوند تا کارایی آن نسبت به پنتیوم، افزایشی چشمگیر از خود نشان بدهد.

سعیده ستوده نیا

منبع :‌ کلیک

دسته ها : سخت‌افزار
شنبه نهم 6 1387
دانشجویان با اخذ این مدرک، دروازه سیسکو را بر روی خود می‌گشایند و خود را برای صعود از پله‌های پیشرفت و تخصص شبکه‌ای آماده می‌کنند. مدرکCCNA در گروه نصب و پشتیبانی و نگهداری شبکه‌ها جای می‌‌گیرد و دارندگان این مدرک این قدرت و توانایی را خواهند یافت که شبکه‌های کوچک و متوسط (100 و کمتر کاربر) را نصب، پیکربندی و راه‌اندازی کنند.

دورهCCNA 
سطح تخصص: آشنایی(Associate)

(Cisco Certified Network Associate CCNA  در قاعده هرم سیسکو جای گرفته و نخستین سطح مهارتی سیسکو، یعنی سطح آشنایی و مقدمات است. دانشجویان با اخذ این مدرک، دروازه سیسکو را بر روی خود می‌گشایند و خود را برای صعود از پله‌های پیشرفت و تخصص شبکه‌ای آماده می‌کنند. مدرکCCNA  در گروه نصب و پشتیبانی و نگهداری شبکه‌ها جای می‌‌گیرد و دارندگان این مدرک این قدرت و توانایی را خواهند یافت که شبکه‌های کوچک و متوسط (100 و کمتر کاربر) را نصب، پیکربندی و راه‌اندازی کنند.

دارندگان این مدرک، این توانایی‌ها را به‌دست می‌آورند:

 افزایش دانش و توانایی‌ها و تجربیات شبکه‌ای و تضمین موقعیت شغلی‌

 پیاده‌سازی سرویس‌های تلفنی برای شبکه‌های کوچک‌

 راه‌اندازی و پیکربندی و مدیریت شبکه‌های محلی (LAN)  ساده با تجهیزات سیسکو

 برگزیدن یکی از سرویس‌هایWAN، با توجه به نیاز شبکه و پیاده‌سازی و مدیریت کلی آن‌

 رفع اشکالات موجود در LAN وVLAN

 آشنایی و مهارت کلی با سیستم عامل روتر (IOS) شامل :

اجرای فرمان‌هایی همچون به‌روزرسانی، پشتیبان‌گیری، دانلود نرم‌افزار ومدیریت IOS 
      تشریح فرمان‌های مسیریاب، مانند تعیین رمز عبور و استفاده از فرمان راهنمایی مسیریاب.

دریافت این مدرک، به اخذ مدرک دیگری نیاز ندارد، ولی بهتر است که دانشجو با این مفاهیم آشنایی کلی داشته باشد:

 با گذرانیدن دوره Network+  (یکی از دوره‌های(CopmTIA ، برای آشنایی پایه‌ای با مفاهیم اصلی شبکه 

 آشنایی کلی با لایه های OSI

- آشنایی با توپولوژی و همبندی شبکه‌

- آشنایی با پروتکلTCP/IP و اصول شبکه‌‌بندی (Subnetting) 

- آشنایی کلی با تجهیزات سخت‌افزاری شبکه مانند: سوییچ، هاب و سخت‌افزار کامپیوتر

  -‌6 ماه تا یک‌سال تجربه کاری در یک شبکه کوچک.

دورهCCDA
سطح تخصص : آشنایی (Associate) 

 (Cisco Certified Design Associate) CCDA تضمین‌کننده دانش طراحی و مهندسی شبکه‌های کوچک اداری است. دارندگان این مدرک توانایی بنیادی برای طراحی و نصب شبکه‌های کوچک سیسکو ( 100 یا کمتر ایستگاه‌های کاری) را خواهند داشت و با استفاده از تجهیزات مسیریاب و سوییچ قادر به پیاده‌سازی LAN و WAN  و سرویس‌های Dial Access برای شرکت‌ها و سازمان‌های گوناگون خواهند بود. همچنین قادر به ارزیابی راه‌حل‌هایی برای رفع اشکالات مربوط به انتقال ترافیک صوت بر روی شبکه خواهند بود.

این مدرک پیش‌نیازی ندارد، اما اخذ مدرک CCNA پیش از آن سفارش شده است.

دورهCCNP
سطح تخصص:  Professional

CCNP  یک مدرک رده بالای مهندسی شبکه است. افرادی که این مدرک را دریافت دارند، خواهند توانست شبکه‌های بزرگ کامپیوتری با یکصد تا بیش از پانصد کامپیوتر را نصب، پیکربندی و عیب‌یابی کنند. این دسته از شبکه‌ها که اغلب در کارخانجات صنعتی بزرگ، مراکز بزرگ بازرگانی و همچنین سازمان‌های بزرگ مستقر هستند و برخلاف شبکه‌های محلی کوچک و شبکه‌های دفتری  به‌دلیل نوع استفاده  افزایش شمار کاربران و نقشی که در پیشبرد اهداف نهایی آن سازمان ایفا می‌کنند، از حساسیت و اهمیت حیاتی برخوردار است. بنابراین، کسانی که با دریافت مدرک CCNP پا به عرصه کار با این‌گونه شبکه‌ها می‌گذارند، نسبت به دارندگان مدارک دیگر (مانند(CCNA ، اهداف بزرگتر و به‌دنبال آن مشکلات و دردسرهای بیشتری را پیش‌رو دارند. در عوض، این افراد از دیدگاه جایگاه شغلی در رده‌های بالاتر و از دیدگاه حساسیت نقشی که به‌عهده دارند، دارای مسوولیتی بزرگتر و از دیدگاه درآمد، وضعیتی مطلوبتر از دیگر دست‌اندرکاران طراحی و نصب شبکه دارند.

به‌طورکلیCCNP مدرکی است که چیزی را برای دستیابی داوطلب به فناوری‌های روز شبکه‌های بزرگ، کم نمی‌گذارد. مباحث پرشماری که در این دوره مطرح می‌شود، به‌صورت همه جانبه، هر گونه فناوری در زمینه شبکه‌های یاد شده را بررسی می‌کند و در این راه هر مساله مهمی (مانند: امنیت، کیفیت سرویس(QoS) ، شبکه‌های اختصاصی مجازی(VPN)  و فناوری‌های ‌پهن‌باند) را به‌تفصیل مطرح می‌سازد.

داوطلبان دریافت مدرکCCNP  باید نخستین قاعده هرم تحصیلی شرکت سیسکو، یعنی مدرکCCNA، را (که مربوط به شبکه‌های محلی کوچک می‌شود) گذرانیده باشند. شخصی که به دریافت مدرک CCNP نایل می‌شود، از دیدگاه رده شغلی در میان همه شغل‌هایی که مربوط به مهندسی شبکه  به‌ویژه نصب و راه‌اندازی شبکه با استفاده از تجهیزات سیسکو  می‌شود، در رده دوم یعنی پس از مدرک CCIE که مربوط به مشاوران حرفه‌ای سیسکو است، قرار می‌گیرد. این بدان معنا است که شخص دارندهCCNP  می‌تواند فاصله مقام خود را با ارشد‌ترین سطح کارشناسی شبکه به یک گام برساند.

کارشناس شبکه با ارتقای مدرک خود از CCNA بهCCNP  نه‌تنها تسلط خود بر مباحث مربوط به شبکه‌های LAN وDial up  را افزایش می‌دهد، بلکه از محدوده شبکه‌های محلی با کاربرد کوچک خارج شده و توانایی خود را در راه‌اندازی شبکه‌های WAN تثبیت می‌کند.

برای کسب مدرکCCNP  شرکت در 4 دوره آموزشی و گذرانیدن موفقیت‌آمیز آزمون‌های هر کدام از آن‌ها الزامی است. مواد این دوره عبارت است از:

1- ساخت شبکه‌های عادی سیسکو (BSCI)

در این دوره، نحوه اتصال و استفاده از مسیریاب‌های سیسکو در شبکه‌های LAN و WAN برای سایت‌های متوسط تا بزرگ آموزش داده می‌شود. در این دوره مباحث جامعی در زمینه پروتکل‌های EIGRP،BGP ، EGP،OSPF و ISIS  مطرح شده و داوطلبان با دو نوع پروتکل مسیریابی به‌نام‌های Distance Vector  وLink State آشنا می‌شوند. در پایان این دوره، داوطلب می‌تواند سرویس‌هایIOS  مناسب یک مسیریاب سیسکو را انتخاب و راه‌اندازی کند.

2 -  ساخت شبکه‌های چند لایه سیسکو(BCMSN) 

در این دوره، شیوه ایجاد یک فضای شبکه بر پایه فناوری سوییچینگ چند‌لایه در سرعت‌های بالای اترنت(Ethernet)  به مدیران شبکه‌ها آموزش داده می‌شود. این دوره شامل مفاهیم مسیریابی و سوییچینگ و فناوری‌های لایه دو و سه است. داوطلبان پس از طی این دوره خواهند توانست یک فضای سوییچینگ چندلایه را برپا ساخته و به کنترل ترافیک شبکه با استفاده از سیستم‌های تشخیص هویت لایه‌های گوناگون بپردازند.

3 - ساخت شبکه‌های راه‌دور(BCRAN)

در این دوره، داوطلب چگونگی پیکربندی و عیب‌یابی شبکه‌هایی را که در جاهای دیگر ایجاد شده و از طریق فناوری راه‌دور(Remote) به سایت مرکزی دسترسی دارند، فرا می‌گیرد. همچنین حالت عکس این کار یعنی دسترسی راه‌دور به سایت مرکزی با مصرف کمترین پهنای‌باند نیز در این دوره مورد بحث قرار می‌گیرد. به‌طور کلی در BCRAN به شبکه‌های WAN توجهی ویژه می‌شود و روش پیکربندی تجهیزات سیسکو و برقراری ارتباط بهینه بین سایت مرکزی و دیگر شعبه‌ها و مسایل مربوط به کیفیت سرویس(QOS) در یک شبکه  WAN تشریح می‌گردد.

این دوره به‌ویژه برای مدیران شبکه‌ها که مسوول اجرا و عیب‌یابی زیرساخت یک شبکه WAN هستند، از اهمیت بالایی برخوردار است.

4 -  پشتیبانی و عیب‌یابی شبکه(CIT) 

در این دوره، داوطلب چگونگی عیب‌یابی کامپیوترهای‌ سرویس‌گیرنده یا سرویس‌دهنده را، که تحت پروتکل‌های گوناگون به‌هم متصل گشته‌اند و از سوییچ‌ها و مسیریاب‌های سیسکو استفاده می‌کنند، فرا می‌گیرد. بنابراین با گذرانیدن این دوره، می‌توان به تحلیل و شناسایی مشکلات در محیط‌های Fast Ethernet، VLAN، Frame Relay،ISDN BRI  و ...، پرداخت و مشکلات پیچیده مربوط به سوییچ‌ها و مسیریاب‌های سیسکو را حل کرد.

دوره CCDP
Cisco Certified Design
Professional
سطح تخصص: Professional

مدرکی برای طراحی حرفه‌ای و مسیریابی و سوییچ شبکه‌ها در محیط LAN و WAN با امکان سیستم شماره‌گیری برای شبکه‌های بزرگ است.

دارندگان این مدرک، دانش لازم برای طراحی پیشرفته شبکه‌هایRouted  وSwitched  که شامل LAN و WAN  و سرویس‌های Dial Access است را دارا هستند. (برای بین100 تا 500 ایستگاه کاری). همچنین توانایی اعمال ماژول‌ها روی مسیریاب‌ها و انتخاب راه‌حل و طرحی مناسب برای محیط‌های کاری متفاوت (کاری، شخصی، شرکت‌ها و سازمان‌های گوناگون) را به‌دست خواهند آورد.

داوطلبان برای کسب این مدرک باید دوره‌های مدرک CCNA و CCDA را با موفقیت پشت‌سر گذاشته باشند و اعتبار این مدرک از زمان اخذ آن به‌مدت 3 سال است.

ادامه دارد...

مهدی چینی‌چی

منبع :‌کلیک‌

دسته ها : راهنما - شبکه
شنبه نهم 6 1387
همان‌طور که برای طراحی و پیاده‌سازی یک نرم‌افزار گام‌های مشخص و سلسله مراتب وجود دارد، مهندسی معکوس نیز باید با برداشتن یک قدم آغاز شود و آن قدم مهم و اساسی چیزی نیست جز جمع‌آوری اطلاعات اولیه.

زبان و کامپایلر

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

فایل‌های وابسته‌

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

منابع به‌کار رفته‌

یکی از اجزای مهم به‌کار رفته در فایل‌های اجرایی، به منابع ‌(Resources) معروف هستند که در واقع داده‌های از پیش تعریف‌شده را برای برنامه‌ نگهداری می‌کنند. پنجره‌های از پیش تعریف‌شده،‌ آیکون‌ها، تصاویر گرافیکی موجود در برنامه، رشته‌های متنی، فایل‌های صوتی و تصویری و ... از جمله منابع یک فایل اجرایی به‌شمار می‌روند. یک برنامه‌نویس می‌تواند به هر تعداد و از نوع منبع به فایل ارجایی خود بیافزاید و در مهندسی معکوس می‌توان این منابع را استخراج کرده یا تغییر داده و یا نمونه دیگری جایگزین کرد.

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

Disassemblerها

هر برنامه، مستقل از زبان برنامه‌نویسی آن به کد ماشین تبدیل می‌شود. حال اگر بخواهیم که ماشین را دوباره به کدهای زبان‌ برنامه‌نویسی تبدیل کنیم، ممکن است این کار امکان‌پذیر نباشد. اما با توجه به این‌که هر دستور زبان ماشین معادل یک دستور زبان اسمبلی است، می‌توان هر برنامه‌ای را به‌زبان اسمبلی برگرداند که این عمل را Disassemble یا عکس‌ عمل اسمبل گویند. با این کار، اگر شخص به‌قدر کافی به زبان اسمبلی مسلط باشد، می‌تواند هر تغییری در کد برنامه بدهد و مجددا آن را اسمبل کرده و فایل اجرایی جدید با اعمال تغییرات ایجاد کند. نرم‌افزارهای توانمندی هستند که می‌توانند علاوه بر عمل disassemble ، امکانات بسیاری را برای اعمال تغییرات در فایل اجرایی در اختیار کاربران قرار دهند.

فعالیت‌های فایل اجرایی‌

به‌عنوان اطلاعات اولیه، شاید لازم باشد که بدانیم یک فایل اجرایی در زمان اجرا چه رفتاری از خود نشان می‌دهد و فعالیت آن چگونه است. به‌عنوان مثال چه میزان حافظه اصلی را اشغال می‌کند و چه میزان از حافظه مجازی روی دیسک را به خود اختصاص می‌دهد یا در زمان اجرا تا چه حد از توان پردازنده را در اختیار خود می‌گیرد. این اطلاعات و بسیاری اطلاعات دیگر، از جمله مواردی هستند که می‌توان در زمان اجرا، از یک فایل اجرایی کسب کرد. برای این کار نیز نرم‌افزارهای متنوعی وجود دارند. ساده‌ترین ابزار موجود در این زمینه Task Manager  موجود در ویندوز است که تا حدی، اطلاعات مفیدی در مورد برنامه‌های در حال اجرا در اختیار کاربران قرار می‌دهد.

ورودی و خروجی‌

بیشتر برنامه‌ها عمل ورودی و خروجی روی فایل دارند. یعنی یا از فایل خواند یا بر روی آن می‌نویسند. اطلاعات مربوط به این فعالیت‌ها نیز ممکن است در جایی لازم باشد.

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

فعالیت در رجیستری و شبکه‌

دو نوع فعالیت دیگر وجود دارد که در حوزه‌های جداگانه بررسی می‌شوند و می‌توانند اطلاعات خوبی در اختیار کار برقرار دهند و یکی تاثیرات که یک فایل اجرایی در رجیستری ویندوز اعمال می‌‌کند و دیگری ارتباطات و اتصال‌هایی که برنامه با شبکه و اینترنت برقرار می‌کند. در این زمینه‌ها نیز نرم‌افزارهایی وجود دارند که کلیه کارهای یک برنامه را برای تغییر دادن رجیستری در نظر می‌گیرد و می‌توان با بررسی آن به رفتارهای فایل اجرایی پی برد. برنامه‌هایی نیز تحت عنوان کلیNetwork monitor  هستند که کلیه اتصال‌ها، نوع اتصال و پروتکل به‌کار رفته در آن و دیگر جزییات مربوط به ارتباطات و شبکه را کنترل می‌کنند.

ارتباطات سخت‌افزاری‌

و بالاخره یک فایل اجرایی ممکن است در طول اجرا با سخت‌افزارهای مختلف و درگاه‌ها، تبادل اطلاعات و ارسال و دریافت داده داشته باشد. ارتباط با درگاه‌های سریال، موازی، USB و ... . ارسال اطلاعات به نمایشگر و تبادل اطلاعات با دیسک‌ها و درایوها و دیگر لوازم جانبی رایانه از جمله مواردی هستند که می‌توانند در بررسی رفتار یک فایل اجرایی و کسب اطلاعات اولیه در گام اول مهندسی معکوس موثر واقع شوند.

منبع : گلیک

دسته ها : برنامه‌نویسی
شنبه نهم 6 1387
در مطالب شماره‌های گذشته دستورات مهمی از جی‌کوئری را معرفی کردیم، اگر به یاد داشته باشید در بخش‌های قبل در مورد زنجیره‌های جی‌کوئری مطالبی ارائه شد و تا به این جا نمونه‌های مختلفی از زنجیره‌ها را در جی‌کوئری مثال زده‌ایم. در آخرین بخش از این سری از آموزش‌های جی‌کوئری در مورد مدیریت این زنجیره‌ها صحبت خواهیم کرد.

قبل از‌ هر چیز باید به این نکته اشاره کرد که سازندگان و نویسندگان جی‌کوئری با ایجاد زنجیره‌ها در جی‌کوئری گام مهمی در انعطاف‌پذیری و قابلیت‌های این فریم ورک برداشته‌اند، این زنجیره‌ها نه تنها قدرت اجرای چندین دستور پشت سر‌هم و در یک خط را به شما می‌دهند بلکه باعث می‌شوند تا راندمان برنامه‌های نوشته شده را به طرز کاملا باور نکردنی در مقایسه با دیگر فریم‌ورک‌های جاوااسکریپت، بالا‌ببرید.

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

بسته به روشی که در یک زنجیر جی‌کوئری به‌کار گرفته‌می‌شود، ممکن است حتی در یک زنجیر، چندین گروه از عناصر انتخاب شده ایجاد شوند؛ به‌عنوان مثال تابعclone()  گروهی جدید از عناصر پوشش داده شده را ایجاد می‌کند که در واقع یک کپی از عناصری است که در ابتدا پوشش داده شده‌اند، به عنوان مثال این دستور را در نظر بگیرید:

('img').clone().appendTo('َsomewhere');$
با استفاده از این دستور و طبق صحبت‌های بالا دو گروه از عناصر پوشش داده شده ‌ایجاد خواهند‌شد، یک گروه عناصر «»img درون صفحه هستند و گروهی دیگر یک کپی از این عناصر هستند که با استفاده از دستور بعدی(appendTo)  در مکانی دیگر از صفحه نمایش داده می‌شوند.

اما سوالی که این‌جا ممکن است مطرح‌شود این است که بعد از انجام این کار اگر مثلا بخواهیم یک کلاس را به عناصر پوشش داده شده اصلی اختصاص دهیم،با توجه به حرکت رو به جلو در زنجیر و عدم‌امکان بازگشت به عقب، آن وقت وضعیت چگونه خواهد‌بود؟

در اینجا دستوری معرفی می‌شود که می‌توان با کمک آن به سادگی به این سوال پاسخ‌داد، دستور  end()  باعث می‌شود که انجام عملیات بر روی گروهی از عناصر پوشش داده شده به پایان‌برسد، به عنوان مثال اگر بخواهیم دستور قبلی را به نحوی دیگر بنویسیم که بعد از انجام فرآیندی بر روی کپی گرفته شده از عناصر انتخاب شده به سراغ عناصر اصلی برویم و روی آنها نیز فرآیند دیگری انجام دهیم، می توانیم دستوری شبیه این دستور را داشته‌باشیم:

('img').clone().appendTo('‌َ‌somewhere')$
end().addClass('beenCloned');.

تابع  end()  هیچ مقداری را به عنوان پارامتر ورودی قبول نمی‌کند، در‌عوض هر‌جایی که استفاده شود عناصر پوشش داده شده قبل را تحت تاثیر قرار می‌دهد و باعث می‌شود که برنامه به سراغ آنها برود.

اگر بخواهیم به صورت فنی‌تر این مسئله را بررسی کنیم که بهتر بتوانید آن را درک کنید، می‌توان این‌گونه دستورات جی‌کوئری را توصیف کرد که در هنگام اجرای یک زنجیره در جی‌کوئری، هر کدام از عناصر پوشش داده شده در یک stack (پشته)  قرار می‌گیرندpush()  می‌شوند سپس درهر زمانی که دستور  end()  فراخوانی می‌شود، آخرین گروه عناصر پوشش داده شده که در بالاترین مکان  stack  قرار دارند، pop  می‌شوند و شما می توانید از آنها استفاده کنید.

دستور دیگری که می توان در اینجا معرفی کرد،  andSelf()   است. با استفاده از این دستور می توانید دو گروه از عناصر  push  شده در stack  که در بالاترین مکان قرار دارند را با یکدیگر ادغام کنید به این معنا که آخرین دو گروه از عناصر پوشش داده شده قبلی که در زنجیره جی‌کوئری مورد استفاده قرار گرفته‌اند، با استفاده از این دستور با یکدیگر ادغام می‌شوند. این دستور نیز مانند دستور  end()  هیچ پارامتر ورودی ندارد.

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

پویا سلیمی

منبع :‌کلیک‌

دسته ها : برنامه‌نویسی
شنبه نهم 6 1387
در مقالات پیشین به اختصار درباره مهندسی معکوس صحبت کردیم. خوب است کمی بیشتر به این مساله بپردازیم تا با شناخت بهتر زمینه‌های کاربرد آن بتوانیم به فعالیت در آن رابطه پرداخته و دانش خود را در جای مناسب به‌کار گیریم.

مفهوم مهندسی معکوس‌

به هر گونه تلاش و فعالیت در راستای رسیدن از مراحل بالاتر طراحی و تولید به یک یا چند مرحله پایین‌تر، مهندسی معکوس گویند. این مفهوم در تمامی شاخه‌ها و زمینه‌های مهندسی از جمله نرم‌افزار و سخت‌افزار مطرح است. برای مثال دستیابی به ایده‌ها و روش‌های تولید یک محصول، از نمونه محصول نهایی نمونه‌ای از مهندسی معکوس است.

یکی از اهداف مهندسی معکوس، شناسایی اجزای سازنده یک محصول و روابط بین ‌آنهاست که گاهی از آن اجزا برای ساخت یک محصول جدید نیز بهره گرفته می‌شود.

گاهی نیز به‌منظور ایجاد تغییرات در سیستمی است که طرح و اجزای اولیه آن در دسترس نیست. این کار که به‌منظور مطابقت سیستم جدید با خواسته‌ها و نیازهای جدید صورت می‌گیرد، مهندسی دوباره(Reengineering)  نیز نامیده می‌شود. همچنین با این کار می‌توان مشکلات موجود در یک سیستم را ردیابی و بررسی کرد: طی بررسی یک سیستم می‌توان به مستندسازی آن سیستم نیز پرداخت تا با ایجاد درک بهتر از سیستم در جهت بهبود آن گام برداشت.

البته باید توجه داشت که به‌کارگیری فنون مهندسی معکوس در هر رشته‌ای، دشواری‌ها و مشکلات خاص خود را دارد و به ابزار و امکانات خاصی نیاز دارد و گاهی با وجود کامل بودن ابزار و امکانات ممکن است نتیجه مطلوب نهایی حاصل نشود. بنابراین در به‌کارگیری این فنون باید تمامی هزینه‌ها و زمان مصرفی و نتیجه نهایی در نظر گرفته شوند. به‌عبارتی باید توجه داشت که میزان هزینه مورد نظر در مقابل دسترسی به چه هدفی صرف می‌شود.

در ادامه تلاش خواهیم کرد که به چند مورد از کاربردهای مهندسی معکوس در شاخه نرم‌افزار اشاره‌ای کوتاه داشته باشیم تا هدف از این شاخه از علم رایانه‌ نیز تا حدی روش شود.

کشف رمزها و کدها

باید توجه داشت که از هر ابزاری می‌توان در راه خوب یا بد استفاده کرد. این که شخص از مهارت خود و ابزارهای موجود استفاده نادرست کند، خود مسوول آن کار خواهد بود.

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

معمولا در شکستن رمزها از تکنیک‌های مهندسی معکوس استفاده می‌شود. بدون استفاده از این تکنیک‌ها اگر بخواهیم اقدام به کشف رمز کنیم،چاره‌ای جز حدس، آزمون و خطا و یا بررسی کلیه حالت‌های ممکن (Brute force) نخواهیم داشت که کار بس زمان‌گیر، دشوار و طاقت‌فرساست.

مبارزه با ویروس‌ها

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

تغییر در کار یا ظاهر نرم‌افزار

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

یکی از این مشکلات، مشکل سال‌2000  (Y2K) بود که شاید آن را به‌خاطر داشته باشید. این مشکل با آغاز هزار جدید به‌وجود آمد و در آن زمان بسیاری از سازمان‌ها و کاربران در حال استفاده از نرم‌افزارهایی بودند که شاید سال‌ها با آن کار کرده بودند و مشکلات آن را رفع کرده و اطلاعات زیادی در آنها جمع‌آوری کرده بودند. بسیاری از این نرم‌‌افزارها به‌علت آن که قدیمی شده بودند، دیگر از جانب شرکت تولیدکننده، پشتیبانی نمی‌شدند و یا شرکت‌ها به‌طور کامل منحل شده‌ بودند. اما همچنان برای آن سازمان پرکاربرد بودند. با مطرح شدن مشکل سال 2000، شرکت‌ها و سازمان‌های زیادی بار مالی زیادی را برای رفع این مشکل با استفاده از تکنیک‌های مهندسی معکوس، متحمل شدند.

طراحی مجدد

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

مراحل این کار که به دو قسمت مهندسی معکوس و مهندسی مستقیم ‌ (Forward Engineering)تقسیم می‌شود، به این صورت است که ابتدا کلیه ایده‌ها و روش‌های پیاده‌سازی نرم‌افزار مورد نظر تشخیص داده شده و سپس با توجه به اطلاعات به‌دست آمده، نرم‌افزار جدیدی طراحی و پیاده‌سازی می‌شود. شاید این یکی از دشوارترین و مفیدترین زمینه‌های کار در مهندسی معکوس باشد.

مستندسازی‌

برای برنامه‌ها و یا توابع کتابخانه‌ای که بدون کد برنامه‌نویسی عرضه می‌شودند معمولا مستنداتی نیز وجود ندارد. مانند توابع محلی ویندوزNT که شامل چندین هزار تابع است که برای آنها جز چند صفحه اطلاعات ابتدایی، مستنداتی از سوی شرکت سازنده یعنی مایکروسافت ارایه نشده است. برای مستندسازی این‌گونه برنامه‌ها یا توابع نیز، تکنیک‌های مهندسی معکوس چاره‌ساز خواهند بود.

Crack

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

اما برای مجبور کردن کاربران به خرید برنامه، برای آن محدودیت زمانی می‌گذارند. افراد بسیاری هستند که با نفوذ به این نرم‌افزارها، محدودیت آن را برداشته و یا کد تولید و تشخیص کلید را از درون برنامه استخراج می‌کنند و در اختیار دیگران قرار می‌دهند.

به این ترتیب کاربران بدون پرداخت هزینه، از نرم‌افزار مورد نظر برای مدت زمان نامحدود استفاده می‌کنند. البته همه جای دنیا افرادی وجود دارند که برای حمایت از تولیدکنندگان نرم‌افزار از نسخه‌های کرک‌شده استفاده نکرده و اصل آن را خریداری می‌کنند. مسلما کاربردهای مهندسی معکوس به همین چند مورد خلاصه نمی‌شود و با توجه به شرایط و زمان‌های مختلف می‌تواند کاربردهای دیگر و حتی کاربردهای دیگری نیز داشته باشد.

پارسا ستوده‌نیا

منبع :‌کلیک

دسته ها : برنامه‌نویسی
شنبه نهم 6 1387
به‌نظر می‌رسد ضدویروس‌های رایج امروزی که بر میلیون‌ها دسک‌تاپ نصب شده‌اند، در اوج اقتدار خود قرار دارند. اما این تنها یک روی سکه است چرا که ساختاری به‌مراتب کاراتر و بهتر از ساختار این نوع ویروس‌یاب‌ها،‌ برای عموم استفاده‌کنندگان دسک‌تاپ قابل تصور است.

به‌تازگی پژوهشگران دانشگاه میشیگان آمریکا در تحقیقی نشان داده‌اند که نرخ کارایی ویروس ‌یاب‌های فردی، ‌به‌طور فزاینده‌ای در حال رکود است. به‌گونه‌ای که تا پایان سال 2008 بیشتر ویروس‌یاب‌های معمول دسک‌تاپ، به احتمال 35درصد، در شناخت تازه‌ترین ویروس‌ها ناتوان خواهند بود و تنها پس از گذشت 48 روز از انتشار ویروس‌ها در وب، قادر به شناسایی آنها خواهند شد. این موض وع و همچنین نقطه ضعف سرور‌های به‌روز‌رسان ویروس‌یاب‌ها، پژوهشگران را برای اعمال شیوه نوینی از تفکر درباره ویروس‌یاب‌ها فراخوانده است. این دیدگاه نوین که کلاود ای‌وی(CloudAV)  نام دارد، همه ضدویروس‌ها را به بیرون از کامپیوتر کاربر و به‌اصطلاح به ابر شبکه منتقل خواهد کرد تا با به‌کارگیری توان محاسبه بسیار سریع این ابر و همچنین به‌کارگیری انواع روش‌های چندین ضدویروس، عملیات اسکن و شناسایی ویروس‌ها را در یک لحظه انجام دهد.

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

پروفسور جهانیان در مقاله‌ای که به‌تازگی در سمپوزیوم امنیت یوزنیکس(USENIX)  همراه با دو تن از شاگردان دوره دکتری خود ارایه کرده است، ساز‌وکار اجرای کلاود ای‌وی را با استفاده همزمان از دوازده ضدویروس مشهور
 Sandbox،(Norman،Trend Micro ،F-Secure،CWSandbox ، Symantic ، MacAfee،Kaspersky،F-port، Clam AV،  Bitdefender، (Avast شرح داده است. آقای جان آبرهید یکی دیگر از دست‌اندرکاران این پروژه معتقد است که: " کلاود ای‌وی قادر است مشکلات ناسازگاری و محدودیت‌‌‌های  محاسبه را  که ممکن است در نصب چندین ضدویروس روی کامپیوتر کاربر رخ دهد  برطرف کرده و افزون بر آن از قابلیت به‌روز‌رسانی و به‌کارگیری بسیار بالاتری هم برخوردار باشد؛ چرا که با عملی شدن این پروژه می‌توان تصور کرد که هر فایلی که روی کامپیوتر یا موبایل یا هر وسیله دیگری دریافت شود، ابتدا به ابر ویروس‌یاب ارسال می‌شود تا پس از اسکن شدن آن فایل توسط ده‌ها ضدویروس کاملا به‌روز، در همان لحظه نزد کاربر بازگردد.

کارشناسان سرمایه گزاری معتقدند که آینده بسیار درخشانی در انتظار این پروژه خواهد بود و پیش‌بینی می‌شود که کاربرد آن به‌سرعت بر روی سیستم‌های موبایل گسترش یابد.

منبع :‌ گلیک

دسته ها : وب۲
شنبه نهم 6 1387
X