Декомпиляция TCL Byte Code

Discussion in 'Реверсинг' started by TweakeR, 18 Jan 2008.

  1. TweakeR

    TweakeR Member

    Joined:
    6 Feb 2006
    Messages:
    54
    Likes Received:
    8
    Reputations:
    5
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    | В даной статье я покажу, как можно получить исходный програмный код из TCL Byte Code (TBC) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Конечно весь исходник мы не получим, но часть зашифрованого кода всётаки можно декодировать ;)


    И так поехали:

    1. Создаём файлик tbc2tcl.tcl со следущим содержанием:

    Code:
    set write_sources [open "tcl_sources_code.txt" a+]
    puts $write_sources "___replace___"
    2. Комплимим tbc2tcl.tcl при помощью ActiveState Tcl Dev Kit 3.2 и в результате создастся откомпилиный tbc2tcl.tbc следущего содержания:

    Code:
    if {[catch {package require tbcload 1.4} err] == 1} {
        return -code error "[info script]: The TclPro ByteCode Loader is not available or does not support the correct version -- $err"
    }
    tbcload::bceval {
    TclPro ByteCode 2 0 1.4 8.4
    3 0 22 6 0 0 12 0 4 3 3 -1 -1
    22
    w0E<!(H&s!@btt!'3*!!9#Gpvw!!
    3
    -c&v
    3
    >or!
    6
    x
    13
    >c5DFs8|fD'bfRA?v
    x
    4
    *dmID
    x
    20
    o4jY?A;lcEgdTZ?h^oRAxmhEF
    x
    2
    XNv
    x
    4
    DP)*F
    x
    13
    y0NaEomK;@SAIX?+v
    0
    0
    }
    3. Находим в этом файле код:

    Code:
    13
    y0NaEomK;@SAIX?+v
    Это является закоденое значение "___replace___", которое должно записываться в tcl_sources_code.txt.

    4. Далее ищем в закоденом файле куски закоденого кода следущего вида:
    Code:
    [COLOR=Navy]X[/COLOR]
    [COLOR=Green]число[/COLOR]
    [COLOR=MediumTurquoise]код[/COLOR]
    [COLOR=Navy]X[/COLOR]
    5. Далее копируем (число) и (код), тоесть от X до X в файл tbc2tcl.tbc за место:
    13
    y0NaEomK;@SAIX?+v


    6. Далее запускаем tbc2tcl.tbc и после завершения должен создаться файл tcl_sources_code.txt с декодированым кодом куска которого мы заменили ;)

    Вот такой вот простой метод декодирования TCL Byte Code :)
    -----------------
    C Уважением TwEaKeR
     
    #1 TweakeR, 18 Jan 2008
    Last edited: 13 Nov 2009
    3 people like this.
  2. bomfunkY

    bomfunkY Banned

    Joined:
    19 Jan 2008
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Артём, огромное спасибо, как раз искал :)
    Очень полезно для редактирования демона в чате Бородина)
    А не мог бы ты дать ссылочку на НЕ Trial версию ActiveState Tcl Dev Kit v3.2?
    Спасибо.
     
    #2 bomfunkY, 19 Jan 2008
    Last edited: 19 Jan 2008
  3. TweakeR

    TweakeR Member

    Joined:
    6 Feb 2006
    Messages:
    54
    Likes Received:
    8
    Reputations:
    5
    для этого есть keygen ;)
     
  4. Emergency

    Emergency New Member

    Joined:
    16 Mar 2008
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    ммм... Ловко =))
    но есть один минус... При попытке изменить хоть один символ в прочитанном таким образом и вкомпилированном обратно коде - бородинский демон не стартует, доходит только до определения кодировки (видно по выводимым в консоли сообщениям) и встаёт.
    Похоже, где-то в коде проверяется контрольная сумма или что-то в этом роде. Не подскажете, как это побороть ? =))
     
  5. Emergency

    Emergency New Member

    Joined:
    16 Mar 2008
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Upd: конечно, подразумевается "смена хоть одного символа" в чисто текстовых значениях-константах, например в выводимых во фрейм сообщений проверочных скриптах или при смене даты/версии демона.