Diskuze: v čem je naprogramované avg

Člen

Zobrazeno 11 zpráv z 11.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Na programovacím jazyce nezáleží, musíš hlavně rozumět tomu jak Windows fungují uvnitř. To se zjišťuje dost blbě, jelikož i anglická dokumentace je velmi neúplná. Dále musíš rozumět ASM, abys dokázal číst škodlivý kód (ke kterému samozřejmě zdrojové kódy mít nebudeš). V čem napíšeš tu utilitku co vir odstraní je už IMHO docela jedno, nejčastěji to asi bude C++.
Nevím, v čem konkrétně programují AVG, ale viděl jsem jeden software tohoto druhu trochu více zblízka a ten byl programován v C, C++ Builderu a Delphi (plus možná i v dalších jazycích).
Pokud má mít detekční software ochranu v reálném čase, tak je nutné (alespoň na Windows) vytvořit ovladač jádra, k čemuž se obvykle používá C. Lze to dělat i v C++ (ale pozor na http://www.osronline.com/article.cfm?…) či v Delphi (také dost problémů, které zaručují, že v tomto jazyce driver nikdo dělat asi nebude).
Kód, který má na starosti detekci podezřelých souborů (či čehokoliv jiného) musí být obvykle velmi efektivní, protože musí zvládat zpracovat velké množství objektů v krátkém čase. Proto se k tomuto účelu hodí také nějaký nízkoúrovňový jazyk typu C/C++.
Grafické rozhraní programu může být teoreticky i v interpretovaném jazyce, protože na výkonu zde tolik nezáleží.
To je aspoň můj názor.
Asi takto. Už ovládáš nějaký jazyk ? Přijde mi, že nemáš o programování ani potuchy a chceš vytvořit něco tak komplexního a složitého jako je anti-virus.
Pro různé programáky zvol nějaký moderní- vysokoúrovňový jazyk. Například C# či Java.
Pro weby samozřejmě HTML 5, CSS 3, JavaScript (+ jQuery) PHP nebo třeba ASP .NET (v ASP se bez C# neobejdeš)
C++ a obzvláště C "přináší" oproti C# pár problémů navíc. Například je nutné si sám uvolňovat paměť (nemusí asi nutně ve všech případech platit pro C++, záleží na použití), kterou sis sám alokoval (nebo alokovala knihovní funkce, kterou jsi použil). Obecně je u C/C++ dobré (ale zvláště u C) trochu vědět, jak operační systémy fungují.
Řekl bych, že C# je pohodlnější na programování, ale pokud potřebuješ nějakou specialitu, tak ta se lépe udělá právě v C/C++, protože se jedná o nativní jazyky, a tudíž z nich není problém volat funkce operačního systému (např. Windows API). Ne že by funkce operačního systému nešlo volat i z C#, ale je to krapet méně pohodlné a je tam vyšší režie za volání (zda-li ji lze zanedbat záleží na konkrétním použití).
Jak už psal sdraco, tak pro čtení funkce viru a
případné ošetření se řeší přes ASM, což je složitý jazyk a v
případě neznalosti těch základních, je zbytečně skočit do něčeho,
podle mého názoru tak brutálního.
ASM sám o sobě složitý není. Hlavní problém spočívá v tom, že jeho použití vyžaduje slušné zanlosti architektury daného procesoru (či rodiny procesorů). Jinak na detekci malware není jeho použití (znalost) nutná, to spíš až v případě, že bys to svého antiviru chtěl zakomponovat emulátor či něco podobného. Pokud si chceš pro začátek hrát jen s detekcí založenou na databázi signatur, stačí jen nějakým způsobem hledat (dostatečně) jedinečné posloupnosti bajtů v souborech virů.
Algoritmicky pochytit, co určitý malware dělá, není zrovna triviální už proto, že daný kód nemusí být na první pohled vidět (může být šifrovaný či vzniknout modifikací jiného kódu až za běhu vzorku), tudíž pokud by se mělo z kódu usuzovat na to, zda je vzorek malware či ne, asi bude třeba ten (dost) kompletní emulátor.
V tom máš asi pravdu, já jsem spíše narážel na znalosti
petrfaltu u kterého je vidět, že začíná s
programováním. A dle mého názoru ASM není vhodný na naučení jako první
progr. jazyk.
Mě osobně ASM přijde složitý už svou základní syntaxí. Jak jsem
koukal, tak pro každou rodinu procesorů, je jiný druh zápisu, takže
usuzuju, že s novým procesorem případně jeho rodinou je nutné nastudovat
příslušnou dokumentaci, která bude nejspíš jen v angličtině.
Dokonce i pro stejný procesor existují úplně odlišné syntaxe - Intel syntaxe uvádí nejdříve cílový operand a pak zdrojový, zatímco GNU AS se syntaxí AT&T to dělá přesně opačně a i registry a konstanty píše úplně jinak.
Zobrazeno 11 zpráv z 11.