Поставить игнор на вывод ошибки

Тема в разделе "WASM.ASSEMBLER", создана пользователем se7en, 14 апр 2011.

  1. se7en

    se7en New Member

    Публикаций:
    0
    Регистрация:
    14 апр 2011
    Сообщения:
    6
    Приветствую!
    Сразу скаж, в программировании я не силен (в ассе уж тем более).
    Но сегодня столкнулся с серьезной траблой, вообщем ехешник онлайн игры (крякнутой) начал выдавать ошибку завуалированную, под игровую (обычное окно оповещения), при попытке закрыть - вылазит тот же еррор, но сам игровой серв работал дальше. После перезапуска ехе серва та же ошибка, но и ехе не грузится до конца.
    Вообщем я так понял разработчики постарались, дабы попортить нервов пользователям крякнутой версии.

    Вообщем поиском по текстовым строкам нашел я эту фигню в ехе через олю, вызывается 4 раза, пробывал менять на всякие JMP, но к нужному результату так и не привело (то просто креш был, то повторно еще одно ехе запускалось)).

    Текст ошибки таков:
    Код (Text):
    1. Monster attribute max over user.cpp 3771
    Что нашел через ольку:
    Код (Text):
    1. 004E409F   . 68 44E05C00    PUSH GameServ.005CE044                   ;  ASCII "Monster attribute max over %s %d"
    2.  
    3. 004E9A9E   . 68 44E05C00    PUSH GameServ.005CE044                   ;  ASCII "Monster attribute max over %s %d"
    4.  
    5. 004E9CF3   . 68 84E25C00    PUSH GameServ.005CE284                   ;  ASCII "Monster attribute max over %d (%s %d)"
    6.  
    7. 00553B69  |. 68 44E05C00    PUSH GameServ.005CE044                   ;  ASCII "Monster attribute max over %s %d"
    Вообщем прошу у вас помощи, совета или подсказки, думаю для большинства это ничего не стоит..

    Еще и так невовремя эта трабла вылезла.

    Сам ехе https://rapidshare.com/files/457396132/GameServer.rar
     
  2. lomerok

    lomerok New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2008
    Сообщения:
    60
    попробуй забей нопами команды которые вызывают окно ошибки или джамп поставь на переход сразу к коду который после них должен идти
     
  3. se7en

    se7en New Member

    Публикаций:
    0
    Регистрация:
    14 апр 2011
    Сообщения:
    6
    Забивал, ошибки нет, серв висит секунд 30 и тупо закрывается.
     
  4. lomerok

    lomerok New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2008
    Сообщения:
    60
    приведи полный код гдже вызывается алерт
     
  5. se7en

    se7en New Member

    Публикаций:
    0
    Регистрация:
    14 апр 2011
    Сообщения:
    6
    Сюда идет PUSH (где конец не знаю):
    Код (Text):
    1. 005CE284   4D               DEC EBP
    2. 005CE285   6F               OUTS DX,DWORD PTR ES:[EDI]               ; I/O command
    3. 005CE286   6E               OUTS DX,BYTE PTR ES:[EDI]                ; I/O command
    4. 005CE287   73 74            JNB SHORT GameServ.005CE2FD
    5. 005CE289   65:72 20         JB SHORT GameServ.005CE2AC               ; Superfluous prefix
    6. 005CE28C   61               POPAD
    7. 005CE28D   74 74            JE SHORT GameServ.005CE303
    8. 005CE28F   72 69            JB SHORT GameServ.005CE2FA
    9. 005CE291   6275 74          BOUND ESI,QWORD PTR SS:[EBP+74]
    10. 005CE294   65:206D 61       AND BYTE PTR GS:[EBP+61],CH
    11. 005CE298   78 20            JS SHORT GameServ.005CE2BA
    12. 005CE29A   6F               OUTS DX,DWORD PTR ES:[EDI]               ; I/O command
    13. 005CE29B   76 65            JBE SHORT GameServ.005CE302
    14. 005CE29D   72 20            JB SHORT GameServ.005CE2BF
    15. 005CE29F   25 64202825      AND EAX,25282064
    16. 005CE2A4   73 20            JNB SHORT GameServ.005CE2C6
    17. 005CE2A6   25 64290000      AND EAX,2964
    18. 005CE2AB   0066 69          ADD BYTE PTR DS:[ESI+69],AH
    19. 005CE2AE   6C               INS BYTE PTR ES:[EDI],DX                 ; I/O command
    20. 005CE2AF   65:206F 70       AND BYTE PTR GS:[EDI+70],CH
    21. 005CE2B3   65:6E            OUTS DX,BYTE PTR ES:[EDI]                ; I/O command
    22. 005CE2B5   2065 72          AND BYTE PTR SS:[EBP+72],AH
    23. 005CE2B8   72 6F            JB SHORT GameServ.005CE329
    24. 005CE2BA   72 20            JB SHORT GameServ.005CE2DC
    25. 005CE2BC   25 7300005B      AND EAX,5B000073
    26. 005CE2C1   41               INC ECX
    27. 005CE2C2   4E               DEC ESI
    28. 005CE2C3   54               PUSH ESP
    29. 005CE2C4   49               DEC ECX
    30. 005CE2C5   2D 4841434B      SUB EAX,4B434148
    31. 005CE2CA   5D               POP EBP
    32. 005CE2CB   5B               POP EBX
    33. 005CE2CC   4E               DEC ESI
    34. 005CE2CD   50               PUSH EAX
    35. 005CE2CE   43               INC EBX
    36. 005CE2CF   5D               POP EBP
    37. 005CE2D0   202D 20547279    AND BYTE PTR DS:[79725420],CH
    38. 005CE2D6   20746F 20        AND BYTE PTR DS:[EDI+EBP*2+20],DH
    39. 005CE2DA   6F               OUTS DX,DWORD PTR ES:[EDI]               ; I/O command
    40. 005CE2DB   70 65            JO SHORT GameServ.005CE342
    41. 005CE2DD   6E               OUTS DX,BYTE PTR ES:[EDI]                ; I/O command
    42. 005CE2DE   204E 50          AND BYTE PTR DS:[ESI+50],CL
    43. 005CE2E1   43               INC EBX
    44. 005CE2E2   206475 72        AND BYTE PTR SS:[EBP+ESI*2+72],AH
    45. 005CE2E6   696E 67 204D6170 IMUL EBP,DWORD PTR DS:[ESI+67],70614D20
    46. 005CE2ED   53               PUSH EBX
    47. 005CE2EE   65:72 76         JB SHORT GameServ.005CE367               ; Superfluous prefix
    48. 005CE2F1   65:72 20         JB SHORT GameServ.005CE314               ; Superfluous prefix
    49. 005CE2F4   4D               DEC EBP
    50. 005CE2F5   6F               OUTS DX,DWORD PTR ES:[EDI]               ; I/O command
    51. 005CE2F6   76 65            JBE SHORT GameServ.005CE35D
    52. 005CE2F8   205B 25          AND BYTE PTR DS:[EBX+25],BL
    53. 005CE2FB   73 5D            JNB SHORT GameServ.005CE35A
    54. 005CE2FD   5B               POP EBX
    55. 005CE2FE   25 735D0000      AND EAX,5D73
    56. 005CE303   0051 75          ADD BYTE PTR DS:[ECX+75],DL
    57. 005CE306   65:73 74         JNB SHORT GameServ.005CE37D              ; Superfluous prefix
    58. 005CE309   4E               DEC ESI
    59. 005CE30A   70 63            JO SHORT GameServ.005CE36F
    60. 005CE30C   2052 65          AND BYTE PTR DS:[EDX+65],DL
    61. 005CE30F   66:43            INC BX
    62. 005CE311   6F               OUTS DX,DWORD PTR ES:[EDI]               ; I/O command
    63. 005CE312   75 6E            JNZ SHORT GameServ.005CE382
    64. 005CE314   74 20            JE SHORT GameServ.005CE336
    65. 005CE316   49               DEC ECX
    66. 005CE317   6E               OUTS DX,BYTE PTR ES:[EDI]                ; I/O command
    67. 005CE318   6320             ARPL WORD PTR DS:[EAX],SP
    68. 005CE31A   3D 20256400      CMP EAX,GameServ.00642520
    69. 005CE31F   005B 25          ADD BYTE PTR DS:[EBX+25],BL
    70. 005CE322   73 5D            JNB SHORT GameServ.005CE381
    71. 005CE324   5B               POP EBX
    72. 005CE325   25 735D205B      AND EAX,5B205D73
    73. 005CE32A   51               PUSH ECX
    74. 005CE32B   55               PUSH EBP
    75. 005CE32C   45               INC EBP
    76. 005CE32D   53               PUSH EBX
    77. 005CE32E   54               PUSH ESP
    78. 005CE32F   5D               POP EBP
    79. 005CE330   205465 6C        AND BYTE PTR SS:[EBP+6C],DL
    80. 005CE334   65:70 6F         JO SHORT GameServ.005CE3A6               ; Superfluous prefix
    81. 005CE337   72 74            JB SHORT GameServ.005CE3AD
    82. 005CE339   20746F 20        AND BYTE PTR DS:[EDI+EBP*2+20],DH
    83. 005CE33D   52               PUSH EDX
     
  6. se7en

    se7en New Member

    Публикаций:
    0
    Регистрация:
    14 апр 2011
    Сообщения:
    6
    NOP я ставил имеено вместо PUSH GameServ.005CE044
     
  7. lomerok

    lomerok New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2008
    Сообщения:
    60
    ноп надо ставить не только на пуши но и на вызовы,а лутше всего на пуше поставить переход , тоесть джамп .
    и кстати в этом исходнике я не нашел ни одного вызова call какой либо функции которая выводит алерт,
    похоже ты чтото не то сюда написал...
     
  8. se7en

    se7en New Member

    Публикаций:
    0
    Регистрация:
    14 апр 2011
    Сообщения:
    6
    1
    Код (Text):
    1. 004E4095   . 68 9A000000    PUSH 9A
    2. 004E409A   . 68 68E05C00    PUSH GameServ.005CE068                   ;  ASCII ".\MonsterAttr.cpp"
    3. 004E409F   . 68 44E05C00    PUSH GameServ.005CE044                   ;  ASCII "Monster attribute max over %s %d"
    4. 004E40A4   . E8 377DFEFF    CALL GameServ.004CBDE0
    5. 004E40A9   . 83C4 0C        ADD ESP,0C
    6. 004E40AC   . EB 14          JMP SHORT GameServ.004E40C2
    7. 004E40AE   >^E9 B6FAFFFF    JMP GameServ.004E3B69
    8. 004E40B3   > 8B15 8024D604  MOV EDX,DWORD PTR DS:[4D62480]
    9. 004E40B9   . 52             PUSH EDX
    2
    Код (Text):
    1. 004E9A92   . 7E 2B          JLE SHORT GameServ.004E9ABF
    2. 004E9A94   . 68 31010000    PUSH 131
    3. 004E9A99   . 68 6CE25C00    PUSH GameServ.005CE26C                   ;  ASCII ".\MonsterSetBase.cpp"
    4. 004E9A9E   . 68 44E05C00    PUSH GameServ.005CE044                   ;  ASCII "Monster attribute max over %s %d"
    5. 004E9AA3   . E8 3823FEFF    CALL GameServ.004CBDE0
    6. 004E9AA8   . 83C4 0C        ADD ESP,0C
    7. 004E9AAB   . 8B0D 887BD704  MOV ECX,DWORD PTR DS:[4D77B88]
    8. 004E9AB1   . 51             PUSH ECX
    9. 004E9AB2   . E8 C7D50A00    CALL GameServ.0059707E
    10. 004E9AB7   . 83C4 04        ADD ESP,4
    3
    Код (Text):
    1. 004E9CDD   . 7E 32          JLE SHORT GameServ.004E9D11
    2. 004E9CDF   . 68 5B010000    PUSH 15B
    3. 004E9CE4   . 68 6CE25C00    PUSH GameServ.005CE26C                   ;  ASCII ".\MonsterSetBase.cpp"
    4. 004E9CE9   . 8B45 D4        MOV EAX,DWORD PTR SS:[EBP-2C]
    5. 004E9CEC   . 8B88 141B0200  MOV ECX,DWORD PTR DS:[EAX+21B14]
    6. 004E9CF2   . 51             PUSH ECX
    7. 004E9CF3   . 68 84E25C00    PUSH GameServ.005CE284                   ;  ASCII "Monster attribute max over %d (%s %d)"
    8. 004E9CF8   . E8 E320FEFF    CALL GameServ.004CBDE0
    9. 004E9CFD   . 83C4 10        ADD ESP,10
    10. 004E9D00   . 8B15 887BD704  MOV EDX,DWORD PTR DS:[4D77B88]
    11. 004E9D06   . 52             PUSH EDX
    12. 004E9D07   . E8 72D30A00    CALL GameServ.0059707E
    4
    Код (Text):
    1. 00553B5D  |. 7C 1F          JL SHORT GameServ.00553B7E
    2. 00553B5F  |. 68 BB0E0000    PUSH 0EBB
    3. 00553B64  |. 68 64565D00    PUSH GameServ.005D5664                   ;  ASCII ".\user.cpp"
    4. 00553B69  |. 68 44E05C00    PUSH GameServ.005CE044                   ;  ASCII "Monster attribute max over %s %d"
    5. 00553B6E  |. E8 6D82F7FF    CALL GameServ.004CBDE0
    6. 00553B73  |. 83C4 0C        ADD ESP,0C
    7. 00553B76  |. 83C8 FF        OR EAX,FFFFFFFF
    8. 00553B79  |. E9 EE000000    JMP GameServ.00553C6C
    9. 00553B7E  |> 0FB645 0C      MOVZX EAX,BYTE PTR SS:[EBP+C]
    10. 00553B82  |. 50             PUSH EAX                                 ; /Arg1
    Кстати пкоа копировал заметил что в последнем случае выше идет ASCII ".\user.cpp" это тоже содержится в тексте ошибки (Monster attribute max over user.cpp 3771), так что думаю именно последний кусок отвечает за нужную.
    Осталось разобраться как ее убрать :)
     
  9. se7en

    se7en New Member

    Публикаций:
    0
    Регистрация:
    14 апр 2011
    Сообщения:
    6
    Поставил так:
    Код (Text):
    1. 00553B5D  |. 7C 1F          JL SHORT GameServ.00553B7E
    2. 00553B5F     E9 08010000    JMP GameServ.00553C6C                   ; сюда
    3. 00553B64     E9 03010000    JMP GameServ.00553C6C                   ; и сюда
    4. 00553B64  |. 68 64565D00    PUSH GameServ.005D5664                   ;  ASCII ".\user.cpp"
    5. 00553B69  |. 68 44E05C00    PUSH GameServ.005CE044                   ;  ASCII "Monster attribute max over %s %d"
    6. 00553B6E  |. E8 6D82F7FF    CALL GameServ.004CBDE0
    7. 00553B73  |. 83C4 0C        ADD ESP,0C
    8. 00553B76  |. 83C8 FF        OR EAX,FFFFFFFF
    9. 00553B79  |. E9 EE000000    JMP GameServ.00553C6C                    ; скопировал отсюда
    10. 00553B7E  |> 0FB645 0C      MOVZX EAX,BYTE PTR SS:[EBP+C]
    11. 00553B82  |. 50             PUSH EAX                                 ; /Arg1
    И заработало! :)

    Спасибо огромное за подсказки, и все-таки может я что-то не так сделал? (чтобы в будущем не было проблем).
     
  10. lomerok

    lomerok New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2008
    Сообщения:
    60
    молодец=)
     
  11. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Может и не то. Ошибка-то никакая не замаскированная. Сообщается, что атрибут монстра превосходит максимум. Раз не вываливается - значит этот атрибут где-то режется до максимума, а может просто везет :)