- 20.06.2022
- 23 849
- 218
- 36
- Награды
- 10
- Пол
- Муж.
Репутация:
- Автор темы
- Администратор
- Модератор
- Команда форума
- #1
Обфускация – это процесс, который защищает исходный код программы от несанкционированного доступа или изменения. Она представляет собой перестановку или изменение символов, идентификаторов или структур в исходном коде, чтобы сделать его более сложным для понимания и изменения.
Не все языки программирования подходят для обфускации. Некоторые языки, как например JavaScript, очень легко обфусцировать, потому что они используют динамическую типизацию и не имеют строгой структуры.
На противоположном конце спектра есть языки, такие как C или C++, которые имеют строгую структуру и статическую типизацию, что делает их более сложными для обфускации.
Есть несколько подходов, которые вы можете использовать, чтобы усложнить процесс обфускации:
- Использование обфускаторов: Существует множество обфускаторов, которые можно использовать для обфускации вашего кода, даже если вы используете язык, который не является очень подходящим для обфускации.
- Использование криптографии: Вы можете зашифровать свой исходный код, чтобы защитить его от несанкционированного доступа. Это может сделать процесс обфускации более сложным.
- Использование мультиплексирования: Вы можете разбить свой код на несколько частей и смешивать их, чтобы усложнить процесс обфускации. Это может сложнее сделать для злоумышленников восстановить исходный код.
Возьмем к примеру код простого калькулятора на Js:
JavaScript:
[FONT=inherit] // переменная, в которой хранится выбранное математическое действие[/FONT]
var op;
// функция расчёта
function func() {
// переменная для результата
var result;
// получаем первое и второе число
var num1 = Number(document.getElementById("num1").value);
var num2 = Number(document.getElementById("num2").value);
// смотрим, что было в переменной с действием, и действуем исходя из этого
switch (op) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
result = num1 / num2;
break;
}
}
С помощью Обфусифицируем код:
JavaScript:
var _0x4cc4=['apply','info','28682BEVfNa','221635ReatVm','83pjBkTe','test','return\x20(function()\x20','218936hxwOkW','toString','table','780589fbUtEW','error','return\x20/\x22\x20+\x20this\x20+\x20\x22/','exception','console','length','__proto__','constructor','getElementById','1267oedBbE','bind','457324MPJtTA','log','value','{}.constructor(\x22return\x20this\x22)(\x20)','num2','56599yTfiRa'];var _0x3512=function(_0x8fe3b,_0x48ce20){_0x8fe3b=_0x8fe3b-0x158;var _0x315fa5=_0x4cc4[_0x8fe3b];return _0x315fa5;};(function(_0x2f6dc2,_0x21b2bb){var _0x454d57=_0x3512;while(!![]){try{var _0x55fc0f=parseInt(_0x454d57(0x162))+-parseInt(_0x454d57(0x15d))+-parseInt(_0x454d57(0x165))+parseInt(_0x454d57(0x16a))+-parseInt(_0x454d57(0x166))+parseInt(_0x454d57(0x15b))*-parseInt(_0x454d57(0x167))+parseInt(_0x454d57(0x16d));if(_0x55fc0f===_0x21b2bb)break;else _0x2f6dc2['push'](_0x2f6dc2['shift']());}catch(_0x267bed){_0x2f6dc2['push'](_0x2f6dc2['shift']());}}}(_0x4cc4,0x3b67a));var _0x37a7a9=function(){var _0x13ff0f=!![];return function(_0x7deea5,_0xbbfcb){var _0x3f9d46=_0x13ff0f?function(){var _0x471535=_0x3512;if(_0xbbfcb){var _0x2b7b90=_0xbbfcb[_0x471535(0x163)](_0x7deea5,arguments);return _0xbbfcb=null,_0x2b7b90;}}:function(){};return _0x13ff0f=![],_0x3f9d46;};}(),_0x1eadc8=_0x37a7a9(this,function(){var _0x53dd31=function(){var _0x1af139=_0x3512,_0x10501f=_0x53dd31[_0x1af139(0x159)](_0x1af139(0x16f))()[_0x1af139(0x159)]('^([^\x20]+(\x20+[^\x20]+)+)+[^\x20]}');return!_0x10501f[_0x1af139(0x168)](_0x1eadc8);};return _0x53dd31();});_0x1eadc8();var _0x229db4=function(){var _0x13aa57=!![];return function(_0x177da4,_0x26b353){var _0x442486=_0x13aa57?function(){var _0x51f728=_0x3512;if(_0x26b353){var _0x18de4c=_0x26b353[_0x51f728(0x163)](_0x177da4,arguments);return _0x26b353=null,_0x18de4c;}}:function(){};return _0x13aa57=![],_0x442486;};}(),_0x370c6d=_0x229db4(this,function(){var _0x2594ee=_0x3512,_0x178ce8;try{var _0x5281ba=Function(_0x2594ee(0x169)+_0x2594ee(0x160)+');');_0x178ce8=_0x5281ba();}catch(_0x5f35bb){_0x178ce8=window;}var _0x298d06=_0x178ce8[_0x2594ee(0x171)]=_0x178ce8[_0x2594ee(0x171)]||{},_0xf48616=[_0x2594ee(0x15e),'warn',_0x2594ee(0x164),_0x2594ee(0x16e),_0x2594ee(0x170),_0x2594ee(0x16c),'trace'];for(var _0x3a706f=0x0;_0x3a706f<_0xf48616[_0x2594ee(0x172)];_0x3a706f++){var _0x34f0e9=_0x229db4[_0x2594ee(0x159)]['prototype'][_0x2594ee(0x15c)](_0x229db4),_0x51d785=_0xf48616[_0x3a706f],_0x52b21a=_0x298d06[_0x51d785]||_0x34f0e9;_0x34f0e9[_0x2594ee(0x158)]=_0x229db4['bind'](_0x229db4),_0x34f0e9[_0x2594ee(0x16b)]=_0x52b21a[_0x2594ee(0x16b)]['bind'](_0x52b21a),_0x298d06[_0x51d785]=_0x34f0e9;}});_0x370c6d();var op;function func(){var _0x21ae26=_0x3512,_0x15679d,_0xd2bca9=Number(document[_0x21ae26(0x15a)]('num1')[_0x21ae26(0x15f)]),_0x14a8ce=Number(document['getElementById'](_0x21ae26(0x161))[_0x21ae26(0x15f)]);switch(op){case'+':_0x15679d=_0xd2bca9+_0x14a8ce;break;case'-':_0x15679d=_0xd2bca9-_0x14a8ce;break;case'*':_0x15679d=_0xd2bca9*_0x14a8ce;break;case'/':_0x15679d=_0xd2bca9/_0x14a8ce;break;}}
Примеры:
В заключение, обфускация не является гарантированным способом защиты вашего кода, но это может сделать процесс его кражи или взлома более сложным. Если вы используете язык, который не является очень подходящим для обфускации, вы все еще можете использовать другие методы, такие как использование обфускаторов, криптографию или мультиплексирование, чтобы защитить свой код.
Последние темы в этом разделе:
- [Дмитрий Скоромнов] Основы системного администрирования (2024)
- [Анна Вичугова, Зоя Степчева] Проектирование сложных API: OpenAPI + AsyncAPI (2024)
- [Глеб Михайлов] [Stepik] SQL для анализа данных (2024)
- [Bogdan Stashchuk] [Udemy] Полный курс по MongoDB (2024)
- [Udemy] Полный учебный курс по Go. С Нуля до Героя (2019) [Engl]
- [Академия АйТи] Тестирование на проникновение и анализ безопасности. Базовый уровень (2024)
- [HTML Academy] Профессиональный онлайн-курс Vite (2024)
- [Дмитрий Чернов] Виртуализация Proxmox VE. Внедрение и эксплуатация. Расширенные возможности. Часть 2 (2024)
- [Udemy] [Рамзай Дупати] [ENG] Полный курс по сетевому взлому - от начинающего до продвинутого (2024)
- [infostart.ru] DevOps для 1С (2024)