· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ZEN —› MASM versus FASM

<< . 1 . 2 . 3 . 4 . >>

Посл.отвђт Сообщенiе


Дата: Янв 5, 2004 11:21:46

1990
Есть ключ у линкера, например : LINK.EXE /STUB:"C:\Projects\Masm\STUB\st2ub.exe"


Дата: Янв 5, 2004 17:22:01

S_T_A_S_

А как работает твой патч ты разбирался, чему равно ecx до патча и после патча. Если можно объясни подробнее почему именно такой патч удаляет сигнатуру.


Дата: Янв 5, 2004 18:10:48 · Поправил: Quantum

volodya
Может этот патч by S_T_A_S_ стоит включить в дошлепок для masm32?

Asterix
Что-то я стал поглядывать в сторону fasm'а ;-)
Так я разве против fasm'а? Я тоже пристально смотрю в его сторону ;-)


Дата: Янв 5, 2004 20:33:27

Asterix
Это не мой патч. Мне посоветовал lingo12 с board.win32asmcommunity.net Он, кстати, соотечественник ;)
ECX=80h - (я смотрел с дефолтным stub, это его размер)
EAX=48h - очевидно, размер сигнатуры (он разный у разных готовых файлов, не знаю от чего зависит)
убираем ADD, получается, что нужный код пишется не после "печати", а поверх нее :)


Дата: Янв 5, 2004 20:44:15

S_T_A_S_
Quantum

Ну так и? Включать?


Дата: Янв 5, 2004 20:54:30

S_T_A_S_

Понял. Спасибо за разъяснения.


Дата: Янв 5, 2004 21:13:50

volodya
Имхо, народ и не узнает если готовое положить.. может полезнее readme в образовательных целях?


Дата: Янв 5, 2004 21:25:51

ReadMe будет законнее, а против патча Мелкософт будет возражать :-)


Дата: Янв 5, 2004 21:27:59

S_T_A_S_

Давай. Я положу.


Дата: Янв 5, 2004 22:09:38

volodya
Написать патчер? Или Readme? (а то не пойму о чем речь, засыпаю, 05-07 %)


Дата: Янв 5, 2004 22:50:01

Пиши readme!


Дата: Янв 5, 2004 22:55:22

volodya
ОК


Дата: Янв 5, 2004 23:26:21

Например, не нравятся мне stack frame с использованием EBP. И так регистров мало..
На masme я ничего лучше, чем использовать конструкции, вроде invoke TextOut, [ESP+(2+4)*DWORD], 0, EAX, [ESP+(0+1)*DWORD], CON_X

Сорри, что так долго не отвечал. Всё-таки не использовать кадр стека влечёт за собой уйму всяких осложнений, так что я предпочитаю пожертвовать одним регистром, зато выиграть один байт на каждом push DWORD PTR SS:[reg + offset] и не следить за ESP при каждом push/pop и т.п.

(почему в скобочках 2 цифры ? ;)
Их должно быть 3, если учесть, что перед call могут идти дополнительные push'ы для сохранения регистров или для предварительного формирования стека для последующих call'ов.

не придумал (поскольку, по простоте душевной с макросами пытался самостоятельно разобраться).
Можно так:
noframe MACRO function:REQ, args:VARARG
    LOCAL statement,arg,pos,count,scount
    count = 0
    FOR arg,<args>
        count = count + 1
    ENDM
    statement CATSTR <invoke >,<function>
    FOR arg,<args>
        count = count - 1
        pos INSTR <arg>,<ESP_>
        IF pos
            arg SUBSTR <arg>,5
            statement CATSTR statement,<,[esp+(&arg>
            IF count
               scount SUBSTR <01020304050607080910111213141516>,count*2-1,2
               statement CATSTR statement,<+&scount>
            ENDIF
            statement CATSTR statement,<)*DWORD]>
        ELSE
            statement CATSTR statement,<,&arg>
        ENDIF
    ENDM
    statement
ENDM
Ну, и потом вызывать:
noframe MyFunc,ESP_2,eax,ESP_0,ESP_15,OFFSET param,ESP_3
Макрос сгенерирует [esp+(A+B)*DWORD], где A - порядковый номер параметра в стеке, а B - это то ваше число ;-)


Дата: Янв 6, 2004 05:19:40

А почему этот fasm такой код генерит что у OllyDbg напрочь крышу сносит, взять хотя бы для примера Hello.exe из папки Examples пакета fasm??


Дата: Янв 6, 2004 07:49:49

Кажись этот Hello с одной секцией - и код, и данные. Вот ollydbg и ревёт

<< . 1 . 2 . 3 . 4 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.070