wsprintf подскажите

Тема в разделе "WASM.BEGINNERS", создана пользователем La_plaza, 9 ноя 2008.

  1. La_plaza

    La_plaza New Member

    Публикаций:
    0
    Регистрация:
    20 авг 2008
    Сообщения:
    95
    в общем-то я хотел вообще-то сделать программу, которая будет по указанному имени длл будет вытягивать все CRC апишек и формировать список в виде:
    CRC API_name
    =)
    может есть пример насчет этого ?
    ну и собственно после каждой позиции каждой API нужно было переходить на другую строку. Вот поэтому я и завел эту тему
     
  2. only

    only New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2008
    Сообщения:
    147
    La_plaza
    "\r\n" в C
    Return
    New Line
    Эскейп символы
    Хотя это уже объяснил медуза

    Есть пример кода на С (черновой вариант, но дело сделал, и я его не дорабатывал).
    Формирует хидер с crc32 кодами всех функций всех дллок системной директории (в виде например {prefix}_{api_name}) %WinDir%\System\System32
    Немного переделать, можно и inc сделать
     
  3. La_plaza

    La_plaza New Member

    Публикаций:
    0
    Регистрация:
    20 авг 2008
    Сообщения:
    95
    ну да, си - "великий язык"...
    хоцу на асме:)
    короче знаю алгоритм получения CRC апишки, я вот только не пойму как сделать чтобы это все в файл не гамузом записалось, а красиво как раз, вот почему и спрашиваю за перевод каретки и тд
    гм, получается мне нужно записать имя апи, потом поставить пробел, потом записать CRC и потом поставить пустую строку "\n" и потом выйти в следующий проход поиска CRC ? блин, мне по алгоритму записи строк и перевод каретки не до конца ясен. Нет, я-то могу попытаться сделать как я смогу, но код разползется как хз что, а это имхо не совсем правильно
     
  4. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    А как находится конец функций?
     
  5. La_plaza

    La_plaza New Member

    Публикаций:
    0
    Регистрация:
    20 авг 2008
    Сообщения:
    95
    стандартным методом;)
     
  6. La_plaza

    La_plaza New Member

    Публикаций:
    0
    Регистрация:
    20 авг 2008
    Сообщения:
    95
    ладно, ща попробую че-нить попробывать написать
     
  7. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    La_plaza
    Каким таким стандартным?
     
  8. only

    only New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2008
    Сообщения:
    147
    [offtop_below]

    Однозначно
    Видать есть какие-то.
    Я вообще не заметил поста про поиск конца функции тут.
    Странно, что человек разбирает ПЕ формат и не понимает простых апишек которые описаны просто всюду.

    [offtop_above]
     
  9. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Код (Text):
    1. .data
    2. szFormat db '%s %u',13,10,0
    3. .data?
    4. szApiName db 64 dup (?) ; буфер для имени API
    5. CRC dd ? ; сюда положишь результат вычисления CRC
    6. .code
    7. invoke wsprintf, addr szOutbuffer, addr szFormat, addr szApiName, [CRC]
    Ещё можно:
    szFormat db 'Имя API = %s, CRC = %u',13,10,0 ; CRC десятичное
    szFormat db 'Имя API = %s, CRC = %x',13,10,0 ; CRC в hex
     
  10. allex7

    allex7 New Member

    Публикаций:
    0
    Регистрация:
    10 ноя 2008
    Сообщения:
    20
  11. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    точнее во так:
    Код (Text):
    1. .data
    2. szFormat db '%s %u',13,10,0
    3. .data?
    4. szApiName db 64 dup (?) ; буфер для имени API
    5. CRC dd ? ; сюда положишь результат вычисления CRC
    6. .code
    7. mov edi, offset szOutbuffer ; api не изменяют edi, esi, ebx, ebp
    8. @@:  ; цикл вывода API и CRC
    9.   ...
    10.   invoke wsprintf, edi, addr szFormat, addr szApiName, [CRC]
    11.   add edi, eax ; дописывать следующую строковую конструкция в хвост предидущей
    12.   ...
    13. jxx @B
     
  12. La_plaza

    La_plaza New Member

    Публикаций:
    0
    Регистрация:
    20 авг 2008
    Сообщения:
    95
    да в том-то и заключается мой оленизм. Я разбираю серьезные вещи, а простых навыков программирования у меня нехватает. Вот хочу исправится и пару десятков небольших прожек сделать.
     
  13. only

    only New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2008
    Сообщения:
    147
    ПЕ - это не серьезные вещи уж точно, просто видать русский ближе.

    чтобы сделать переход на новую строку нужно в конце строки ставить "\n", а если думаете писать 13, 10 то вообще все символы
    пишите в 10й системе, ну чтобы это - "типа круче было".
    Если UNICODE кодировку позже будете использовать, тоже так писать будете?
     
  14. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Да вирусы, PE и даже драйвера всё это детский лепет в сравнении с мировой революцией.
    Взять какой нибудь по-настоящему крутой продукт который разрабатывается кучей народу годами (напирмер игры), вот это действительно сложно.
     
  15. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    only
    13 10 имхо лучше чем форматные строки
    когда хрен разберешь где что
    С:\\Program Files\\\r\n
     
  16. only

    only New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2008
    Сообщения:
    147
    K10
    Спорить не буду
    \return
    \new line
    \tab
    и т.п.
    возможно действительно хрен разберешь по сравнению с десятичными цифрами 10 13 и т.п.
     
  17. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    \n есть только в Си и ему подобных ЯП. В других ЯП такого нет, и ничего, пишут же люди както, и с юникодом пишут...
     
  18. only

    only New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2008
    Сообщения:
    147
    GoldFinch
    Сейчас разговор о конкретных апи.
    Это они обрабатывают эти эскейп последовательности.
    Не нужно смешивать все подряд - думайте сначала.
    Языки тут вообще не причем.
     
  19. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    эм.... wsprintf не обрабатывает эскейп последовательности, разве что %%... их компилятор или препроцессор си обрабатывает вроде как...
     
  20. only

    only New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2008
    Сообщения:
    147
    GoldFinch
    Все ясно. Жесть какая-то. :)
    wsprintf(A/W) функции user32.dll
    Эти "глупости" отсюда
    Эскейп последовательности - сюда