Решился изучать программирование на асме под win32. Просьба помочь. Есть код: .386 .model flat,stdcall ; prototypes ExitProcess proto uExitCode : dword include c:\utils\masm32\include\kernel32.inc ; librarys includelib c:\utils\masm32\lib\kernel32.lib .data .code natali: ; xor eax,eax ; push eax ; call ExitProcess invoke ExitProcess,0 end natali ;------------------------------------------- Два случая: 1) first_call.exe: .00401000: 33C0 xor eax,eax .00401002: 50 push eax .00401003: E800000000 call ExitProcess ;kernel32.dll .00401008: FF2500204000 jmp ExitProcess ;kernel32.dll 2) first_invoke.exe: .00401000: 6A00 push 000 .00401002: E801000000 call ExitProcess ;kernel32.dll .00401007: CC int 3 .00401008: FF2500204000 jmp ExitProcess ;kernel32.dll Его точку входа определил по AdressOfEntryPointer+ImageBase. смотрел через Hiew. Не пойму какого хрена во втором случае в .00401007 стоит 0cch? Я его точно в отладчик не запускал, exe`шник создал с помощью masm32 v5.12.
секция импорта выровнена по дв слову, а между секциями могут быть случайные байты, которые в это время в памяти были (я так думаю
Shoo логично, а можешь че нить такое сам на бацать? 2)Мне понравились ключи дла ml.exe - /Fl, /Sg, а как их вкрутить в: @echo off ml /c /coff /Cp first.asm > first_error.txt link /SUBSYSTEM:WINDOWS /LIBPATH:c:\masm32\lib first.obj >> first_error.txt del first.obj
bagrus,по поводу кода: .386 .model flat,stdcall option casemap:none include c:\utils\masm32\include\kernel32.inc includelib c:\utils\masm32\lib\kernel32.lib .data .code natali: invoke ExitProcess,0 end natali 2.bat: @echo off ml /c /coff /Cp /Sg /Sn /Fl2.lst 2.asm > 2_error.txt link /SUBSYSTEM:WINDOWS /LIBPATH:c:\masm32\lib 2.obj >> 2_error.txt del 2.obj в лиснинге этого 0cch нет, но как токо грузишь его в hiew сразу появляется int 3 и потом jmp dword ... см. выше. ЗЫ: До меня дошло как делать листинг, но как убрать из него вывод всех инклудов к примеру kernel32.inc, windows.inc? Уж больно они листинг маленьким делають А на решение изучать винду повлияло то, что чуть ли не каждый знако- мый кодит ЯВУ такие проги себе и стоко проблем для себя на компе ре- шает. А я вот юзверь решил в совокупности им маленькие зверьки под- кидывать, который в каждом exe`шнике PE/0/0 будут делать PE/1/1 им ведь в лом изучать PE формат. Я как то поменял сдури полдня потом ду- мал, а че это у меня файл не воркает? ))
EvilsInterrupt > Не пойму какого хрена во втором случае в .00401007 стоит 0cch ... в лиснинге этого 0cch нет Листинг генерируется только для исходного текста. shoo > секция импорта выровнена по дв слову, а между секциями могут быть случайные байты Секция действительно выровнена, но байты не случайные. 0CCh используется для предотвращения выполнения программы. Представьте, что в конце программы нет вызова ExitProcess'а программа продолжит выполняться и дойдет до вызова импортируемых функции. EvilsInterrupt как убрать из него вывод всех инклудов Читай документацию по ассемблеру, например, для masm'а можно использовать директивы .nolist/.xlist и .list для исключения любых кусков программы из листинга. Код (Text): ... .nolist include windows.inc include <other> .list ...
>директивы .nolist/.xlist и .list для исключения любых честно скажу в моей инфе я этого не видел, но спасибо что ткнул пальцем Volodya Выравнивание? но почему не нулями?
1.если очень нужно - канэшна магу, только не быстро - на работе хотят чтобы я работал (странные люди дома - женщины (с асмом не совместимы) остается только рано утром, пока они спят 2.2 года эпизодически изучаю асм и вин32, но такая проблема меня не пекла (думаю, это вопрос второго этапа 3.как меня достал буратино!!!!!! 3 недели подряд каждый вечер читать ребенку одно и тоже!!!!!! (другое не катит