Нид хелп,сейчас мучаю одно творение,и возникла одна "маленькая проблема",дело в том что при использовании функции lstrcat возникает некоторые лаги,эта функция соединяет два буфера в один,но происходит мерзостная бага когда ее используеш часто. Т.е допустим нужно соединить C:\WINDOWS с regedit.exe. На первый раз все клеит удачно,но потом возникает необходимость еще одного комбинирования,типа dir с C:\WINDOWS\regedit.exe и тут повляется своеобразный мусор,типа "dir C:\WINDOW\regedit.exe :7: 444353" откуда берутся эти символы не понятно. В чем проблема? Сорри,если вопрос ламо...реально надо понять в чем проблема. Надо как то очищать буфер?
1)На конце regedit.exe поставь мой любимый разделитель("_") , а потом начиная с конца конца закидай буффер нулями. 2)Сначала "склей" dir и C:\\... , а потом regedit.exe 3)Юзай wsprintf . Это найлучший и надёжнейший метод.
Примерно так: 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 .....................
Ky3bMu4, автограф дашь? Честное слово, таких мастеров еще не видел. Особенно понравился твой код. Верх программерского мышления! Он наверное outpost обходит, путем вызова исключения, я угадал? NeXArmAor, msdn говорит чтонибудь? Прочитал бы для начала про lstrcat, там вроде ясно написано, что строка должна закнчиваться '\0', но читать справку не модно, понимаю. С wsprintf таже ситуация, ну конечно тебе нужен пример, ведь без примера ты ничего не поймешь. Если я не ошибаюсь, ты автор N-Joiner Asm Version, тогда вопрос, у кого ты украл исходники, если не знаешь таких элементарных вещей?
NiOx, не остри плз. Я автор N-Joy и я не крал исходники ни у кого. А на счет справки ты прав,я ее не читал. Ну я конечно понимаю,ты гуру ассемблера,для тебя все элементарно,но уж извини не дошел я до такого ранга еще.
Начнем с того, что я не считаю себя гуру ассемблера и насчет ранга я не понял. Какое отношение lstrcat имеет к ассемблеру? То что ты не знаешь банальных вещей про нулевой символ и при этом пишешь джоинер - это нонсенс я считаю. Удачи.
Ni0x да ладно тебе)я видел похлеще....)))) Большинство здесь решают какие-то определенные задачи ,они не изучают язык...но это опять же их право,а то что после написания джойнера они не стесняются задавать такие вопросы...ну хз.
Ну да, вероятно для того, чтобы написать ОС, совсем не обязательно знать устройство компьютера и процессора в частности. Достаточно лишь покидать понтов, натырить у всех кода и скзать - смотрите, какой я крутой, я написал это сам! Со своим любимым разделителем и такими советами знаешь куда тебе надо?
1)На конце regedit.exe поставь мой любимый разделитель("_") , а потом начиная с конца конца закидай буффер нулями. код разделителя 5Fh, что равно POP edi Стек восстанавливай push ebp mov ebp, esp invoke lstrcat mov esp, ebp pop ebp wsprintf тоже стек не восстанавливает после себя PathCombineW (c) MSDN
_Great_,NiOx Для чего этот топик создан? Наверно,для того чтобы новичкам и не только отвечали на подобные вопросы(пусть они МЕГА-ЛАМЕРСКИЕ),а не обсирали их,типа "вот ты лже кодер,ты не знаеш даже элементарных вещей типа нулевого символа". И я НЕ КРАЛ сорцы при создании джойнеров и не хвалился ЧТО Я КРУТОЙ КОДЕР.Все должны с чего-то начинать,нереально тупо взять с своей головы какую-нибудь хрень и написать что-нибудь не посмотрев на сорцы какого-нибудь приложения или не зная как замутить какую-нибудь функцию. А то что я умудрился написать джойнер,не зная таких "элементарных вещей" ни чего сверхестественного из себя не представляет. У всех разный стиль программирования.
представляет. ну тема даже не о том Ну так иди и читай про нулевой символ и будешь знать) Тебе даже подсказали, в чем, вероятно, проблема. Какие проблемы то=)
Сейчас уже нет проблем,я решил ее как посоветовал кузьмич,использованием wsprintf. Я даже после его поста отписал что все работает(значит ВСЕ,значит вопрос исчерпан). И тут появился ниокс,и пошло,поехало. "Элементарные вещи","как можно было написать джойнер не зная элементарных вещей" и т.д
Т.к. написание "джоинера" занятие совершенно бестолковое с практической точки зрения, то можно сделать вывод, что ты получаешь в его процессе какие-то для себя навыки в написании кода, вполне логично будет указать на незнание элементарных вещей, без которых люди обычно даже не начинают писать программы, а пребывают только в стадии изучения начального необходимого для этого материала. Кстати нулевой символ не имеет к ассемблеу никакого отошения, ровно как не имеет смысла написание windows программ на ассемблере, т.к. они всеравно сводятся к вызову winapi функций (которые и на ассемблере чаще всего заменяются макросами) и описанию алгоритмов, которые намного прозрачнее выглядят в структурном виде. К тому же хороший компилятор, врядли сгенерирует менее продуктивный код из хорошего алгоритма чем тот, что будет написан вручную.
а какое занятие толковое? написание дров для кернел мода? или шеллкодирование сплойтов? объясни, будь так добр.
И я промолчу. Я устал от того что мои сообщения на этом форуме постоянно удаляют, поэтому не буду разводить тут оффтопик, чтобы не удалили еще и это, а жаль что не вышло ответить.
Вижу, тема выливается в отдельное обсуждение. Разделяю тему. По новой теме - во многом я согласен. нонесколько поправок - ассемблер иногда действительно нужен. но эти случаи гораздо более редки, чем об этом думают прирожденные фанаты асма. действительно глупо писать все подряд на нем - компилятор и в самом деле сгенерирует код не хуже, а во многих случаях и лучше самопального кода наших доморощенных "гуру". позволь, я. Во-первых, объясни, пожалуйста, по каким критериям ты считаешь написание очередного джойнера, тем более автором, который нихрена (а это видно) не знает системного программирования, не знает про нулевые символы и прочую дребедень, коих (джойнером, в прочем равно как и авторов) в интернете полным полно. Во-вторых, мне очень интересна причина твоих язвительных высказываний. Прокомментируй, будь добр. Не беспокойся, дельные посты не удаляют. Конкретно эту тему я удалять не буду, мало того, сам поучаствую в обсуждении, принимая твою сторону ввиду того, что много уж слишком развелось кулхацкеров недоделанных. Если хотят научиться - ну так пускай учатся. "Хочешь жить по человечески - ну так живи!" (С) к/ф "Ночной Дозор" Но зачем выпендриваться с релизом своих джойнеров и прочей хренотени. Понимаю, конечно, что это круто и все такое, да, вон там кузьмич пишет про разделитель из подчеркивания - это же офигенно круто! А незадумывался ли товарищ кузьмич, что символ _ мало того, что может использоваться в тексте, так еще и в коде, являясь опкодом инструкции POP EDI. А не задумывался ли автор "джойнера", что без знаний и нулевом байте, ASCIIZ строках и о MSDN писать джойнер это жесть? Нет?!
Ну так почему просто не указать человеку его ошибки?Без всеких выкрутасов типа: "ну это п****ц конечно". P.S. Имхо: тему в болталку.