DarkWanderer в XP SP2 и XP Home Edition иконка из трея исчезает. Уточните, пожалуйста, какая у вас Win. Возможно, вместо Код (Text): exit_msg_loop: ret нужно поставить Код (Text): exit_msg_loop: push 0 call _inp__ExitProcess@4
Извините, что опять нарыл из глубин, но помоему, тема очень хорошая. Мне не понятен один момент, буду благодарен, если поясните.На этот момент меня навел upx,который я только начал юзать. С помощью этой замечательной программульки, захотелось мне уменьшить вес своего экзешника, который имел на тот момент 14.8кб чистого веса без всяких ресурсов. Upx выдал мне строку filealign < 0x200 is not yet supported. Ну очень мне было интересно, что может эта прога, в итоге в своем батнике я убираю строку параметра линковщика (polink -- masm32) /ALIGN:16 и пересобираю экзешник... Самое удивительное для меня было то, что размер моего файла после этого стал равен 4.5kb !!! без всяких upx-сов. (после upx'са - вообще 3kb). Мне как новичку, данный момент совершенно не понятен... Объясните, плиз. Пробовал на других своих сорцах - все работает стандартно: меньше выравнивание - меньше размер.
Посмотрел Олли. В таблице секций этих двух файлов при одинаковых VirtualSize (SECTION .DATA), в первом случае SizeOfRawData больше VirtualSize на разницу выравнивания, а во втором VirtualSize меньше чем VirtualSize в пять разов... Что твориться...
Aspire Речь идет о неинициализированных данных. С тем же успехом можно и самому отвести место под Buf[100000] в стеке, на пример, local Buf[100000]:byte, то же в теле исполняемого файла не занимают ни байта, а можно место и через heap отвести... EXE'шники, которые приводятся в "Сам себе Iczelion" Код (Text): \masm32\bin\ml /c /Cp /Gz /Ic:\masm32\include /coff /nologo %1.asm if errorlevel 1 goto TheEnd \masm32\bin\PoLink1 /SUBSYSTEM:WINDOWS /ALIGN:4 /MERGE:.data=.text /LIBPATH:c:\masm32\lib /NOLOGO /STUB:\masm32\bin\stubby.exe %1.obj собираются с 4-байтным стабом stubby.exe='M','Z',0,0 и переделанным polink1 (смотрите в аттаче)
Пусть наше приложение обрабатывает следующие сообщения: WM_DESTROY=2 WM_SETFOCUS=7 WM_KILLFOCUS=8 WM_SETREDRAW=11 WM_GETTEXT=13 WM_CLOSE=16. Для увеличения скорости просмотра очереди сообщений строим таблицу MsgTable, где номер элемента таблицы соответствует номеру сообщения. Сами табличные элементы представляют собой адреса (процедур), где эти сообщения обрабатываются. Пусть в таблице будут пока номера сообщений, необрабатываемым сообщениям соответствует 0. Пусть количество столбцов будет кратным 2N 012302000107802011013300160V1=(1,2,2,1); количество обрабатываемых сообщений в каждой строке V2=(0,1,3,5); индекс с которого начинается обрабатываемое сообщение на строке H=(0,1,2,1,3,2); номера столбцов обрабатываемых сообщений Z=(@@WM_DESTROY, @@WM_SETFOCUS, @@WM_KILLFOCUS, @@WM_SETREDRAW, @@WM_GETTEXT, @@WM_CLOSE); адреса обработки сообщений Код (Text): mov eax,Msg cmp eax,WM_CLOSE; номер максимального обрабатываемого сообщения ja default1 sub eax,WM_DESTROY;номер минимального обрабатываемого сообщения mov edx,eax shr eax,2; получили номер строки and edx,3;получили номер столбца mov ecx,V1[eax]; количество обрабатываемых сообщений на строке jecxz default1 ;если ни одного обрабатываемого сообщения идем на обработку по умолчанию mov ebx,V2[eax]; получили индекс в таблице адресов обработки сообщений a1: cmp dl,H[ebx] je a2; нашли сообщение inc ebx loop a1 default1: leave jmp DefWindowProcA a2: jmp dword ptr Z[ebx*4]; переход на адрес обработки сообщения
Наверное, нужно сдержать обещание, которое давалось в #17 и написать по-настоящему маленькое приложение "размер к которому можно/нужно стремиться 97 байт, но это PE-заголовок файла перемешанный с кодом, это уже ручная выделка" Правда, колдовать с HexEditorom или с Hiew'ером мы не будем, а постараемся максимально облегчить свой труд. В аттаче находятся сорцы и ехе программ, которые Выводят MessageBox размером 97 байт и Оконное приложение в 218 байт. С этого места можно делать новый виток и опять переписывать уроки Iczelion'a
Мда посмотрел я это дело под отладчиком EXE рожает EXE прям как вирус А ты урок-пайп не собирашеься переписать а то я хочу взглянуть (нигде не могу найти исходник) двухстороннего пайпа .
Мышь, урок 7. В отличие от оригинала обрабатывается WM_LBUTTONDOWN и WM_RBUTTONDOWN, запоминаются до MAXRECTS координат кликов. Размер 553 байта. Сорц и ехе в аттаче
не совсем Iczelion - аналоговые часы по мотивам Analog Clock by Mann. Если подойти творчески, можно выкинуть "лишнее" и при сохранении функциональности сократить экзешник в три раза (4608 -> 1408)