VB P-CODE, почему exe'шник посылает декомпиляторы на..

Тема в разделе "WASM.RESEARCH", создана пользователем Asterix, 21 окт 2004.

  1. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Subj

    Вроде корректно распакован, что не нравится декомпиляторам,

    exdec'у в частности..

    а также дебаггеру WKTVBDebugger?



    ломать ничего не нужно-уже всё отломано, но хотелось знать

    причину subj'а, и как поправить, на будущее..

    [​IMG] _156122716__Dump_test2_.exe
     
  2. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    А он блин, как-то находит окно exdec'а,WKTVBDebugger-а,ОллиДбг, без разницы и шлёт ему WM_QUIT
    Код (Text):
    1. 0012E4FC   6A9DF7B7  /CALL to PostMessageA from msvbvm60.6A9DF7B5
    2. 0012E500   000C008C  |hWnd = C008C
    3. 0012E504   00000012  |Message = WM_QUIT
    4. 0012E508   00000000  |ExitCode = 0
    5. 0012E50C   0012E512  \lParam = 12E512
    Поставь бп на 0040282F
     
  3. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    bogrus

    Да ищет он кое-какие тулзы, но это всё пофиг..



    Декомпилятор ведь не запускает exe'шник.

    Декомпиляторам не нравится таблица импорта и они либо падают либо отказываются декомпилировать, только VBReFormer и VBDE декомпилируют, но у них возможностей маловато.



    У меня есть оригинал, он декомпилируется нормально, но ведь в реале не всегда можно заиметь оригинал :derisive:
     
  4. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    А на счёт декомпилятора, то да, почему-то глючный этот exe для них. SemiVBDecompiler вообще говорит, что это не VB прога. Посмотри в другие vb проги, у них кроме import table есть bound import table и import address table, а у этого их нет, но есть "лишняя" секция .mackt

    Короче кто-то постарался ручками неплохо :)
     
  5. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    > SemiVBDecompiler вообще говорит



    Он у меня вообще не запускается %)



    Про bound import это я упустил, но нельзя же тулзам(декомпиляторам) ориентироваться на bound import.



    > но есть "лишняя" секция .mackt



    Ну естетсвенно это я прикрутил когда распаковывал :)



    А вот декомпиляция этого файла, только естественно оригинального(не паковавшегося), т.е. отломать оригинальный проблем не возникло, а если попадётся исковерканный

    [​IMG] 1689154818__exdec_listing.rar
     
  6. Dr.Golova

    Dr.Golova New Member

    Публикаций:
    0
    Регистрация:
    7 сен 2002
    Сообщения:
    348
    Неа, оно только мониторы закрывает и олли:
    Код (Text):
    1.  
    2.       vFF64=user32.GetWindowTextA(vFF78, vFF4C, CDbl(vFF70) + 1)
    3.       vFF74 = Str2Uni(vFF4C)
    4.       vFF70=CStr(vFF64)
    5.       If InStr(1,vFF74,"Registry Monitor",1) <> 0 Or InStr(1,vFF74,"File Monitor",1) <> 0 Or InStr(1,vFF74,"Ollydbg",1) <> 0 Then
    6.          vFF28 = Str2Ansi(vFF74 & Chr(vFF50, 0))
    7.          vFF64=user32.FindWindowA(0, vFF28)
    8.          vFF6C=vFF64
    9.          user32.PostMessageA(vFF6C, 18, 0, 0)
    10.          vFF6A=-1
    11.       End If
    12.  




    А так оно похоже ключики считает ;)
    Код (Text):
    1.  
    2. ---- function, res is at FF78, nArg 3, nRefer 9
    3. Function coder_00403ACC as String
    4.    vFF74=p000C
    5.    If vFF74 = 0 Then
    6.       coder_00403ACC=0
    7.       Exit Sub
    8.    End If
    9.    If p0010 = 0 Then
    10.       Exit Sub
    11.    End If
    12.    coder_00403ACC=""
    13.    vFF70=Len(vFF74)
    14.    vFF6C=Len(p0010)
    15.    For vFF68=1 To vFF70 Step 3
    16.       On Error Resume Next
    17.       coder_00403ACC=coder_00403ACC + Chr(vFEC8, Val(Mid(vFF20, vFF74, vFF68, 3)) Xor Val(Mid(vFEDC, p0010, Int(vFF68 / 3) Mod vFF6C + 1, 1)))
    18.    Next vFF68
    19.    Exit Sub
    20.  
    21.  
    22. ---- function, res is at FF78, nArg 3, nRefer 9
    23. Function coder_00403C30 as String
    24.    vFF74=p000C
    25.    If vFF74 = 0 Then
    26.       coder_00403C30=0
    27.       Exit Sub
    28.    End If
    29.    If p0010 = 0 Then
    30.       Exit Sub
    31.    End If
    32.    vFF6C=Len(vFF74)
    33.    vFF68=Len(p0010)
    34.    For vFF64=1 To vFF6C
    35.       vFF70=Trim(vFE94, Str(vFEA4, Val(Mid(vFF1C, vFF74, vFF64, 1)) Xor Val(Mid(vFED8, p0010, (vFF64 - 1) Mod vFF68 + 1, 1))))
    36.       vFE8C=Val(vFF70)
    37.       If 0 <= vFE8C And vFE8C <= 9 Then
    38.          vFF70="00" + vFF70
    39.       Else
    40.          If 10 <= vFE8C And vFE8C <= 99 Then
    41.             vFF70="0" + vFF70
    42.          End If
    43.       End If
    44.       coder_00403C30=coder_00403C30 + vFF70
    45.    Next vFF64
    46.    Exit Sub
    47.  
     
  7. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    Не слабый у Dr.Golova листинг, даже без правки можно пихать в vb :)
     
  8. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Dr.Golova

    Хорошие в вашей конторе декомпиляторы :derisive:
     
  9. man0war

    man0war New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2004
    Сообщения:
    85
    Адрес:
    Albania




    Ничего себе !!! Откуда такой прекрасный декомпилер ?

    Или вместо него использовались только brain ?