1 место «Со скриптами на ТЫ» | Часть 1 | Деобфускация JavaScript для начинающих

Roman48

Client
Joined
Feb 28, 2016
Messages
2,058
Reaction score
746
Points
113

Jambo

Client
Joined
Nov 28, 2019
Messages
7
Reaction score
16
Points
3
Разбираю creepJS, переопределяю функции, но попадаю в ошибку "failed "prototype" in function". Как я понимаю, это потому что в созданной мной функции есть свойство prototype, а в оригинале его нет. Есть ли возможность создать функцию без прототипа? delete с этим свойством не работает(
 

rastvl

Client
Staff member
Joined
Jan 16, 2019
Messages
656
Reaction score
1,064
Points
93
Есть ли возможность создать функцию без прототипа?
Да, как раз для таких моментов существует спецификация языка, которая говорит нам об этом:
86899

Под MethodDefinition подразумевается следующее(из той же спецификации):
86900

То есть создать функцию без свойства "prototype" можно как-то так:
JavaScript:
//Вариант 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 - и снова замечательно
+ ещё стрелочные функции, но не думаю, что они будут интересны в данном случае
 
Last edited:
  • Thank you
Reactions: Jambo

Zedx

Client
Joined
Jun 12, 2018
Messages
1,402
Reaction score
955
Points
113
Спасибо за статью. Как раз решил поглубже изучить JS и искал что-то по этой теме.
 
  • Thank you
Reactions: rastvl

rastvl

Client
Staff member
Joined
Jan 16, 2019
Messages
656
Reaction score
1,064
Points
93
если есть что еще по теме - выкладывай, с удовольствием почитаем...
Прикреплять к самой статье не буду, так как не очень относится к деобфускации, но если вдруг кому интересно чем там выше занимался @Jambo делая такие штуки, то вот кое-что нашёл вам почитать для начала(последняя ссылка основная):
На английском, к сожалению, но увы, в рунете как-то подобные темы не очень освещены... С переводчиком пойдёт
 

nb2022

Новичок
Joined
Jan 23, 2022
Messages
6
Reaction score
0
Points
1
Очень круто, автору большой респект.;-) Увидел на ютубе, посмотрел залпом, тема развёрнута очень доходчиво. Даже с моими начальными знаниями веб-разработчика, удалось достичь такого результата:
View attachment 86714
Будем дальше разбираться :ay:
Здравствуйте, могу я вам помочь? Я тоже хочу решить проблему с тестом
 

volody00

Client
Joined
Sep 6, 2016
Messages
976
Reaction score
1,066
Points
93
delete (только написал и тут же в голову пришло решение. ладно, ап не лишним будет для такой статьи)
 
Last edited:
  • Thank you
Reactions: rastvl

rastvl

Client
Staff member
Joined
Jan 16, 2019
Messages
656
Reaction score
1,064
Points
93
delete (только написал и тут же в голову пришло решение. ладно, ап не лишним будет для такой статьи)
Babel хорош в плане функционала, но с документацией у него всё плохо, поэтому зачастую приходится разбираться методом тыка.

Ну и вот я про клауд писал - https://habr.com/ru/articles/716434/ . Там тоже по деревьям гулял, может поможет.
А это просто по теме - https://habr.com/ru/articles/720588/
 
  • Thank you
Reactions: volody00

FastSpace

Client
Read only
Joined
Apr 5, 2018
Messages
665
Reaction score
240
Points
43
Babel хорош в плане функционала, но с документацией у него всё плохо, поэтому зачастую приходится разбираться методом тыка.

Ну и вот я про клауд писал - https://habr.com/ru/articles/716434/ . Там тоже по деревьям гулял, может поможет.
А это просто по теме - https://habr.com/ru/articles/720588/
Почитал спасибо :-)

Как насчёт x-client-data? ) это уже не js
 

SlipDez

Client
Joined
Jul 18, 2018
Messages
453
Reaction score
88
Points
28
Статья огонь)

Подскажите, а если на странице нет обфускации но переменные называются просто буквами a b e n и тд. Как работать с объектами вида
  1. 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
Вычислять значение каждой функции и метода?
 

hulk45

Client
Joined
Jul 11, 2018
Messages
38
Reaction score
14
Points
8
Статья огонь)

Подскажите, а если на странице нет обфускации но переменные называются просто буквами a b e n и тд. Как работать с объектами вида
  1. 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
Вычислять значение каждой функции и метода?
Все верно. Зато один раз вычислишь, а дальше все будет понятно.
 
  • Thank you
Reactions: SlipDez

SlipDez

Client
Joined
Jul 18, 2018
Messages
453
Reaction score
88
Points
28
Все верно. Зато один раз вычислишь, а дальше все будет понятно.
Спасибо
 

SlipDez

Client
Joined
Jul 18, 2018
Messages
453
Reaction score
88
Points
28
Подскажите почему выскакивает эта ошибка


Error: Cannot find module 'E:\Deobf\index.js'
at Module._resolveFilename (node:internal/modules/cjs/loader:1077:15)
at Module._load (node:internal/modules/cjs/loader:922:27)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
at node:internal/main/run_main_module:23:47 {
code: 'MODULE_NOT_FOUND',
requireStack: []
}

говорится что не может найти модули но все модули установил

package.json
JavaScript:
{
  "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.js пробовал также переименовать в index.mjs
JavaScript:
// 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);
original.js
JavaScript:
console.log('Тест');


let k = 1 + 3;
return k ;
пробовал обновлять пакеты npm install
Устанавливал npm install @babel/core
Проверял что в terminal правильный путь
 
Last edited:

Besedi

Client
Joined
Mar 4, 2019
Messages
234
Reaction score
42
Points
28
Отвратительная подача материала, какими то обучающим ролик (первый) точно назвать нельзя, просто рабочий процесс и мысли вслух.
 

n0n3mi1y

Client
Joined
Mar 8, 2017
Messages
1,351
Reaction score
671
Points
113
Отвратительная подача материала, какими то обучающим ролик (первый) точно назвать нельзя, просто рабочий процесс и мысли вслух.
Благодаря этому отвратительному материалу большое количество человек научились делать то, чему он учит. Как будто вы деньги за эту статью заплатили)
 

Besedi

Client
Joined
Mar 4, 2019
Messages
234
Reaction score
42
Points
28
Благодаря этому отвратительному материалу большое количество человек научились делать то, чему он учит. Как будто вы деньги за эту статью заплатили)
Даже не знаю чему ты там из первого ролика мог научиться тому, чего не мог бы сам наклацать без предварительной подготовки
 

rastvl

Client
Staff member
Joined
Jan 16, 2019
Messages
656
Reaction score
1,064
Points
93
  • Thank you
Reactions: alcampo

alcampo

Client
Joined
Jan 6, 2021
Messages
187
Reaction score
145
Points
43
Даже не знаю чему ты там из первого ролика мог научиться тому, чего не мог бы сам наклацать без предварительной подготовки
Как вы смеете так обращаться с легендой зеннолаба. Может у вас не хватает знаний чтобы осилить данную статью которую вообщето показали бесплатно и на которую ушло уйма времени, сил и пота чтобы добиться подобных знаний? За такое инфоциганы могут с лёгкостью 500евро просить за час обучения...

Ёжик открыл глаза на многие вещи которые раньше даже и не подразумевались и если вы с этим не согласны, то сделайте лучше - я же знаю что у вас это не выйдет. Удачи победить акамай как сделал это ёжик.

П.д Если что чатгпт в помощь.
 
Last edited:
  • Thank you
Reactions: n0n3mi1y

Besedi

Client
Joined
Mar 4, 2019
Messages
234
Reaction score
42
Points
28
Как вы смеете так обращаться с легендой зеннолаба. Может у вас не хватает знаний чтобы осилить данную статью которую вообщето показали бесплатно и на которую ушло уйма времени, сил и пота чтобы добиться подобных знаний? За такое инфоциганы могут с лёгкостью 500евро просить за час обучения...

Ёжик открыл глаза на многие вещи которые раньше даже и не подразумевались и если вы с этим не согласны, то сделайте лучше - я же знаю что у вас это не выйдет. Удачи победить акамай как сделал это ёжик.

П.д Если что чатгпт в помощь.
Как же мне повезло, что мне не нужно соревноваться с ёжиком в победе над акамай! Могу ли я заказать у вас уроки по мудрости ёжика?
 

southside

Client
Joined
Apr 20, 2019
Messages
209
Reaction score
263
Points
63
обучающим ролик (первый) точно назвать нельзя, просто рабочий процесс и мысли вслух.
Дак у него же в названии роликов есть хэштег #livecoding, что подразумевает специфику видео
Ну и понятно, что подобное не для "совсем" новичком
 

alcampo

Client
Joined
Jan 6, 2021
Messages
187
Reaction score
145
Points
43
Дак у него же в названии роликов есть хэштег #livecoding, что подразумевает специфику видео
Ну и понятно, что подобное не для "совсем" новичком
Человек хочет за бесплатно чтобы ему разжевали обфускацию ХС кода как это делается на курсах за 150 долларов, на затерянном от мейнстрима форуме по боттингу лол

Может ещё ёжик должен был "javascript с 0 для чайников" добавить в видос как 10и часовое вступление?
 
  • Thank you
Reactions: southside

SlipDez

Client
Joined
Jul 18, 2018
Messages
453
Reaction score
88
Points
28
rastvl

Подскажи сложно ли сделать эмуляцию Claudflare на своем сайте или локально используя sitekey и url как это делают такие сервисы как 2captcha для ручного решения и получения cf response
 

PussyM

Client
Joined
Apr 8, 2019
Messages
69
Reaction score
21
Points
8
Решил поглубже изучить JS!
Огромнеешее тебе человеческоен Спасибо за статью.
 

Users Who Are Viewing This Thread (Total: 1, Members: 0, Guests: 1)