Главная » Просмотр файлов » Поиск характерных шаблонов кода, приводящих к ошибкам функционирования в программах промышленного размера

Поиск характерных шаблонов кода, приводящих к ошибкам функционирования в программах промышленного размера (1162573)

Файл №1162573 Поиск характерных шаблонов кода, приводящих к ошибкам функционирования в программах промышленного размера (Поиск характерных шаблонов кода, приводящих к ошибкам функционирования в программах промышленного размера)Поиск характерных шаблонов кода, приводящих к ошибкам функционирования в программах промышленного размера (1162573)2019-09-20СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

Ìîñêîâñêèé ãîñóäàðñòâåííûé óíèâåðñèòåò èìåíè Ì.Â. ËîìîíîñîâàÔàêóëüòåò âû÷èñëèòåëüíîé ìàòåìàòèêè è êèáåðíåòèêèÊàôåäðà ñèñòåìíîãî ïðîãðàììèðîâàíèÿÎò÷¼ò ïî ïðåääèïëîìíîé ïðàêòèêåÏîèñê õàðàêòåðíûõ øàáëîíîâ êîäà, ïðèâîäÿùèõ ê îøèáêàìôóíêöèîíèðîâàíèÿ â ïðîãðàììàõ ïðîìûøëåííîãî ðàçìåðàÈñïîëíèòåëü:ñòóäåíò 428 ãðóïïûÀñèðÿí Àëåêñàíäð Êàìîåâè÷Ðóêîâîäèòåëü ïðàêòèêè:çàâåäóþùèé îòäåëîì êîìïèëÿòîðíûõ òåõíîëîãèé ÈÑÏ ÐÀÍê.ô.-ì.í., ïðîôåññîð, Ñ.Ñ.ÃàéñàðÿíÌîñêâà, 20151Ïîñòàíîâêà çàäà÷èÐàçðàáîòàòü øàáëîíû, ñîîòâåòñòâóþùèå ðàçëè÷íûì âèäàì óÿçâèìîñòåé,èçó÷èâ èõ ñâîéñòâà.

Ïðèìåíèòü íà ïîëó÷åííûõ øàáëîíàõ èçìåíåííûé ïîääàííóþ çàäà÷ó èíñòðóìåíò 1 äëÿ ïîèñêà óÿçâèìîñòåé â ïðîãðàììíîì îáåñïå÷åíèè.2Öåëè1. Èçó÷èòü ïðåäñòàâëåíèå ïðîãðàììû â âèäå System Dependence Graph2. Âûäåëèòü êëàññ èíòåðåñóþùèõ óÿçâèìîñòåé è èçó÷èòü èõ ñòðóêòóðó3. Èçó÷èòü ìåòîäû ïîñòðîåíèÿ âíóòðåííåãî ïðåäñòàâëåíèÿ øàáëîíîâ äëÿðàáîòû èíñòðóìåíòà äëÿ äàëüíåéøåãî ñîçäàíèÿ èõ áàçû3System Dependence Graph (SDG)Ãðàô çàâèñèìîñòåé ñèñòåìû ýòî îðèåíòèðîâàííûé, ïðåäñòàâëÿþùèé çàâèñèìîñòè ìåæäó âûðàæåíèÿìè, ïðåäèêàòàìè è ôóíêöèÿìè.Âåðøèíàì îòâå÷àþò èíñòðóêöèè ïðîãðàììû èç âíóòðåííåãî ïðåäñòàâëåíèÿ LLVM IR. Ðåáðà ïîêàçûâàþò çàâèñèìîñòè ìåæäó íèìè. Çàâèñèìîñòè ìîãóò áûòü ïî äàííûì è ïî óïðàâëåíèþ:1.

Âåðøèíà P çàâèñèò ïî äàííûì îò âåðøèíû N, åñëè çíà÷åíèå, âû÷èñëåííîå â P, èñïîëüçóåòñÿ â N.2. Âåðøèíà P çàâèñèò ïî óïðàâëåíèþ îò âåðøèíû N, åñëè ïðåäèêàò èç Pîïðåäåëÿåò âûïîëíåíèå âûðàæåíèÿ â N.Ïðè ýòîì çàâèñèìîñòü ïî äàííûì ÿâëÿåòñÿ òàêîâîé, åñëè ìåæäó âåðøèíàìè Pè N íåò äðóãîé âåðøèíû â ïóòè ïî óïðàâëåíèþ, êîòîðàÿ ïåðåîïðåäåëÿåò çíà÷åíèå ïåðåìåííîé, âû÷èñëåííîå â P.  èíñòðóìåíòå åñòü íåñêîëüêî ðåæèìîâïîñòðîåíèÿ êîíòðîëüíûõ ðåáåð:1. JUMP - ðåáðà ïðîâîäÿòñÿ îò èíñòðóêöèè ïðåäèêàòà ê ïåðâîé èíñòðóêöèè áàçîâîãî áëîêà â êàæäîì âåòâëåíèè2.

PARR - ðåáðà ïðîâîäÿòñÿ îò èíñòðóêöèè ïðåäèêàòà êî âñåì èíñòðóêöèÿì áàçîâîãî áëîêà â êàæäîì âåòâëåíèè1 SevakSargsyan, Shamil Kurmangaleev, Andrey Belevantsev.LLVM:based on semantic analysis.built-in scalable code clone detectionTrudy ISP RÀN [The Proceedings of ISP RAS], vol. 27, issue 1, 2015.23. FULL - ðåáðà ïðîâîäÿòñÿ ìåæäó âñåìè ïîñëåäîâàòåëüíûìè èíñòðóêöèÿìèÍà ðèñóíêå 1 ïðåäñòàâëåí ïðèìåðSystem Dependence Graph äëÿ ïðîãðàììû foo.c.  SDG ðåáðà ñèíåãî öâåòà îçíà÷àþò True Dependence,ñåðîãî - Anti Dependence, êðàñíîãî - Output Dependence, çåëåíîãî Control Dependence.

Áëîêè ñ ïóíêòèðíîé ãðàíèöåé óêàçûâàþò íà ïåðåäà÷ó ïàðàìåòðîâ ôóíêöèè.//foo.cvoid bar(int a, int b) {a = b;}void main() {int d = 10;bar(d, 0);}Ïðåèìóùåñòâî ïðåäñòàâëåíèÿ êîäà ñïîìîùüþ SDG ïî ñðàâíåíèþ ñ äðóãèìè ñòàíäàðòíûìè ïðåäñòàâëåíèÿìè, òàêèìè êàê Abstract Syntax Tree(AST) è Control Flow Graph (CFG),çàêëþ÷àåòñÿ â òîì, ÷òî ProgramDependence Graph ÿâíî ïîêàçûâàåòçàâèñèìîñòü äàííûõ â îòëè÷èå îòCFG, à òàêæå ïåðåäà÷ó óïðàâëåíèÿ,÷òî ïðåäñòàâëåíî â AST ëèøü íåÿâíûì îáðàçîìÄàííîå ïðåäñòàâëåíå äàåò âîçìîæíîñòü èçìåíÿòü øàáëîíû, íå ìåíÿÿ åãî â âèäå èñõîäíîãî êîäà, à òîëüêî ñ ïîìîùüþ èçìåíåíèÿ âåðøèí/ðåáåð â SDG.(Ðèñ. 1) Ïðèìåð SDG34Ìåòîäû ïîñòðîåíèÿ SDG äëÿ øàáëîíîâ êà÷åñòâå óÿçâèìîñòåé áûëè ðàññìîòðåíû ñëåäóþùèå âèäû: bueroverow, buer underread, buer underwrite, buer overread è os commandinjection.

Îíè î÷åíü ðàñïðîñòðàíåíû è çàíèìàþò îêîëî òðåòè îò âñåõ óÿçâèìîñòåé.4.1Ïîñòðîåíèå ñ ïîìîùüþ êëàññîâ èíñòðóìåíòàòîëüêîêëàññàìèDependence,DepGraphNodeèDependenceGraph èç èíñòðóìåíòà, ñîçäàâàÿ âåðøèíû, îòâå÷àþùèå èíñòðóêöèÿì íåáåçîïàñíîãî êîäà, è ñîåäèíÿÿ èõ çàâèñèìîñòÿìè ïî äàííûì èëèïî óïðàâëåíèþ, ìîæíî ïîëó÷èòü SDG äëÿ íåêîòîðîãî øàáëîíà. Èññëåäîâàíèåäàííîãî ïîäõîäà ïîêàçàëî, ÷òî ðåçóëüòàòû ïðèâîäÿò ê áîëüøîìó ïðîöåíòófalse positive ñëó÷àåâ è íåïðèãîäíû äëÿ ïðèìåíåíèÿ ãîòîâûìè àëãîðèòìàìè,òàê êàê ïîñëåäíèå ó÷èòûâàþò íå òîëüêî èíñòðóêöèè â âåðøèíàõ, íî èðàñïîëîæåíèå ñîîòâåòñòâóþùåãî èì êîäà â ïðîãðàììå.Ïîëüçóÿñü4.2Íàïèñàíèå øàáëîíîâÝòîò ñïîñîá äîâîëüíî ïðîñò, øàáëîí ïî îïðåäåëåíèþ ÿâëÿåòñÿ êîäîì ñ óÿçâèìîñòüþ. Òàêèì îáðàçîì, â áîëüøèíñòâå ñâîåì íàïèñàííûå îò ðóêè øàáëîíûïðåäñòàâëÿþò ñîáîé èíèöèàëèçàöèþ ïåðåìåííûõ è âûçîâ îïàñíûõ ôóíêöèé,íàïðèìåð, memcpy, strcpy.

SDG òàêèõ øàáëîíîâ ïîëó÷àþòñÿ íåáîëüøèìè: 1015 âåðøèí, ÷òî õîðîøî äëÿ àëãîðèòìà, êîòîðûé áóäåò íàïèñàí ïîçæå. Áîëååñëîæíóþ ëîãèêó óÿçâèìîñòåé, òàêóþ êàê, ðàçëè÷íûå òèïû ïåðåäà÷ óïðàâëåíèÿ è çàâèñèìîñòåé ïàðàìåòðîâ îïàñíûõ ôóíêöèé îò äàííûõ ðåàëèçîâàòüñëîæíåå è SDG ïîëó÷àþòñÿ ñ áîëüøèì êîëè÷åñòâîì ëèøíèõ ðåáåð è âåðøèí.4.3Ñîçäàíèå èç ãîòîâûõ òåñòîâûõ íàáîðîâÒåñòîâûå íàáîðû JulietTestCase v1.2 ïðåäñòàâëÿþò áîëüøîé íàáîð óÿçâèìîñòåé èç ìíîãèõ CWE.

Âûáðàâ èíòåðåñóþùèå íàñ óÿçâèìîñòè è îáðàáîòàâ èõ, ïîëó÷àþòñÿ øàáëîíû. Äàëåå ñ ïîìîùüþ èíñòðóìåíòà ïîëó÷àþòñÿ èõSDG. Åäèíñòâåííûé íåäîñòàòîê - íàëè÷èå ëèøíèõ èíñòðóêöèé, êîòîðûå äåëàþò SDG áîëüøèì, åñëè èõ íå óäàëèòü àâòîìàòè÷åñêè. Êîëè÷åñòâî âåðøèíâ SDG, ïîëó÷åííûõ äàííûì ìåòîäîì - îêîëî 25.44.4Èçâåñòíûå óÿçâèìîñòè â áèáëèîòåêàõÄàííûé âèä øàáëîíîâ áûë ðàññìîòðåí â êóðñîâîé ðàáîòå.

Áûëè âçÿòûóÿçâèìîñòè èç áèáëèîòåê nginx âåðñèè 0.6.38 è libpng âåðñèè 1.2.5. Ïîñëåïîëó÷åííûõ ðåçóëüòàòîâ ñòàëî ÿñíî, ÷òî SDG òàêèõ øàáëîíîâ ïîëó÷àþòñÿâî-ïåðâûõ áîëüøèìè (ïîðÿäêà 100 âåðøèí è áîëüøå), âî-âòîðûõ ñîäåðæàùèìè áîëüøîå êîëè÷åñòâî ðåáåð óïðàâëåíèÿ è äàííûõ, êîòîðûå íå âñòðå÷àëèñüâ òåñòîâûõ íàáîðàõ. Íî ïðîâåðêà íà íàëè÷èå óÿçâèìîñòè â ïðîïàò÷åííûõâåðñèÿõ ðàáîòàåò õîðîøî. Òàêèì îáðàçîì äàííûé âèä øàáëîíîâ èìååòèíòåðåñ òîëüêî â íåèçìåíåííîì âèäå è ïðèãîäåí äëÿ ïðîâåðêè íàëè÷èÿ óÿçâèìîñòåé â ïðîãðàììàõ, èñïîëüçóþùèõ áèáëèîòåêó ñ óÿçâèìîñòüþ. Ïîêà ÷òîáûëè âçÿòû äâå óÿçâèìîñòè èç áèáëèîòåêè OpenSSL(v1.0.1) ïîä íàçâàíèåìHeartbleed(CVE-2014-0160).4.5Îáðàáîòêà SDG øàáëîíîâÍà äàííûé ìîìåíò òàê æå ïðåäóñìîòðåíà ïðåäîáðàáîòêà SDG øàáëîíîâïåðåä èõ ñîõðàíåíèåì.

Îíà ïðåäñòàâëÿåò ñîáîé óäàëåíèå òåõ âåðøèí è ðåáåð, êîòîðûå ìîãóò íå âñòðåòèòüñÿ â àíàëèçèðóåìîì ïðîåêòå, íî ïðèñóùèâñåì SDG (÷òîáû ìîäèôèêàöèÿ áûëà àâòîìàòè÷åñêîé). Óäàëÿþòñÿ âåðøèíûñ èíñòðóêöèÿìè RETURN (ôóíêöèÿ ìîæåò âûïîëíÿòü åùå äåéñòâèÿ), ðåáðà ïîóïðàâëåíèþ, ñâÿçàííûå ñ âåðøèíàìè ñ èíñòðóêöèÿìè ALLOCA (ïîðÿäîê âûäåëåíèÿ ïàìÿòè è åå èñïîëüçîâàíèÿ íå âàæåí â áîëüøèíñòâå ñëó÷àåâ). Ïîñëåïîñëåäíåãî äåéñòâèÿ ïîÿâëÿþòñÿ âåòêè áåç ïåðåõîäîâ, ïîýòîìó ðàçóìíåå ñòðîèòü ðåáðà ïî óïðàâëåíèþ â SDG ñ èíñòðóêöèåé PARR èëè âîîáùå áåç íèõ.Òàê æå ïðè ïîñòðîåíèè áåç ðåáåð óïðàâëåíèÿ ïîÿâëÿþòñÿ çàâèñèìîñòè ïîäàííûì, êîòîðûå íå âëèÿþò íà âûçîâ îïàñíîé ôóíêöèè.5Ñáîðêà è çàïóñê èíñòðóìåíòàÄîïóñòèì, ÷òî ñòðóêòóðà äèðåêòîðèé ñëåäóþùàÿ:• home/• user/ äîìàøíÿÿ äèðåêòîðèÿ ïîëüçîâàòåëÿ• llvm/ ïàïêà ñ èñõîäíûì êîäîì LLVM 3.4 è CLANG 3.4• build/ ïàïêà äëÿ ñáîðêè LLVM + CLANG• install/ ïàïêà äëÿ óñòàíîâêè áèíàðíèêîâ• templates/ ïàïêà ñ øàáëîíàìè5• templatesDump/ ïàïêà äëÿ SDG øàáëîíîâ• build.sh ñêðèïò äëÿ ñáîðêè• cong.py âñïîìîãàòåëüíûé ñêðèïò äëÿ ñáîðêèÈç äèðåêòîðèèñáîðêè:build/íóæíî çàïóñòèòü ñêðèïòbuild.shäëÿ íà÷àëüíîé../build.sh --prex=/home/user/llvm/install --disable-assertions -enable-optimized --templatepath=/home/user/llvm/templatesDumpÑêðèïò build.sh âûçûâàåò ñêðèïò cong.py äëÿ ãåíåðàöèè Makele âïàïêå øàáëîíîâ è íàñòðîéêè ïóòè äàìïà â ïðîãðàììå.

Äàëåå øàáëîíûêîìïèëèðóþòñÿ ñîáðàííûì êîìïèëÿòîðîì clang, è èõ SDG ïîìåùàþòñÿâ óêàçàííóþ ðàíåå ïàïêó äëÿ øàáëîíîâ. Äàëåå èç ïàïêè àíàëèçèðóåìîãîïðîåêòà íåîáõîäèìî âûïîëíèòü ñëåäóþùèå êîìàíäû:export CC=/home/user/llvm/install/bin/clang -make-pdg -ggdbexport CXX=/home/user/llvm/install/bin/clang++ -make-pdg ggdb./congure && make6Çàêëþ÷åíèåÂñåãî áûë ñîáðàí 81 øàáëîí ñ ðàçëè÷íûìè âèäàìè çàâèñèìîñòåé è ôóíêöèÿìè, ïðèâîäÿùèìè ê óÿçâèìîñòè. Ñ ïîìîùüþ èíñòðóìåíòà è ïîñòðîåííûõSDG äëÿ øàáëîíîâ áûëî ïîëó÷åíî, ÷òî ðåáðà ïî óïðàâëåíèþ ëó÷øå ëèáî íåñòðîèòü ëèáî ñòðîèòü êî âñåì èíñòðóêöèÿì áàçîâîãî áëîêà, òî åñòü ïàðàëëåëüíî. Òàê æå ñóùåñòâóþùèå íà äàííûé ìîìåíò àëãîðèòìû ïîêàçàëè, ÷òî äàæåìàëåíüêèå øàáëîíû òðåáóþò äîðàáîòêè â ðàìêàõ ïðîåêòà ïî ïîèñêó óÿçâèìîãî êîäà ñ ïîìîùüþ ìåòîäîâ ïîèñêà êëîíîâ êîäà.

Õîòü äàííûé ïðîöåññ àâòîìàòèçèðîâàí, íî ÷àñòî òðåáóåòñÿ íàéòè áîëüøå ñèòóàöèé, êîãäà âåðøèíû íóæíîóäàëÿòü èç SDG øàáëîíà ïåðåä àíàëèçîì. Ñòîèò îòìåòèòü, ÷òî øàáëîíû ìàëåíüêîãî ðàçìåðà íå âûçâàëè áîëüøîå êîëè÷åñòâî êàíäèäàòîâ ïîñëå ðàáîòûñóùåñòâóþùèõ àëãîðèòìîâ, òåì ñàìûì ñíèçèâ ïðîöåíò false positive ñëó÷àåâ.Áûëè ïðîàíàëèçèðîâàíû ïðîåêòû ñ îòêðûòûì èñõîäíûì êîäîì, òàêèå êàê:openmpi (âåðñèÿ 1.6.5), openssh (âåðñèÿ 6.6-p1), openssl (âåðñèÿ 1.0.1f), libpng(âåðñèè 1.2.5) íà íîóòáóêå ñ 4-õ ÿäåðíûì ïðîöåññîðîì Intel Core i7-3610QM,3000 MHz è 8 ÃÁ îïåðàòèâíîé ïàìÿòè.  ðàìêàõ äèïëîìíîé ðàáîòû ïðåäñòîèò íàïèñàòü íîâûé àëãîðèòì, êîòîðûé, êàê îæèäàåòñÿ, áóäåò òî÷íî ðåøàòüïîñòàâëåííóþ çàäà÷ó ïîèñêà óÿçâèìîñòåé.

Ïîëíóþ ñòàòèñòèêó î øàáëîíàõ(èõ SDG) è íåêîòîðûå SDG øàáëîíîâ ìîæíî óâèäåòü â ïðèëîæåíèè.67012345678910111213141516171819202122232425262728293031323334ÏðèëîæåíèåÊîë-âî Êîë-âî Ñð. ñò.Øàáëîíâåðøèí ñòðîê âåðøèí198305heartbleed-d1_both.c196295heartbleed-t1_lib.c3183J-CWE121_CWE129_fgets_01.c1242J-CWE121_CWE131_memcpy_01.c1242J-CWE121_CWE131_memmove_01.c1552J-CWE121_CWE193_char_alloca_cpy_01.c1952J-CWE121_CWE193_char_alloca_memcpy_01.c1952J-CWE121_CWE193_char_alloca_memmove_01.c1342J-CWE121_CWE193_char_declare_cpy_01.c1742J-CWE121_CWE193_char_declare_memcpy_01.c1742J-CWE121_CWE193_char_declare_memmove_01.c2072J-CWE121_CWE805_char_alloca_memcpy_01.c2072J-CWE121_CWE805_char_alloca_memmove_01.c1762J-CWE121_CWE805_char_alloca_snprintf_01.c1862J-CWE121_CWE805_char_declare_memcpy_01.c1862J-CWE121_CWE805_char_declare_memmove_01.c1552J-CWE121_CWE805_char_declare_snprintf_01.c2272J-CWE121_CWE806_char_alloca_memcpy_01.c2272J-CWE121_CWE806_char_alloca_memmove_01.c1963J-CWE121_CWE806_char_alloca_snprintf_01.c2062J-CWE121_CWE806_char_declare_memcpy_01.c2062J-CWE121_CWE806_char_declare_memmove_01.c1752J-CWE121_CWE806_char_declare_snprintf_01.c1762J-CWE121_dest_char_alloca_cpy_01.c1552J-CWE121_dest_char_declare_cpy_01.c1762J-CWE121_src_char_alloca_cpy_01.c1552J-CWE121_src_char_declare_cpy_01.c1242J-CWE122_CWE131_memcpy_01.c1242J-CWE122_CWE131_memmove_01.c45104J-CWE122_c_CWE129_fgets_01.c1442J-CWE122_c_CWE193_char_memcpy_01.c1442J-CWE122_c_CWE193_char_memmove_01.c1342J-CWE122_c_CWE193_char_ncpy_01.c1873J-CWE122_c_CWE805_char_memcpy_01.c1873J-CWE122_c_CWE805_char_memmove_01.c7353637383940414243444546474849505152535455565758596061626364656667686970717273181519191816312023231720202424241992424212122221920222217191923232549495651107666658788677999638877886788677999101012103332233322222233322332233222222233333332J-CWE122_c_CWE805_char_ncpy_01.cJ-CWE122_c_CWE805_char_snprintf_01.cJ-CWE122_c_CWE806_char_memcpy_01.cJ-CWE122_c_CWE806_char_memmove_01.cJ-CWE122_c_CWE806_char_ncpy_01.cJ-CWE122_c_CWE806_char_snprintf_01.cJ-CWE124_CWE839_fgets_01.cJ-CWE124_char_alloca_cpy_01.cJ-CWE124_char_alloca_memcpy_01.cJ-CWE124_char_alloca_memmove_01.cJ-CWE124_char_declare_cpy_01.cJ-CWE124_char_declare_memcpy_01.cJ-CWE124_char_declare_memmove_01.cJ-CWE124_malloc_char_memcpy_01.cJ-CWE124_malloc_char_memmove_01.cJ-CWE124_malloc_char_ncpy_01.cJ-CWE126_CWE129_fgets_01.cJ-CWE126_CWE170_char_memcpy_01.cJ-CWE126_char_alloca_memcpy_01.cJ-CWE126_char_alloca_memmove_01.cJ-CWE126_char_declare_memcpy_01.cJ-CWE126_char_declare_memmove_01.cJ-CWE126_malloc_char_memcpy_01.cJ-CWE126_malloc_char_memmove_01.cJ-CWE127_CWE839_fgets_01.cJ-CWE127_char_alloca_cpy_01.cJ-CWE127_char_alloca_memcpy_01.cJ-CWE127_char_alloca_memmove_01.cJ-CWE127_char_declare_cpy_01.cJ-CWE127_char_declare_memcpy_01.cJ-CWE127_char_declare_memmove_01.cJ-CWE127_malloc_char_memcpy_01.cJ-CWE127_malloc_char_memmove_01.cJ-CWE127_malloc_char_ncpy_01.cJ-CWE78_char_console_execl_01.cJ-CWE78_char_console_execlp_01.cJ-CWE78_char_console_popen_01.cJ-CWE78_char_console_system_01.cwritten-BOF_memcpy_0.c874832written-BOF_strcpy_0.c751032written-BOR_memcpy_0.c76832written-BOR_strcpy_0.c771542written-BUR_memcpy_0.c781242written-BUR_strcpy_0.c791642written-BUW_memcpy_0.c801342written-BUW_strcpy_0.cÊîëè÷åñòâî øàáëîíîâ : 81Ñðåäíåå êîë-âî âåðøèí : 24Ñðåäíåå êîë-âî ñòðîê : 6Ñðåäíÿÿ ñòåïåíü âåðøèí (áåç ðåáåð óïðàâëåíèÿ): 2Òàáëèöà 1: Ñòàòèñòèêà SDG øàáëîíîâSDG øàáëîíà buer overwrite, íàïèñàííîãî âðó÷íóþðåáðà ïî óïðàâëåíèþ - FULL, 10 âåðøèí9SDG øàáëîíà buer overwrite èç òåñòîâ Julietðåáðà ïî óïðàâëåíèþ - FULL, 19 âåðøèí10Ëèñòèíã 1: Êëàññ DependenceGraph// ===--- llvm/CCD/ DependenceGraph .h - Program Dependence Graph ===//////The LLVM Compiler Infrastructure//// The Institute for System Programming (ISP) of the Russian Academy of Sciences//// ===----------------------------------------------------------------------===////// This file provides data structures for Program Dependence Graph//// ===----------------------------------------------------------------------===//#i f n d e fLLVM_ANALYSIS_DEPENDENCEGRAPH_H#d e f i n eLLVM_ANALYSIS_DEPENDENCEGRAPH_H#i n c l u d e" l l v m / Support / I n s t I t e r a t o r .

Характеристики

Тип файла PDF

PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.

Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.

Список файлов отчёта по практике

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6367
Авторов
на СтудИзбе
310
Средний доход
с одного платного файла
Обучение Подробнее