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