Да, как раз для таких моментов существует спецификация языка, которая говорит нам об этом:Есть ли возможность создать функцию без прототипа?
//Вариант 1 | bind вернёт новую функцию без prototype
function f() {
//...
}
const ff = f.bind(this) //Вместо 'this' нужный контекст
console.log('prototype' in ff); //false - то что нужно
//Вариант 2 | можем создать функцию у объекта и позаимствовать её
const obj = {
f() {
//...
}
}
const ff = obj.f;
console.log('prototype' in ff); //false - снова то, что нам нужно
//Вариант 2.1 | то же самое, что и вариант 2, только для геттера/сеттера
const obj = {
get f() {
//...
}
}
console.log('prototype' in Object.getOwnPropertyDescriptor(obj, 'f').get); //false - и снова замечательно
Прикреплять к самой статье не буду, так как не очень относится к деобфускации, но если вдруг кому интересно чем там выше занимался @Jambo делая такие штуки, то вот кое-что нашёл вам почитать для начала(последняя ссылка основная):если есть что еще по теме - выкладывай, с удовольствием почитаем...
Здравствуйте, могу я вам помочь? Я тоже хочу решить проблему с тестомОчень круто, автору большой респект. Увидел на ютубе, посмотрел залпом, тема развёрнута очень доходчиво. Даже с моими начальными знаниями веб-разработчика, удалось достичь такого результата:
Посмотреть вложение 86714
Будем дальше разбираться
Babel хорош в плане функционала, но с документацией у него всё плохо, поэтому зачастую приходится разбираться методом тыка.delete (только написал и тут же в голову пришло решение. ладно, ап не лишним будет для такой статьи)
Почитал спасибоBabel хорош в плане функционала, но с документацией у него всё плохо, поэтому зачастую приходится разбираться методом тыка.
babel-handbook/translations/en/plugin-handbook.md at master · jamiebuilds/babel-handbook · GitHub
:blue_book: A guided handbook on how to use Babel and how to create plugins for Babel. - jamiebuilds/babel-handbookgithub.com
Ну и вот я про клауд писал - https://habr.com/ru/articles/716434/ . Там тоже по деревьям гулял, может поможет.
А это просто по теме - https://habr.com/ru/articles/720588/
Все верно. Зато один раз вычислишь, а дальше все будет понятно.Статья огонь)
Подскажите, а если на странице нет обфускации но переменные называются просто буквами a b e n и тд. Как работать с объектами вида
Вычислять значение каждой функции и метода?
ApolloLink: (...)
[*]Observable: (...)
[*]concat: (...)
[*]createOperation: (...)
[*]empty: (...)
[*]execute: (...)
[*]from: (...)
[*]fromError: (...)
[*]fromPromise: (...)
[*]getOperationName: (...)
[*]makePromise: (...)
[*]split: (...)
[*]toPromise: (...)
[*]__esModule: true
[*]Symbol(Symbol.toStringTag): "Module"
[*]get ApolloLink: ƒ ()
[*]get Observable: ƒ ()
[*]get concat: ƒ ()
[*]get createOperation: ƒ ()
[*]get empty: ƒ ()
[*]get execute: ƒ ()
[*]get from: ƒ ()
[*]get fromError: ƒ ()
[*]get fromPromise: ƒ ()
[*]get getOperationName: ƒ ()
[*]get makePromise: ƒ ()
[*]get split: ƒ ()
[*]get toPromise: ƒ ()
[*][[Prototype]]: Object
СпасибоВсе верно. Зато один раз вычислишь, а дальше все будет понятно.
{
"name": "deobf",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@babel/core": "^7.22.10",
"@babel/generator": "^7.22.10",
"@babel/parser": "^7.22.10",
"@babel/traverse": "^7.22.10",
"@babel/types": "^7.22.10"
}
}
// index.mjs
import { parse } from "@babel/parser";
import { traverse } from "@babel/traverse";
import generate from "@babel/generator";
import * as t from "@babel/types";
import fs from "fc";
const code = fs.readFileSync('original.js', { encoding: 'utf-8' });
const ast = parse(code);
console.log(ast);
console.log('Тест');
let k = 1 + 3;
return k ;
Благодаря этому отвратительному материалу большое количество человек научились делать то, чему он учит. Как будто вы деньги за эту статью заплатили)Отвратительная подача материала, какими то обучающим ролик (первый) точно назвать нельзя, просто рабочий процесс и мысли вслух.
Даже не знаю чему ты там из первого ролика мог научиться тому, чего не мог бы сам наклацать без предварительной подготовкиБлагодаря этому отвратительному материалу большое количество человек научились делать то, чему он учит. Как будто вы деньги за эту статью заплатили)
Согласен, не смотриОтвратительная подача материала
Ну... да...просто рабочий процесс и мысли вслух
Как вы смеете так обращаться с легендой зеннолаба. Может у вас не хватает знаний чтобы осилить данную статью которую вообщето показали бесплатно и на которую ушло уйма времени, сил и пота чтобы добиться подобных знаний? За такое инфоциганы могут с лёгкостью 500евро просить за час обучения...Даже не знаю чему ты там из первого ролика мог научиться тому, чего не мог бы сам наклацать без предварительной подготовки
Как же мне повезло, что мне не нужно соревноваться с ёжиком в победе над акамай! Могу ли я заказать у вас уроки по мудрости ёжика?Как вы смеете так обращаться с легендой зеннолаба. Может у вас не хватает знаний чтобы осилить данную статью которую вообщето показали бесплатно и на которую ушло уйма времени, сил и пота чтобы добиться подобных знаний? За такое инфоциганы могут с лёгкостью 500евро просить за час обучения...
Ёжик открыл глаза на многие вещи которые раньше даже и не подразумевались и если вы с этим не согласны, то сделайте лучше - я же знаю что у вас это не выйдет. Удачи победить акамай как сделал это ёжик.
П.д Если что чатгпт в помощь.
Дак у него же в названии роликов есть хэштег #livecoding, что подразумевает специфику видеообучающим ролик (первый) точно назвать нельзя, просто рабочий процесс и мысли вслух.
Человек хочет за бесплатно чтобы ему разжевали обфускацию ХС кода как это делается на курсах за 150 долларов, на затерянном от мейнстрима форуме по боттингу лолДак у него же в названии роликов есть хэштег #livecoding, что подразумевает специфику видео
Ну и понятно, что подобное не для "совсем" новичком