FASM und minifmod

Тема в разделе "Библиотеки и интерфейсы", создана пользователем Gloomy, 19 дек 2004.

  1. Gloomy

    Gloomy New Member

    Публикаций:
    0
    Регистрация:
    29 май 2003
    Сообщения:
    48
    Адрес:
    Екатеринбург
    bogrus

    Спасибо за совет, теперь стало намного читабельнее. Продолжаем разборки...
     
  2. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    4 часа диких извращений и ufmod грубо "портрирован" в фасм, тестируйте :)



    [​IMG] _27537422__fasmod.zip
     
  3. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    з.ы. а от msvcrt и других все равно никак не избавится, она в импорте msacm32.dll
     
  4. Asterix

    Asterix New Member

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

    Что-то я не понимаю, откуда у тебя взялась msvcrt, из µfmod.lib она напрочь удалена и в импорте тестовой проги test.exe ее нет..
     
  5. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    У меня её и нету, яж говорю, что она потом подгружается. У драйвера msacm32.drv, который играет в импорте есть msacm32.dll, а у той в импорте msvcrt
     
  6. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
  7. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    [offtop]



    А почему сейчас практически не делают cracktro?

    Или просто я ничего не качаю и не вижу...
     
  8. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
  9. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Да я не про то, где найти

    Взять твой экзешник, добавить что-нибудь из old school: some flying shit (balls, scrolling, ...) например :)
     
  10. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    bogrus

    Супер!!! Кстати, uFMOD всё ещё в процессе оптимизации. А можно ваш пример на фасме включить в следующий дистрибутив?
     
  11. Asterix

    Asterix New Member

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

    Что-то ты перемудрил :derisive:

    На win98 твой киген падает.
     
  12. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Asterix

    А первый экзешник не падает?
     
  13. Asterix

    Asterix New Member

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

    Asterix New Member

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

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    fasmod.exe

    Он самый. Плохо :-( А что Olly говорит? Где он падает? (фрагмент кода мне на мыло, пожалуйста)
     
  16. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Падает тут, это на код либы никак не похоже, больше похоже на какой-то изврат с импортом :)
    Код (Text):
    1. .flat:0040B290                               sub_40B290      proc near               ; CODE XREF: start+15p
    2. .flat:0040B290                                                                       ; DATA XREF: start+10o
    3. .flat:0040B290
    4. .flat:0040B290                               arg_0           = dword ptr  8
    5. .flat:0040B290                               arg_4           = dword ptr  0Ch
    6. .flat:0040B290                               arg_8           = dword ptr  10h
    7. .flat:0040B290
    8. .flat:0040B290 55                                            push    ebp
    9. .flat:0040B291 89 E5                                         mov     ebp, esp
    10. .flat:0040B293 8B 45 10                                      mov     eax, [ebp+arg_8]
    11. .flat:0040B296 A3 A4 B3 40 00                                mov     ds:dword_40B3A4, eax
    12. .flat:0040B29B 8B 45 0C                                      mov     eax, [ebp+arg_4]
    13. .flat:0040B29E A3 A0 B3 40 00                                mov     ds:dword_40B3A0, eax
    14. .flat:0040B2A3 64 A1 30 00 00 00                             mov     eax, large fs:30h
    15. .flat:0040B2A9 8B 40 0C                                      mov     eax, [eax+0Ch]
    16. <font color="red][b].flat:0040B2AC 8B 40 1C                                      mov     eax, [eax+1Ch][/b]</font><!--color-->
    17. .flat:0040B2AF 8B 00                                         mov     eax, [eax]
    18. .flat:0040B2B1 8B 40 08                                      mov     eax, [eax+8]
    19. .flat:0040B2B4 89 C6                                         mov     esi, eax
    20. .flat:0040B2B6 8B 7D 08                                      mov     edi, [ebp+arg_0]
    21. .flat:0040B2B9 68 B4 B1 40 00                                push    offset aClosehandle ; "CloseHandle"
    22. .flat:0040B2BE 56                                            push    esi
    23. .flat:0040B2BF FF D7                                         call    edi
    24. .flat:0040B2C1 A3 20 B0 40 00                                mov     ds:dword_40B020, eax
    25. .flat:0040B2C6 68 C0 B1 40 00                                push    offset aLocalfree ; "LocalFree"
    26. .flat:0040B2CB 56                                            push    esi
    27. .flat:0040B2CC FF D7                                         call    edi
    28. .flat:0040B2CE A3 28 B0 40 00                                mov     ds:off_40B028, eax
    29. .flat:0040B2D3 68 CA B1 40 00                                push    offset aSleep   ; "Sleep"
    30. .flat:0040B2D8 56                                            push    esi
    31. .flat:0040B2D9 FF D7                                         call    edi
    32. .flat:0040B2DB A3 2C B0 40 00                                mov     ds:off_40B02C, eax
    33. .flat:0040B2E0 68 D0 B1 40 00                                push    offset aLocalalloc ; "LocalAlloc"
    34. .flat:0040B2E5 56                                            push    esi
    35. .flat:0040B2E6 FF D7                                         call    edi
    36. .flat:0040B2E8 A3 30 B0 40 00                                mov     ds:dword_40B030, eax
    37. .flat:0040B2ED 68 DB B1 40 00                                push    offset aCreatethread ; "CreateThread"
    38. .flat:0040B2F2 56                                            push    esi
    39. .flat:0040B2F3 FF D7                                         call    edi
    40. .flat:0040B2F5 A3 34 B0 40 00                                mov     ds:dword_40B034, eax
    41. .flat:0040B2FA 68 E8 B1 40 00                                push    offset aLoadlibrarya ; "LoadLibraryA"
    42. .flat:0040B2FF 56                                            push    esi
    43. .flat:0040B300 FF D7                                         call    edi
    44. .flat:0040B302 68 38 B1 40 00                                push    offset dword_40B138
    45. .flat:0040B307 FF D0                                         call    eax
    46. .flat:0040B309 89 C6                                         mov     esi, eax
    47. .flat:0040B30B 68 42 B1 40 00                                push    offset aWaveoutclose ; "waveOutClose"
    48. .flat:0040B310 56                                            push    esi
    49. .flat:0040B311 FF D7                                         call    edi
    50. .flat:0040B313 A3 00 B0 40 00                                mov     ds:dword_40B000, eax
    51. .flat:0040B318 68 4F B1 40 00                                push    offset aWaveoutunprepa ; "waveOutUnprepareHeader"
    52. .flat:0040B31D 56                                            push    esi
    53. .flat:0040B31E FF D7                                         call    edi
    54. .flat:0040B320 A3 04 B0 40 00                                mov     ds:dword_40B004, eax
    55. .flat:0040B325 68 66 B1 40 00                                push    offset aWaveoutreset ; "waveOutReset"
    56. .flat:0040B32A 56                                            push    esi
    57. .flat:0040B32B FF D7                                         call    edi
    58. .flat:0040B32D A3 08 B0 40 00                                mov     ds:dword_40B008, eax
    59. .flat:0040B332 68 73 B1 40 00                                push    offset aWaveoutopen ; "waveOutOpen"
    60. .flat:0040B337 56                                            push    esi
    61. .flat:0040B338 FF D7                                         call    edi
    62. .flat:0040B33A A3 0C B0 40 00                                mov     ds:dword_40B00C, eax
    63. .flat:0040B33F 68 7F B1 40 00                                push    offset aWaveoutgetposi ; "waveOutGetPosition"
    64. .flat:0040B344 56                                            push    esi
    65. .flat:0040B345 FF D7                                         call    edi
    66. .flat:0040B347 A3 10 B0 40 00                                mov     ds:dword_40B010, eax
    67. .flat:0040B34C 68 92 B1 40 00                                push    offset aWaveoutwrite ; "waveOutWrite"
    68. .flat:0040B351 56                                            push    esi
    69. .flat:0040B352 FF D7                                         call    edi
    70. .flat:0040B354 A3 14 B0 40 00                                mov     ds:dword_40B014, eax
    71. .flat:0040B359 68 9F B1 40 00                                push    offset aWaveoutprepare ; "waveOutPrepareHeader"
    72. .flat:0040B35E 56                                            push    esi
    73. .flat:0040B35F FF D7                                         call    edi
    74. .flat:0040B361 A3 18 B0 40 00                                mov     ds:dword_40B018, eax
    75. .flat:0040B366 68 87 B2 40 00                                push    offset loc_40B287
    76. .flat:0040B36B 68 40 B2 40 00                                push    offset sub_40B240
    77. .flat:0040B370 68 FC B1 40 00                                push    offset sub_40B1FC
    78. .flat:0040B375 68 FB B1 40 00                                push    offset nullsub_1
    79. .flat:0040B37A 68 F5 B1 40 00                                push    offset aD@      ; "¬д¦@"
    80. .flat:0040B37F B8 57 12 40 00                                mov     eax, offset sub_401257
    81. .flat:0040B384 FF D0                                         call    eax ; sub_401257
    82. .flat:0040B386 83 C4 14                                      add     esp, 14h
    83. .flat:0040B389 6A 00                                         push    0
    84. .flat:0040B38B 6A 00                                         push    0
    85. .flat:0040B38D B8 BB 12 40 00                                mov     eax, offset sub_4012BB
    86. .flat:0040B392 FF D0                                         call    eax ; sub_4012BB
    87. .flat:0040B394 83 C4 08                                      add     esp, 8
    88. .flat:0040B397 C9                                            leave
    89. .flat:0040B398 C2 0C 00                                      retn    0Ch
    90. .flat:0040B398                               sub_40B290      endp
     
  17. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Это xm_init()

    Через FS что-то ищет...
     
  18. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Если убрать извраты, то всё работает :)
    Код (Text):
    1. 0040B290  /. 55             PUSH EBP
    2. 0040B291  |. 89E5           MOV EBP,ESP
    3. 0040B293  |. 8B45 10        MOV EAX,DWORD PTR SS:[EBP+10]
    4. 0040B296  |. A3 A4B34000    MOV DWORD PTR DS:[40B3A4],EAX
    5. 0040B29B  |. 8B45 0C        MOV EAX,DWORD PTR SS:[EBP+C]
    6. 0040B29E  |. A3 A0B34000    MOV DWORD PTR DS:[40B3A0],EAX
    7. 0040B2A3     68 C0EF4000    PUSH FASMOD.0040EFC0                     ;  ASCII "kernel32.dll"
    8. 0040B2A8     E8 69C4B6BF    CALL KERNEL32.GetModuleHandleA
    9. 0040B2AD     90             NOP
    10. 0040B2AE     90             NOP
    11. 0040B2AF     90             NOP
    12. 0040B2B0     90             NOP
    13. 0040B2B1     90             NOP
    14. 0040B2B2     90             NOP
    15. 0040B2B3     90             NOP
    16. 0040B2B4  |. 89C6           MOV ESI,EAX
    17. 0040B2B6  |. 8B7D 08        MOV EDI,DWORD PTR SS:[EBP+8]
    18. 0040B2B9  |. 68 B4B14000    PUSH FASMOD.0040B1B4                     ;  ASCII "CloseHandle"
     
  19. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Понял. Нечто подобное я и подозревал :)
     
  20. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    Да, это я перемудрил, кернел искал :) Включить в дистрибутив конечно можно, только раз он ещё оптимизируется, то потом мне снова надо будет сперва сдампить и подкрутить, у меня ещё есть желание совместить xm_init с xm_play, т.е. оставить всего два вызова (play и stop), этот я исправлю и пришлю кудысь, а мне можно на bogrus[суслик]ukr.net