Элементарные основы кодинга

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by NeXArmAor, 13 Oct 2007.

Thread Status:
Not open for further replies.
  1. NeXArmAor

    NeXArmAor Banned

    Joined:
    21 Apr 2007
    Messages:
    226
    Likes Received:
    161
    Reputations:
    6
    Нид хелп,сейчас мучаю одно творение,и возникла одна "маленькая проблема",дело в том что при использовании функции lstrcat возникает некоторые лаги,эта функция соединяет два буфера в один,но происходит мерзостная бага когда ее используеш часто. Т.е допустим нужно соединить C:\WINDOWS с regedit.exe. На первый раз все клеит удачно,но потом возникает необходимость еще одного комбинирования,типа dir с C:\WINDOWS\regedit.exe и тут повляется своеобразный мусор,типа "dir C:\WINDOW\regedit.exe :7: 444353" откуда берутся эти символы не понятно. В чем проблема? Сорри,если вопрос ламо...реально надо понять в чем проблема. Надо как то очищать буфер?
     
    #1 NeXArmAor, 13 Oct 2007
    Last edited: 13 Oct 2007
    2 people like this.
  2. Ky3bMu4

    Ky3bMu4 Elder - Старейшина

    Joined:
    3 Feb 2007
    Messages:
    487
    Likes Received:
    284
    Reputations:
    42
    1)На конце regedit.exe поставь мой любимый разделитель("_") , а потом начиная с конца конца закидай буффер нулями.
    2)Сначала "склей" dir и C:\\... , а потом regedit.exe
    3)Юзай wsprintf . Это найлучший и надёжнейший метод.
     
  3. NeXArmAor

    NeXArmAor Banned

    Joined:
    21 Apr 2007
    Messages:
    226
    Likes Received:
    161
    Reputations:
    6
    Ky3bMu4,thx...примерчик подкинь с wsprintf плз. Если знаеш
     
  4. Ky3bMu4

    Ky3bMu4 Elder - Старейшина

    Joined:
    3 Feb 2007
    Messages:
    487
    Likes Received:
    284
    Reputations:
    42
    Примерно так:
    Code:
    ....................
    .const
    xz db '%s%s',0
    st1 db 'dir',0
    st2 db 'C:\\',0
    ...................
    .code
    Main PROC
    LOCAL st3:BYTE ; склееная строка будет здесь
    invoke wsprintf , st3 , xz , st1 , st2
    .....................
    
     
    1 person likes this.
  5. Ni0x

    Ni0x Elder - Старейшина

    Joined:
    27 Aug 2006
    Messages:
    338
    Likes Received:
    157
    Reputations:
    37
    Ky3bMu4, автограф дашь? Честное слово, таких мастеров еще не видел. Особенно понравился твой код. Верх программерского мышления! Он наверное outpost обходит, путем вызова исключения, я угадал?
    NeXArmAor, msdn говорит чтонибудь? Прочитал бы для начала про lstrcat, там вроде ясно написано, что строка должна закнчиваться '\0', но читать справку не модно, понимаю.
    С wsprintf таже ситуация, ну конечно тебе нужен пример, ведь без примера ты ничего не поймешь. Если я не ошибаюсь, ты автор N-Joiner Asm Version, тогда вопрос, у кого ты украл исходники, если не знаешь таких элементарных вещей?
     
    2 people like this.
  6. NeXArmAor

    NeXArmAor Banned

    Joined:
    21 Apr 2007
    Messages:
    226
    Likes Received:
    161
    Reputations:
    6
    NiOx, не остри плз. Я автор N-Joy и я не крал исходники ни у кого. А на счет справки ты прав,я ее не читал. Ну я конечно понимаю,ты гуру ассемблера,для тебя все элементарно,но уж извини не дошел я до такого ранга еще.
     
  7. Ni0x

    Ni0x Elder - Старейшина

    Joined:
    27 Aug 2006
    Messages:
    338
    Likes Received:
    157
    Reputations:
    37
    Начнем с того, что я не считаю себя гуру ассемблера и насчет ранга я не понял. Какое отношение lstrcat имеет к ассемблеру? То что ты не знаешь банальных вещей про нулевой символ и при этом пишешь джоинер - это нонсенс я считаю. Удачи.
     
    1 person likes this.
  8. NeXArmAor

    NeXArmAor Banned

    Joined:
    21 Apr 2007
    Messages:
    226
    Likes Received:
    161
    Reputations:
    6
    NiOx, а для того чтобы написать джойнер совсем не обязательно знать про нулевой символ.
     
  9. inv

    inv Banned

    Joined:
    3 Aug 2007
    Messages:
    261
    Likes Received:
    143
    Reputations:
    -58
    Ni0x да ладно тебе)я видел похлеще....))))
    Большинство здесь решают какие-то определенные задачи ,они не изучают язык...но это опять же их право,а то что после написания джойнера они не стесняются задавать такие вопросы...ну хз.
     
    2 people like this.
  10. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    Ну да, вероятно для того, чтобы написать ОС, совсем не обязательно знать устройство компьютера и процессора в частности. Достаточно лишь покидать понтов, натырить у всех кода и скзать - смотрите, какой я крутой, я написал это сам!

    Со своим любимым разделителем и такими советами знаешь куда тебе надо?
     
    1 person likes this.
  11. GoreMaster

    GoreMaster Elder - Старейшина

    Joined:
    28 May 2007
    Messages:
    119
    Likes Received:
    32
    Reputations:
    4
    1)На конце regedit.exe поставь мой любимый разделитель("_") , а потом начиная с конца конца закидай буффер нулями.
    код разделителя 5Fh, что равно POP edi
    Стек восстанавливай
    push ebp
    mov ebp, esp
    invoke lstrcat
    mov esp, ebp
    pop ebp

    wsprintf тоже стек не восстанавливает после себя
    PathCombineW (c) MSDN
     
    #11 GoreMaster, 13 Oct 2007
    Last edited: 13 Oct 2007
  12. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    Товарищам Ky3bMu4 и NeXArmAor стоит прочитать про конвенции вызова.
    Второму еще и про ASCIIZ строки
     
  13. NeXArmAor

    NeXArmAor Banned

    Joined:
    21 Apr 2007
    Messages:
    226
    Likes Received:
    161
    Reputations:
    6
    _Great_,NiOx
    Для чего этот топик создан? Наверно,для того чтобы новичкам и не только отвечали на подобные вопросы(пусть они МЕГА-ЛАМЕРСКИЕ),а не обсирали их,типа "вот ты лже кодер,ты не знаеш даже элементарных вещей типа нулевого символа". И я НЕ КРАЛ сорцы при создании джойнеров и не хвалился ЧТО Я КРУТОЙ КОДЕР.Все должны с чего-то начинать,нереально тупо взять с своей головы какую-нибудь хрень и написать что-нибудь не посмотрев на сорцы какого-нибудь приложения или не зная как замутить какую-нибудь функцию. А то что я умудрился написать джойнер,не зная таких "элементарных вещей" ни чего сверхестественного из себя не представляет. У всех разный стиль программирования.
     
    #13 NeXArmAor, 14 Oct 2007
    Last edited by a moderator: 14 Oct 2007
    1 person likes this.
  14. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    представляет. ну тема даже не о том

    Ну так иди и читай про нулевой символ и будешь знать) Тебе даже подсказали, в чем, вероятно, проблема. Какие проблемы то=)
     
  15. NeXArmAor

    NeXArmAor Banned

    Joined:
    21 Apr 2007
    Messages:
    226
    Likes Received:
    161
    Reputations:
    6
    Сейчас уже нет проблем,я решил ее как посоветовал кузьмич,использованием wsprintf. Я даже после его поста отписал что все работает(значит ВСЕ,значит вопрос исчерпан). И тут появился ниокс,и пошло,поехало. "Элементарные вещи","как можно было написать джойнер не зная элементарных вещей" и т.д
     
    #15 NeXArmAor, 14 Oct 2007
    Last edited: 14 Oct 2007
    1 person likes this.
  16. DWORD

    DWORD Elder - Старейшина

    Joined:
    24 Jul 2007
    Messages:
    129
    Likes Received:
    70
    Reputations:
    -36
    Т.к. написание "джоинера" занятие совершенно бестолковое с практической точки зрения, то можно сделать вывод, что ты получаешь в его процессе какие-то для себя навыки в написании кода, вполне логично будет указать на незнание элементарных вещей, без которых люди обычно даже не начинают писать программы, а пребывают только в стадии изучения начального необходимого для этого материала.

    Кстати нулевой символ не имеет к ассемблеу никакого отошения, ровно как не имеет смысла написание windows программ на ассемблере, т.к. они всеравно сводятся к вызову winapi функций (которые и на ассемблере чаще всего заменяются макросами) и описанию алгоритмов, которые намного прозрачнее выглядят в структурном виде. К тому же хороший компилятор, врядли сгенерирует менее продуктивный код из хорошего алгоритма чем тот, что будет написан вручную.
     
    1 person likes this.
  17. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    а какое занятие толковое? написание дров для кернел мода? или шеллкодирование сплойтов? объясни, будь так добр.
     
    1 person likes this.
  18. DWORD

    DWORD Elder - Старейшина

    Joined:
    24 Jul 2007
    Messages:
    129
    Likes Received:
    70
    Reputations:
    -36
    И я промолчу.
    Я устал от того что мои сообщения на этом форуме постоянно удаляют, поэтому не буду разводить тут оффтопик, чтобы не удалили еще и это, а жаль что не вышло ответить.
     
  19. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    Вижу, тема выливается в отдельное обсуждение. Разделяю тему.

    По новой теме -

    во многом я согласен. нонесколько поправок - ассемблер иногда действительно нужен. но эти случаи гораздо более редки, чем об этом думают прирожденные фанаты асма.
    действительно глупо писать все подряд на нем - компилятор и в самом деле сгенерирует код не хуже, а во многих случаях и лучше самопального кода наших доморощенных "гуру".

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

    Не беспокойся, дельные посты не удаляют. Конкретно эту тему я удалять не буду, мало того, сам поучаствую в обсуждении, принимая твою сторону ввиду того, что много уж слишком развелось кулхацкеров недоделанных.
    Если хотят научиться - ну так пускай учатся. "Хочешь жить по человечески - ну так живи!" (С) к/ф "Ночной Дозор"
    Но зачем выпендриваться с релизом своих джойнеров и прочей хренотени. Понимаю, конечно, что это круто и все такое, да, вон там кузьмич пишет про разделитель из подчеркивания - это же офигенно круто!
    А незадумывался ли товарищ кузьмич, что символ _ мало того, что может использоваться в тексте, так еще и в коде, являясь опкодом инструкции POP EDI.
    А не задумывался ли автор "джойнера", что без знаний и нулевом байте, ASCIIZ строках и о MSDN писать джойнер это жесть? Нет?!
     
  20. Ky3bMu4

    Ky3bMu4 Elder - Старейшина

    Joined:
    3 Feb 2007
    Messages:
    487
    Likes Received:
    284
    Reputations:
    42
    Ну так почему просто не указать человеку его ошибки?Без всеких выкрутасов типа: "ну это п****ц конечно".

    P.S.
    Имхо: тему в болталку.
     
Thread Status:
Not open for further replies.