tag:blogger.com,1999:blog-1702873441071265539.post991640078620390657..comments2023-05-29T19:02:20.570+03:00Comments on Блог GunSmoker-а: Задачка №18БGunSmokerhttp://www.blogger.com/profile/15611696588191431330noreply@blogger.comBlogger11125tag:blogger.com,1999:blog-1702873441071265539.post-26527992527212344712015-04-30T20:08:46.688+03:002015-04-30T20:08:46.688+03:00Незачто.
Я, кстати, дополнил статью об анализе за...Незачто. <br />Я, кстати, дополнил статью об анализе задачи (причины - следствия) ругательства по первому варианту кода и концовку разбора второго со стороны реверса.<br />Думаю, пока полный ответ не опубликован (а думаю он будет в три строчки :), можно ознакомиться<br />http://alexander-bagel.blogspot.ru/2015/04/18-gunsmoker.htmlАлександр (Rouse_) Багельhttps://www.blogger.com/profile/03072586754182036553noreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-90856640659271922222015-04-30T19:14:32.809+03:002015-04-30T19:14:32.809+03:00За информацию по const - спасибо :)
А то у меня 6...За информацию по const - спасибо :)<br />А то у меня 64х битная винда только на виртуалке, и компилятор 64х битный я не ставил (пока) принципиально.Николай Зверевhttps://www.blogger.com/profile/08965247674233981930noreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-36053923708730761902015-04-30T10:40:23.373+03:002015-04-30T10:40:23.373+03:00Все разобрался CONST не при чем, дело именно в 64 ...Все разобрался CONST не при чем, дело именно в 64 битах и в том что EnumWindowsProc находится внутри TForm1.Button1Clic (параметры AWnd и AParam приходят не верно :)Александр (Rouse_) Багельhttps://www.blogger.com/profile/03072586754182036553noreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-16485199419551295142015-04-30T10:21:00.453+03:002015-04-30T10:21:00.453+03:00проверил, const не влияет на асм код, что в 64 бит...проверил, const не влияет на асм код, что в 64 битах что в 32Александр (Rouse_) Багельhttps://www.blogger.com/profile/03072586754182036553noreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-24966555412155807712015-04-29T23:59:12.516+03:002015-04-29T23:59:12.516+03:00Ну если в 64 битах оно идет со ссылке (с учетом чт...Ну если в 64 битах оно идет со ссылке (с учетом что PTR лезет в регистр что там что там) - то видимо это нюанс.<br />Я просто щас не могу на триалке ХЕ8 собрать 64 битный проект - почему-то требует у меня какой-то дебаг сервер запущенный на 64211 порту. Завтра на работе проверю.<br />В принципе это реально первая здравая мысль, с учетом первой части вопроса :)Александр (Rouse_) Багельhttps://www.blogger.com/profile/03072586754182036553noreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-56273234583977272552015-04-29T23:10:43.985+03:002015-04-29T23:10:43.985+03:00Где-то я когда-то читал, что const передаётся по з...Где-то я когда-то читал, что const передаётся по значению, если значение до 4х байт. Но не знаю, как оно ведёт себя в x64.. не привычно видеть его тут.Николай Зверевhttps://www.blogger.com/profile/08965247674233981930noreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-29004122114018788722015-04-29T21:48:32.979+03:002015-04-29T21:48:32.979+03:00Не должен (иначе я вообще перстану все понимать :)...Не должен (иначе я вообще перстану все понимать :).<br />Накатал анализ твоей задачки: http://alexander-bagel.blogspot.ru/2015/04/18-gunsmoker.html<br />Будет смешно если ошибка даже не там где я смотрел :)Александр (Rouse_) Багельhttps://www.blogger.com/profile/03072586754182036553noreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-57061952868585932332015-04-29T19:58:05.205+03:002015-04-29T19:58:05.205+03:00А модификатор const не попортит картину?А модификатор const не попортит картину?Николай Зверевhttps://www.blogger.com/profile/08965247674233981930noreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-62167423749949826762015-04-29T12:23:59.623+03:002015-04-29T12:23:59.623+03:00Т.е. вообще можно написать вот так:
procedure TFo...Т.е. вообще можно написать вот так:<br /><br />procedure TForm1.Button1Click(Sender: TObject);<br /><br /> function EnumWindowsProc(const AWnd: HWND; const AParam: LPARAM): BOOL; stdcall;<br /> begin<br /> Result := AWnd = HWND(AParam);<br /> end;<br /><br />begin<br /> EnumWindows(@EnumWindowsProc, LPARAM(Handle));<br />end;<br /><br />А этот код чистый.Александр (Rouse_) Багельhttps://www.blogger.com/profile/03072586754182036553noreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-36750309587455711002015-04-29T12:16:42.054+03:002015-04-29T12:16:42.054+03:001. использование промежуточной переменной ну нужно...1. использование промежуточной переменной ну нужно (она все равно будет выкинута оптимизатором)<br />2. практически гарантированно на первой же проверке выполнение EnumWindowsProc завершится по результату False<br />Больше вроде заковык нет.Александр (Rouse_) Багельhttps://www.blogger.com/profile/03072586754182036553noreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-56516564460592641332015-04-29T01:12:57.517+03:002015-04-29T01:12:57.517+03:00функция перечисления должна быть вынесена из облас...функция перечисления должна быть вынесена из области видимости класса?HAShttps://www.blogger.com/profile/00250795325761818165noreply@blogger.com