М ЕТОД И СРЕДСТВО АЛГОРИТМИЗАЦИИ МАШИННОГО КОДА ТЕЛЕКОМУННИКАЦИОННЫХ УСТРОЙСТВ С ЦЕЛЬЮ ПОИСКА УЯЗВИМОСТЕЙ
О СНОВНЫЕ ИДЕИ использование IDA и ее плагинов разработка специализированной утилиты – Demono специальный язык описания алгоритмов, возможно с использованием набора представлений: ControlFlow DataFlow StructFlow итеративность восстановления независимость от процессора выполнения кода применение для промышленных процессоров (PowerPC, MIPS, ARM)
D EMONO. С ТРУКТУРА High-Level Diagram Usage Scenario IDA + HexRay Demono FrontEnd Asm parsing MiddleEnd structurization graph transformation optimization vulnerability search readability BackEnd Algorithm generation Asm text Asm binary Algorithm text Metainfo
D EMONO. П РИМЕР РАБОТЫ ПРОТОТИПА max3(x, y, z) – функция нахождения максимального из 3-х чисел max3(){ 0x : max3:// { x(r3), y(r4), z(r5), m(r6), n(r7) 0x : cmpw r3, r4// if(x > y) 0x : ble label_1// { 0x : mr r6, r3// m = x; 0x : b label_2// } 0x : label_1:// else { 0x : mr r6, r4// m = y; 0x : label_2:// } 0x : cmpw r6, r5// if(m > z) 0x A: ble label_3// { 0x B: mr r7, r6// n = m; 0x C: b label_4// } 0x D: label_3:// else { 0x E: mr r7, r5// n = z; 0x F: label_4:// } 0x : mr r3, r7// return n; 0x : blr// } }
D EMONO. П РИМЕР РАБОТЫ ПРОТОТИПА AsTree IrList() IrIdent('max3') IrList() IrLabel('max3'), name='max3' IrBranch('ble') IrCond('ble'), kind='?false' IrOperation('ble'), kind='.' IrReg('cr'), id=32 IrInteger(''), value=1 IrLabel('label_1'), name='label_1'...
D EMONO. П РИМЕР РАБОТЫ ПРОТОТИПА BasicBlock graph
D EMONO. П РИМЕР РАБОТЫ ПРОТОТИПА Nassi–Shneiderman tree
D EMONO. П РИМЕР РАБОТЫ ПРОТОТИПА DataFlow graph #1: r3 (in) #2: r4 (in) #3: r5 (in) #4: cr.1 (check) #5: r6 (tmp) #6: r6 (tmp) #7: r7 (tmp) #8: r7 (tmp) #9: r3 (out)
D EMONO. П РИМЕР РАБОТЫ ПРОТОТИПА Final algorithm max3(r3, r4, r5, cr){ if(cr.1?false){ r6=r4; }else{ r6=r3; } if(cr.1?false){ r7=r5; }else{ r7=r6; } r3=r7; return (r3, r6); }
T HE E ND Доклад Вопросы/ответы Обсуждение Комментарии Критика Demono Интересно? Расскажу. Офиц. сайт: while(1) { continues; }