Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

github.com/LazarenkoA/Obfuscator-1C

Package Overview
Dependencies
Alerts
File Explorer
Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

github.com/LazarenkoA/Obfuscator-1C

  • v0.0.0-20241111190231-e3283e179cbf
  • Source
  • Go
  • Socket score

Version published
Created
Source

Обфускатор языка 1С (bsl)

Этот репозиторий содержит инструмент для обфускации кода на языке 1С:Предприятие (BSL). Обфускация позволяет усложнить анализ кода и повысить уровень защиты интеллектуальной собственности в ваших проектах на платформе 1С. Проект работает на 1c-language-parser

Пример использования
package main

import (
	"context"
	"fmt"

	"github.com/LazarenkoA/Obfuscator-1C/obfuscator"
)

func main() {

	code := `...`

	obf := obfuscator.NewObfuscatory(context.Background(), obfuscator.Config{RepExpByTernary: true,
		RepLoopByGoto:    true,
		RepExpByEval:     true,
		HideString:       true,
		ChangeConditions: true,
		AppendGarbage:    true,
	})

	obCode, err := obf.Obfuscate(code)
	if err != nil {
		fmt.Println(err)
		return
	}

	fmt.Println(obCode)
}


этот пример на play.golang.com

Примеры обфускации

Исходный код

&НаСервереБезКонтекста
Процедура Команда1НаСервере()     
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	Оборудование.Ссылка КАК Ссылка
		|ИЗ
		|	Справочник.Оборудование КАК Оборудование";
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		Сообщить(ВыборкаДетальныеЗаписи.Ссылка);
	КонецЦикла;
	

КонецПроцедуры


на выходе

&НаСервереБезКонтекста
Процедура Команда1НаСервере() Запрос = Вычислить(raeyrчфлинzpeолюучzт("0LzQn9CT0arQmAHQttCR0J7RodCf0aAJCA==", ?(81 + 94 - 12 / 20 + 70 / 68 < 80 - 21 + 54 - 30, 674, ?(76 / 98 * 9 + 13 + 99 / 57 > 56 * 30 + 81, 727, ?(71 + 97 - 51 > 71 * 63 / 26 * 56 / 93, 33, 666)))));Запрос.Текст = raeyrчфлинzpeолюучzт("0ZLRq9GR0aDRkNGi0axKSUlgSdGe0bHRvtCA0IPRtNG+0bLRsNG90bjRtW7RodCB0IvRu9G60bBg0ZrRkNGaYNGh0IHQi9G70brRsEpJSWDRmNGXSklJYEnRodG/0IDRsNGy0b7Qh9G90bjRum7RntGx0b7QgNCD0bTRvtGy0bDRvdG40bVg0ZrRkNGaYNGe0bHRvtCA0IPRtNG+0bLRsNG90bjRtQ==", ?(8 - 69 / 38 > 85 + 94 * 38, 102, ?(25 + 1 + 69 + 33 + 96 < 80 + 87 * 2 - 78, 892, ?(100 / 8 + 37 + 88 + 10 > 80 + 26 - 16, 64, 696))));РезультатЗапроса = Вычислить(raeyrчфлинzpeолюучzт("0LfQkNCf0aDQntGhDtCy0avQn9Ce0JvQndCY0aLRrAgJ", ?(28 + 44 > 91 - 18 + 55 + 29 + 18, 803, ?(91 - 45 * 18 * 95 + 55 - 80 < 62 * 98 * 39 + 16 / 15 / 3, 32, ?(80 + 95 + 69 * 19 < 6 * 39 / 63, 37, 736)))));ВыборкаДетальныеЗаписи = Вычислить(raeyrчфлинzpeолюучzт("0bDRpdGn0JPRq9Cc0JLRoNCS0YfRoNGv0JDRrtCR0aB+0YLQm9Gh0JDRoNCS0Jx4eQ==", ?(43 - 38 + 95 * 86 + 13 / 60 < 7 + 71, 732, ?(41 - 1 - 34 + 3 / 66 > 81 - 7 + 60 + 90 / 79 / 70, 347, ?(42 * 50 / 84 - 48 / 46 < 73 + 88, 80, ?(60 / 48 + 90 - 61 / 69 * 86 < 97 + 67 - 52 * 36, 786, 96))))));~аqс:Если Не ВыборкаДетальныеЗаписи.Следующий() Тогда Перейти ~sъjm;КонецЕсли;Сообщить(ВыборкаДетальныеЗаписи.Ссылка);Перейти ~аqс;~sъjm:iзylшйбилnowм = ?(88 + 44 > 76 - 93 / 47 + 11, "islmл", ?(59 / 58 < 42 / 71, "roтrзwlv", ?(44 + 68 / 29 * 90 * 4 > 76 + 94 * 32 - 69, "ыyфвбя", ?(59 + 53 - 21 / 9 / 87 * 13 > 94 * 27 - 74 / 75, "еgdpгсx", "vгаzэop"))));Если 71 + 70 < 57 / 3 / 28 / 77 * 32 Тогда Перейти ~жhфqpгj;~жhфqpгj:Иначе Перейти ~qщлjgру;~qщлjgру:КонецЕсли;КонецПроцедуры
&НаСервереБезКонтекста
Функция raeyrчфлинzpeолюучzт(зmжzdcч, ккeнок) зmжzdcч = ПолучитьСтрокуИзДвоичныхДанных(?(24 - 7 > 5 * 91 * 32 - 83 * 99 * 5, Base64Значение(зmжzdcч), ?(58 + 88 - 97 < 13 + 34 - 40 + 24 / 94, Base64Значение(зmжzdcч), ?(85 / 99 > 8 - 75 * 93 / 11 / 64 + 100, Base64Значение(зmжzdcч), ?(17 * 17 < 76 - 6 / 64 - 81 - 83, Base64Значение(зmжzdcч), Base64Значение(зmжzdcч))))));нпgmpcа = ?(80 - 5 > 14 - 22 / 81, "", ?(36 - 68 / 72 > 87 + 22, "prоъьп", ?(85 + 39 - 6 + 63 < 28 + 43 - 65 / 76, "ддagчъ", ?(97 / 54 / 31 - 13 * 31 > 81 * 19 / 10 / 70 - 3, "bфщиspq", "эnмemчo"))));_ = 1;~rуvr:Если _ > СтрДлина(зmжzdcч) Тогда Перейти ~гpfq;КонецЕсли;код = ?(26 * 58 + 61 < 7 * 60 / 52 - 76 + 23 * 75, КодСимвола(зmжzdcч, _), ?(50 + 82 < 3 / 7 - 95 / 57, КодСимвола(зmжzdcч, _), ?(88 / 27 < 86 - 8 * 53 + 66, КодСимвола(зmжzdcч, _), КодСимвола(зmжzdcч, _))));нпgmpcа = ?(58 + 40 - 54 - 31 / 10 + 42 < 97 + 16 / 15 - 85 + 58, 15 / 19 * 40 - 61 + 4 / 100 > 90 - 67, ?(61 + 22 > 31 * 66 - 95 + 55 - 22, 3 * 55 < 49 - 61 * 34 + 50 / 51, ?(6 + 19 > 56 + 68 + 96 - 24, 53 - 8 + 98 * 82 + 78 < 71 / 54, ?(31 + 78 / 19 - 27 * 79 / 100 > 99 / 20 + 53, 95 * 75 * 34 / 33 / 43 < 47 + 42 / 95 - 68, ?(69 / 71 * 76 < 95 - 76 / 50 * 35 / 73, нпgmpcа + Символ(?(4 + 99 + 9 < 4 - 70, ПобитовоеИли(?(31 - 81 > 92 + 55 - 39, ПобитовоеИНе(код, ккeнок), ?(10 / 62 + 63 > 81 - 78 * 44, ПобитовоеИНе(код, ккeнок), ?(50 / 73 < 12 - 71 - 14 * 72 - 96 * 85, ПобитовоеИНе(код, ккeнок), ?(38 * 24 * 48 / 57 < 92 - 43, ПобитовоеИНе(код, ккeнок), ПобитовоеИНе(код, ккeнок))))), ?(11 / 12 / 82 - 76 - 47 > 83 * 38, ПобитовоеИНе(ккeнок, код), ?(96 * 39 / 7 + 30 + 65 < 62 * 37 / 37 / 18, ПобитовоеИНе(ккeнок, код), ?(41 / 78 - 81 < 16 * 21 * 20 * 68 * 96, ПобитовоеИНе(ккeнок, код), ПобитовоеИНе(ккeнок, код))))), ?(86 + 8 * 71 < 24 + 68 - 64, ПобитовоеИли(?(31 - 81 > 92 + 55 - 39, ПобитовоеИНе(код, ккeнок), ?(10 / 62 + 63 > 81 - 78 * 44, ПобитовоеИНе(код, ккeнок), ?(50 / 73 < 12 - 71 - 14 * 72 - 96 * 85, ПобитовоеИНе(код, ккeнок), ?(38 * 24 * 48 / 57 < 92 - 43, ПобитовоеИНе(код, ккeнок), ПобитовоеИНе(код, ккeнок))))), ?(11 / 12 / 82 - 76 - 47 > 83 * 38, ПобитовоеИНе(ккeнок, код), ?(96 * 39 / 7 + 30 + 65 < 62 * 37 / 37 / 18, ПобитовоеИНе(ккeнок, код), ?(41 / 78 - 81 < 16 * 21 * 20 * 68 * 96, ПобитовоеИНе(ккeнок, код), ПобитовоеИНе(ккeнок, код))))), ?(94 + 30 * 9 - 70 > 7 / 73 - 31, ПобитовоеИли(?(31 - 81 > 92 + 55 - 39, ПобитовоеИНе(код, ккeнок), ?(10 / 62 + 63 > 81 - 78 * 44, ПобитовоеИНе(код, ккeнок), ?(50 / 73 < 12 - 71 - 14 * 72 - 96 * 85, ПобитовоеИНе(код, ккeнок), ?(38 * 24 * 48 / 57 < 92 - 43, ПобитовоеИНе(код, ккeнок), ПобитовоеИНе(код, ккeнок))))), ?(11 / 12 / 82 - 76 - 47 > 83 * 38, ПобитовоеИНе(ккeнок, код), ?(96 * 39 / 7 + 30 + 65 < 62 * 37 / 37 / 18, ПобитовоеИНе(ккeнок, код), ?(41 / 78 - 81 < 16 * 21 * 20 * 68 * 96, ПобитовоеИНе(ккeнок, код), ПобитовоеИНе(ккeнок, код))))), ?(32 - 44 / 2 - 69 - 37 > 17 / 94 / 52, ПобитовоеИли(?(31 - 81 > 92 + 55 - 39, ПобитовоеИНе(код, ккeнок), ?(10 / 62 + 63 > 81 - 78 * 44, ПобитовоеИНе(код, ккeнок), ?(50 / 73 < 12 - 71 - 14 * 72 - 96 * 85, ПобитовоеИНе(код, ккeнок), ?(38 * 24 * 48 / 57 < 92 - 43, ПобитовоеИНе(код, ккeнок), ПобитовоеИНе(код, ккeнок))))), ?(11 / 12 / 82 - 76 - 47 > 83 * 38, ПобитовоеИНе(ккeнок, код), ?(96 * 39 / 7 + 30 + 65 < 62 * 37 / 37 / 18, ПобитовоеИНе(ккeнок, код), ?(41 / 78 - 81 < 16 * 21 * 20 * 68 * 96, ПобитовоеИНе(ккeнок, код), ПобитовоеИНе(ккeнок, код))))), ?(68 - 56 / 33 - 7 + 61 < 46 - 96 - 51, ПобитовоеИли(?(31 - 81 > 92 + 55 - 39, ПобитовоеИНе(код, ккeнок), ?(10 / 62 + 63 > 81 - 78 * 44, ПобитовоеИНе(код, ккeнок), ?(50 / 73 < 12 - 71 - 14 * 72 - 96 * 85, ПобитовоеИНе(код, ккeнок), ?(38 * 24 * 48 / 57 < 92 - 43, ПобитовоеИНе(код, ккeнок), ПобитовоеИНе(код, ккeнок))))), ?(11 / 12 / 82 - 76 - 47 > 83 * 38, ПобитовоеИНе(ккeнок, код), ?(96 * 39 / 7 + 30 + 65 < 62 * 37 / 37 / 18, ПобитовоеИНе(ккeнок, код), ?(41 / 78 - 81 < 16 * 21 * 20 * 68 * 96, ПобитовоеИНе(ккeнок, код), ПобитовоеИНе(ккeнок, код))))), ПобитовоеИли(?(31 - 81 > 92 + 55 - 39, ПобитовоеИНе(код, ккeнок), ?(10 / 62 + 63 > 81 - 78 * 44, ПобитовоеИНе(код, ккeнок), ?(50 / 73 < 12 - 71 - 14 * 72 - 96 * 85, ПобитовоеИНе(код, ккeнок), ?(38 * 24 * 48 / 57 < 92 - 43, ПобитовоеИНе(код, ккeнок), ПобитовоеИНе(код, ккeнок))))), ?(11 / 12 / 82 - 76 - 47 > 83 * 38, ПобитовоеИНе(ккeнок, код), ?(96 * 39 / 7 + 30 + 65 < 62 * 37 / 37 / 18, ПобитовоеИНе(ккeнок, код), ?(41 / 78 - 81 < 16 * 21 * 20 * 68 * 96, ПобитовоеИНе(ккeнок, код), ПобитовоеИНе(ккeнок, код))))))))))), ?(73 * 78 - 88 / 83 * 94 + 15 > 91 * 19 / 5 * 61, 62 * 3 + 27 > 96 * 88, 73 + 4 / 84 - 16 < 43 / 8 / 31))))));хvmоnеk = ?(42 - 49 / 98 > 68 - 61 / 37 + 29, 597, ?(55 / 34 * 43 + 85 - 88 < 67 + 99 / 38 - 26 + 54, -41, ?(70 + 72 + 72 > 99 / 13 * 69 * 48 / 12, 917, ?(35 * 54 * 59 < 82 * 66 - 93, 272, 214))));Если 70 / 31 - 63 + 85 > 100 * 73 - 55 Тогда Перейти ~dlтчeckp;~dlтчeckp:ИначеЕсли 40 / 9 + 32 - 10 / 40 / 42 < 36 / 33 Тогда ИначеЕсли 71 * 9 < 25 + 18 + 68 / 25 * 10 / 81 Тогда ИначеЕсли 62 / 97 - 44 / 71 > 16 + 35 + 2 Тогда ИначеЕсли 65 + 51 * 54 * 27 / 90 < 27 * 30 / 80 Тогда Иначе Перейти ~yщфoмrг;~yщфoмrг:КонецЕсли;Пока 70 - 80 > 71 + 79 / 31 Цикл Перейти ~qдгyье;~qдгyье:Пока 33 / 55 + 30 - 3 - 33 > 32 + 39 / 58 / 53 - 72 / 15 Цикл Перейти ~tgюndхп;~tgюndхп:пnakйzсhюцыuз = ?(10 + 44 * 36 / 34 < 92 / 86, "шiмнбj", ?(35 * 65 - 34 * 29 * 20 + 4 < 28 * 68, "иоэ", ?(75 + 20 * 82 - 39 + 34 < 22 / 80 * 71 - 81, "шйfаvц", ?(68 * 5 - 48 < 3 * 26 / 38 / 46, "ppqpаjсr", "фтttpзя"))));Перейти ~yхеецт;~yхеецт:Пока 32 / 62 - 100 / 80 > 99 / 72 + 43 * 19 Цикл Перейти ~pфзcеzф;~pфзcеzф:КонецЦикла;Перейти ~tvxyаgиu;~tvxyаgиu:КонецЦикла;Перейти ~чыibcэх;~чыibcэх:КонецЦикла;_ = _ + 1;Перейти ~rуvr;~гpfq:Возврат нпgmpcа;bpnnшuмvbнsfшяu = ?(61 * 1 / 96 / 25 / 94 > 23 + 90 - 83 - 20 / 89 * 45, "irясcпc", ?(28 + 20 * 47 * 75 / 26 > 31 - 66 * 77 + 21 - 61 * 36, "ьwщ", ?(70 + 72 * 100 - 37 - 17 - 90 < 91 / 87 + 8 / 96 / 69, "умилр", ?(4 * 85 - 49 < 70 - 63 - 1 * 9, "гщmqыvу", "яфrбюю"))));kcahhwоо = ?(41 - 4 * 59 < 39 / 46 + 22, 34, ?(5 - 66 - 77 > 45 + 28 - 84 / 5 / 30 - 28, 731, ?(91 / 28 > 19 + 99 / 96, 226, 639)));Если 40 * 53 + 80 * 76 < 32 - 50 - 7 * 20 Тогда Перейти ~wtkmsоъa;~wtkmsоъa:ИначеЕсли 28 - 44 > 30 + 86 / 3 + 14 * 8 Тогда ИначеЕсли 23 - 41 - 89 / 92 < 71 / 72 - 43 + 20 Тогда ИначеЕсли 32 + 79 / 96 * 97 * 38 / 29 < 46 - 50 / 44 Тогда Иначе Перейти ~рpkорп;~рpkорп:КонецЕсли;КонецФункции

Кода на порядок больше, однако тот код что был добавлен, он мусорный, он никогда не будет выполнен, а значит значительного эффекта на производительность не даст.

данный пример был выполнен 10 раз с замером производительности, вот результаты

до обфускации

после (максимальные настройки)

FAQs

Package last updated on 11 Nov 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc