Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!: Декомпилятор - Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!

Перейти к содержимому

  • (2 Страниц) +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Декомпилятор Тот самый Оценка: -----

#1
Пользователь офлайн   makap 

  • Местный
  • Вставить ник
  • Раскрыть информацию
Изображение

Форум привет. Хотел бы рассказать о разработке нового декомпилятора

Чего я хочу достичь:

1) Работа с модами больших размеров

2) Обход всей имеющейся защиты

Что имеется на данный момент:

1) Анализатор данных. Можно получить любую строку из мода

2) Понимает глобальные переменные и глобальные массивы

3) Определяет колбэки, пользовательские и нативные функции, а также подставляет параметры в них


Небольшой пример:

До:

Скрытый текст [Показать]


После:

Скрытый текст [Показать]


Пока он не переводит числа в 10сс и строки не подставляет, сейчас это не главное.

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

На данный момент декомпилятор о-о-о-о-чень сырой и разработан примерно на 20%, тем не менее некоторую логику понимает

Репозиторий на гитхабе приватный. Пишу на C/C++
2

#2
Пользователь офлайн   Duty22334(Ostin) 

  • Местный
  • Вставить ник
  • Раскрыть информацию
Желаю удачи.
0

#3
Пользователь офлайн   Romzes 

  • © Pawn-Wiki.Ru
  • Вставить ник
  • Раскрыть информацию
Зачем нужен декомпилятор?
0

#4
Пользователь офлайн   makap 

  • Местный
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияRomzes (05 Март 2018 - 13:21) писал:

Зачем нужен декомпилятор?


.amx в .pwn. Получить исходный код мода, понять его логику и т.п.
0

#5
Пользователь офлайн   Romzes 

  • © Pawn-Wiki.Ru
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияmakap (05 Март 2018 - 13:41) писал:

.amx в .pwn. Получить исходный код мода, понять его логику и т.п.


Я имел введу другое. Зачем он нужен, что ты собрался декомпилировать и для каких целей?
0

#6
Пользователь офлайн   Pa4enka 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
Исходный код и в будущем будет закрыт?
0

#7
Пользователь офлайн   makap 

  • Местный
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияRomzes (05 Март 2018 - 13:51) писал:

Я имел введу другое. Зачем он нужен, что ты собрался декомпилировать и для каких целей?


Или я ответил выше или я не понял вопрос

Просмотр сообщенияPa4enka (05 Март 2018 - 14:19) писал:

Исходный код и в будущем будет закрыт?


Еще предстоит очень много работы. Наверное, все будет зависит от успеха или не успеха итогового приложения
0

#8
Пользователь офлайн   fausto 

  • Новичок
  • Вставить ник
  • Раскрыть информацию
Зачем выкладывать такую сырую версию?
0

#9
Пользователь офлайн   SooBad 

  • Псевдо-переферийный магус
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияfausto (06 Март 2018 - 20:40) писал:

Зачем выкладывать такую сырую версию?

А зачем крупные проекты делают анонсы своих серверов за долгие месяцы до их открытия?
Наверное, для того, чтобы их разработка, в дальнейшем, была хотя бы кем-то востребована...

Автора поддержу.
Идея по созданию декомпилятора действительно стоящая, особенно если брать во внимание тот факт, что в паблике нет ни одного приложения, тянущего по функционалу даже на "сырую" версию данной разработки.

Сообщение отредактировал SooBad: 07 Март 2018 - 00:26

1

#10
Пользователь офлайн   DeimoS 

  • Evil Scripter
  • Вставить ник
  • Раскрыть информацию
Обход защиты, надеюсь, происходит не за счёт пропуска "подозрительных" функций, которые определяются таковыми по названию?
То бишь, если у меня будет такой OnGameModeInit
public OnGameModeInit()
{
	#emit    stack    0x7FFFFFFF    // wtf (1) (stack over... overf*ck!?)
	#emit    inc.s    cellmax    // wtf (2) (this one should probably make DeAMX allocate all available memory and lag forever)
	static const ___[][] = {"Daniel", "Cortez"};    // pretty old anti-deamx trick
	#emit    retn
	#emit    load.s.pri    ___    // wtf (3) (opcode outside of function?)
	#emit    proc    // wtf (4) (if DeAMX hasn't crashed already, it would think it is a new function)
	#emit    proc    // wtf (5) (a function inside of another function!?)
	#emit    fill    cellmax    // wtf (6) (fill random memory block with 0xFFFFFFFF)
	#emit    proc
	#emit    stack    1    // wtf (7) (compiler usually allocates 4 bytes or 4*N for arrays of N elements)
	#emit    stor.alt    ___    // wtf (8) (...)
	#emit    strb.i    2    // wtf (9)
	#emit    switch    4
	#emit    retn    // wtf (10) (no "casetbl" opcodes before retn - invalid switch statement?)
L1:
	#emit    jump    L1    // avoid compiler crash from "#emit switch"
	#emit    zero    cellmin    // wtf (11) (nonexistent address)

	SendRconCommand("mapname какой-то текст");
	return 1;
}

Сможет ли твой декомпилятор обойти её?

Сообщение отредактировал DeimoS: 11 Март 2018 - 18:07

0

Поделиться темой:


  • (2 Страниц) +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей