P-Code parameters decompiling

Тема в разделе "WASM.RESEARCH", создана пользователем GPcH, 15 янв 2005.

  1. GPcH

    GPcH Member

    Публикаций:
    0
    Регистрация:
    2 авг 2004
    Сообщения:
    136
    Вопрос тут возник, а ответа нигде найти не смог. Есть конечно вариант потрассировать msvbvm60.dll, но я решил пока таким геморроем не заниматься. Суть вопроса - есть код:
    Код (Text):
    1. Private Sub Form__40398C
    2.   403934: OnErrorGoto 3C00
    3.   403937: LitVar_Missing 3CFF
    4.   40393A: LitVarStr 6CFF0000
    5.   40393F: FStVarCopyObj 5CFF
    6.   403942: FLdRfVar 5CFF
    7.   403945: ImpAdCallFPR4 01000800
    8.   40394A: FFreeVar
    9.   403951: LitVar_TRUE 5CFF
    10.   403954: LitStr 0200
    11.   403957: ImpAdCallFPR4 03000800
    12.   40395C: FFree1Var 5CFF
    13.   40395F: LitVar_TRUE 5CFF
    14.   403962: LitStr 0400
    15.   403965: ImpAdCallFPR4 03000800
    16.   40396A: FFree1Var 5CFF
    17.   40396D: Branch 5500
    18.   403970: LitI2_Byte FF
    19.   403972: PopTmpLdAd2 36FF
    20.   403975: ILdRf 0800
    21.   403978: CastAd 0500
    22.   40397B: FStAdFunc 38FF
    23.   40397E: FLdRfVar 38FF
    24.   403981: ThisVCallHresult 00070600
    25.   403986: FFree1Ad 38FF
    26. End Sub




    Этот код exdec выводит в следующем виде:


    Код (Text):
    1. Proc: 40398c
    2. 403934: 4b OnErrorGoto            
    3. 403937: 27 LitVar_Missing        
    4. 40393A: 3a LitVarStr:              ( local_0094 ) Numega SmartCheck
    5. 40393F: 4e FStVarCopyObj           local_00A4
    6. 403942: 04 FLdRfVar                local_00A4
    7. 403945: 0a ImpAdCallFPR4:          rtcAppActivate
    8. 40394A: 36 FFreeVar
    9. 403951: 63 LitVar_TRUE            
    10. 403954: 1b LitStr:                 %{F4}
    11. 403957: 0a ImpAdCallFPR4:          rtcSendKeys
    12. 40395C: 35 FFree1Var               local_00A4
    13. 40395F: 63 LitVar_TRUE            
    14. 403962: 1b LitStr:                 %Y
    15. 403965: 0a ImpAdCallFPR4:          rtcSendKeys
    16. 40396A: 35 FFree1Var               local_00A4
    17. 40396D: 1e Branch:                 403989
    18. 403970: f4 LitI2_Byte:             0xff  -1  (.)
    19. 403972: 2b PopTmpLdAd2            
    20. 403975: 6c ILdRf                   local_param_0008
    21. 403978: 3d CastAd                
    22. 40397B: 19 FStAdFunc               local_00C8
    23. 40397E: 04 FLdRfVar                local_00C8
    24. 403981: 10 ThisVCallHresult        40398c
    25. 403986: 1a FFree1Ad                local_00C8
    26. 403989: 13 ExitProcHresult        




    Вопрос в следующем: как exdec преобразовал "LitVar_Missing 3CFF" в "LitVarStr: ( local_0094 ) Numega SmartCheck". То есть как он 3CFF преобразовал в offset, по которому лежит строка "Numega SmartCheck". Также непонятно как он "ImpAdCallFPR4 03000800" преобразовал в "ImpAdCallFPR4:rtcAppActivate". То есть суть вопроса в том, как пересчитать параметры (закодированные хз как пикодом) в файловые оффсеты строк и ссылок на IAT (в случае с rtcAppActivate).



    Кто нибудь что нибудь знает по этому вопросу (декодингу параметров)? Заранее спасибо за помощь.



    PS: С декомпилингом опкодов проблем нет.
     
  2. GPcH

    GPcH Member

    Публикаций:
    0
    Регистрация:
    2 авг 2004
    Сообщения:
    136
    Таки я разобрался сам с параметрами :)

    Тему можно закрыть :)