Сделал вставку на asm в С программу дык как то криво. Если есть у кого мысли по улучшению алгоритма прошу отразить. Код (Text): _asm { mov eax, dword ptr fs:[18h] mov pTEB, eax push eax mov eax, dword ptr [eax+20h] mov PID, eax pop eax mov eax, dword ptr [eax+30h] mov pPEB, eax } естественно сначала int pTEB, PID, pPEB; Знаю здесь есть много талантливых кодеров гляньте, за спрос не бейте сильно. Заранее спасибо за идеи!
Если простое перемещение памяти - алгоритм, то можно улучшить - не использовать стэк. задействовать вспомогательный(е) регистр(ы).
asmfan Да конечно! Тот же mov ebx,eax схавает 2 байта, а push всего 1. Не я имел ввиду другой (более короткий) способ нахождения PID, pTEB (Address TEB), pPEB(Address PEB).
mov ebx, eax выполняется быстрее чем обращение к памяти (push, pop) быстрее чем непосредственное чтение из памяти может быть только чтение регистра
А я вот так и не понимаю, почему в виндах при чтении полей TEB всегда сначала грузят указатель на TEB из fs:[18h], хотя он и в 9х и во всех NT равен fs:0 и поэтому поля можно адресовать непосредственно от fs Код (Text): mov eax, fs:[20h] mov PID, eax mov eax, fs:[30h] mov pPEB, eax