Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по программированию на C/С++

Автор: bomzzz
Дата сообщения: 25.02.2013 07:11
расшифруйте пожалуйста вот эту строчку
PPEB pPeb = (PPEB)StartupArgument;

Цитата:
void NtProcessStartup(void* StartupArgument)
{
UNICODE_STRING str;
PPEB pPeb = (PPEB)StartupArgument;
RtlNormalizeProcessParams(pPeb->ProcessParameters);

RtlInitUnicodeString(&str, L"Hello, world!\nCommand line is: ");
NtDisplayString(&str);
RtlInitUnicodeString(&str, pPeb->ProcessParameters->CommandLine.Buffer);
NtDisplayString(&str);

NtTerminateProcess(NtCurrentProcess(), 0);
}
Автор: ne_viens
Дата сообщения: 25.02.2013 08:01
PEB- это структура такая в NT. Находится по адресу fs:[30]. Известность и славу ей в основном принёс PEB.BeingDebugged, по которому можно определить, работает ли программа под отладчиком.
Автор: bomzzz
Дата сообщения: 25.02.2013 08:05
неправильно значит вопрос поставил. в этом коде функция NtProcessStartup параметром имеет переменную определенную структурой PEB?

Добавлено:
void NTAPI NTProcessStartup ( PSTARTUP_ARGUMENT pArgument ) вот она во многих источниках описывается как с PSTARTUP_ARGUMENT, а причем тут вообще PEB во второй строке?
Автор: ne_viens
Дата сообщения: 25.02.2013 08:52
Если судить по последующему коду, аргументом этой ф-ии является указатель на PEB.

Так как аргумент дефинирован как void*, его значение присваивается переменной дефинированной как PPEB, чтобы потом можно было бы добратся до CommandLine.Buffer.
Автор: bomzzz
Дата сообщения: 25.02.2013 09:11
понятно. надо все структуры переписывать. данные разняться, кое где в струтурах структуры, а кое гденаписано что это указатели
Автор: bomzzz
Дата сообщения: 26.02.2013 18:51
никто не знает случаем - зачем в ntdll функция __toascii ? она просто скан код клавиши возвращает, если код отпускания то конвертирует в код нажатия, а где асци?

Добавлено:
как вообще пользуясь только функциями ядра перевести скан код в асци символ?
Автор: AZJIO
Дата сообщения: 26.02.2013 22:06
bomzzz

Цитата:
как вообще пользуясь только функциями ядра перевести скан код в асци символ?

Ассоциативный массив сделай
Автор: bomzzz
Дата сообщения: 26.02.2013 22:10
сделал. но неужели там функции нет.

asciitable        db 0,0,"1234567890-=",08h,0,"qwertyuiop[]",0dh,0,"asdfghjkl;'`",0,"\zxcvbnm,./",0,"*",0," "
Автор: AZJIO
Дата сообщения: 26.02.2013 22:58
bomzzz
Я не знаю даст ли тебе что то это

Цитата:
user32.dll -> GetKeyNameText
int -> $lParam
str -> ""
int -> 256

Я взял из автоита, гугли, инфы полно.
Автор: bomzzz
Дата сообщения: 27.02.2013 05:16
можно только NTDLL.DLL пользоваться и NTOSKRNL
своя таблица это здоравски, но хотелось бы узнать какие и как клавиши обрабатываются

http://s41.radikal.ru/i093/1302/15/c8e5f7bfd745.gif
Автор: ne_viens
Дата сообщения: 27.02.2013 09:14

Цитата:
...но неужели там функции нет.


Нет. Раскладки клавиатуры (kbd*.dll) в ядре не подключаются только в user32.dll
Значит таблицу самому надо будет писать
Автор: bomzzz
Дата сообщения: 27.02.2013 10:35
ну это просто таблицу слепить, вот только непонятно совсем что от клавиатуры работает в native mode. капс лок мигает но не залипает, китайцы его вообще отключили. как сделать чтоб он залипал? и почему то у меня буква t не работает ни t ни T, остальные пашут

Добавлено:
ой тТ работает я ее код с капслоком перепутал

Добавлено:

Цитата:
invoke RtlZeroMemory, addr Iosb, sizeof Iosb
invoke NtDeviceIoControlFile, hKeyBoard, hEvent, NULL, NULL, addr Iosb, \
IOCTL_KEYBOARD_QUERY_INDICATORS, NULL, NULL, addr KeyBoardIndicator, sizeof KeyBoardIndicator
assume esi:ptr KEYBOARD_INDICATOR_PARAMETERS
mov [esi].LedFlags, KEYBOARD_SCROLL_LOCK_ON;KEYBOARD_CAPS_LOCK_ON
invoke NtDeviceIoControlFile, hKeyBoard, hEvent, NULL, NULL, addr Iosb, \
IOCTL_KEYBOARD_SET_INDICATORS, addr KeyBoardIndicator, sizeof KeyBoardIndicator, NULL, NULL
assume esi:nothing


ne_viens
не можешь помочь? вообще никакого описания кроме мсдна найти не могу. ну хоть такое чем вообще никакое
Автор: bomzzz
Дата сообщения: 27.02.2013 12:40
победил все ошибки а индикатор не загорается. мигает и все
Автор: ne_viens
Дата сообщения: 27.02.2013 12:47
А что ты хочешь сделать? Светодиодами помигать?
Или взять сканкоды с клавы, перевести в ASCII и распечатать с DebugPrint()?
Автор: bomzzz
Дата сообщения: 27.02.2013 12:53
зделал!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

в нативном режиме не работает капс лок почему то, вот я хочу его сам сделать

Добавлено:
http://zenwinx.sourceforge.net/doxy-doc/html/keyboard_8c_source.html
не сам сделал конечно пример нагуглил на Си как полагается

Добавлено:
блин фигня одна получается, не зря он не работает, там ошибка какая то
Автор: bomzzz
Дата сообщения: 27.02.2013 16:42
зделал, просто на одном ядре надо всеми индикаторами самому управлять.
Автор: AZJIO
Дата сообщения: 28.02.2013 07:16
Перезалил справку ссылка1, зеркало.
Подсветил и добавил ссылку для union, enum, argc, argv, stdin, stdout, stderr и добавил их в индексы.
Автор: bomzzz
Дата сообщения: 28.02.2013 11:02
http://rghost.ru/44163572
можно испытывать.
если у вас какой нибудь дефрагментатор модный для оф лайн режима - то лучше сохранить ключ реестра батником safereg и удалить программу им.
работает только на xp и 2000-ке

поддерживаются три команды:
exit - выйти из программы и продолжить загрузку windows (или клавиша escape)
reboot
shutdown

всем спасибо у меня бы самого хер бы получилось

как курсор сделать, ведь должен же быть где то видео буфер
Автор: ItsJustMe
Дата сообщения: 28.02.2013 13:11
bomzzz
А что вообще ты такое ваяешь?
Автор: bomzzz
Дата сообщения: 28.02.2013 16:12
командный интепретатор для нативного режима не имеющий недостатков nCMD и NativeShell

http://forum.ru-board.com/topic.cgi?forum=5&bm=1&topic=38756#1

но пока у него один достаток - капс лок работает. сейчас научил его список процессов выводить

Добавлено:
пока это в принципе все что он умеет, загружаться, перезагружать комп, выключать комп, показывать список процессов и выгружаться - то есть дальше винду грузить. но сейчас такой момент, что надо все хорошо обдумать, чтоб потом переделывать не пришлось.

Автор: ItsJustMe
Дата сообщения: 28.02.2013 21:40
Аха...
PS: Описание nCMD порадовало Почитал, подчерпнул много полезного...
Автор: bomzzz
Дата сообщения: 01.03.2013 03:14
ncmd это портированный CMD из винды. то есть его никто не писал. и там много функций криво работают, методом тыка надо исследовать.
вот мне еще надо портировать научиться
Автор: bomzzz
Дата сообщения: 01.03.2013 07:53
никто не знает RtlFormatMessage умеет как FormatMessage по номеру название ошибки выводить? если саму дллку открыть в блокноте там можно найти описания
Автор: kvazigorynich
Дата сообщения: 01.03.2013 10:36
Кто-нибудь может подсказать как скомпилировать вот это под виндой?

http://swfmill.org/

Один человек писал что использовал minGW. Я представления не имею как его использовать.

Я пробовал так:


Код: g++ swfmill.cpp
Автор: ItsJustMe
Дата сообщения: 01.03.2013 12:45
kvazigorynich
Если проекта для VC++ нет, то есть два возможных исхода:
1. Если оно не имеет зависимостей от Linux, то проект без особых проблем можно и самому сваять.
2. Если сабж завязан на какие-нибудь Linux-приблуды, то разрешение этих зависимостей может потребовать некоторых усилий.
Автор: kvazigorynich
Дата сообщения: 01.03.2013 13:02
ItsJustMe

Вопрос в том как и в чем сваять. Я однажды собирал один проект, но там были файлы для CMake и я просто сваял через CMake проект для visual studio. А тут-то в каком направлении копать?

makefile.in под виндой можно как-то использовать? В гугле никак не ищется информация по этому поводу. Можно из него или из makefile.am сделать makefile для minGW?
Автор: Abs62
Дата сообщения: 01.03.2013 16:02
kvazigorynich

Цитата:
А тут-то в каком направлении копать?

В направлении MSYS.
Автор: kotlomoy
Дата сообщения: 01.03.2013 18:26
kvazigorynich

Цитата:
В данный момент проблема вот какая:


Цитата:
cc4rEiZO.o:swfmill.cpp.text+0x74): undefined reference to `xmlParseMemory'
cc4rEiZO.o:swfmill.cpp.text+0x8f): undefined reference to `xsltParseStylesheetDoc'
cc4rEiZO.o:swfmill.cpp.text+0xce): undefined reference to `SWF::File::File()'

Неразрешенные ссылки. Следовательно, надо их разрешить.
Найдите, где объявлены эти функции и включайте их в проект.
Автор: kvazigorynich
Дата сообщения: 02.03.2013 09:36
kotlomoy

Это я сразу понял. Как раз этим все это время и занимаюсь. Замучался либы подбирать необходимые. Они к тому же еще в основном и не существуют в бинарном виде. Сам собираешь, начинаются еще большие проблемы и так до бесконечности. Пока продолжаю мучать мозг.

А проект сделал через одно место. Добавил все в minGW developer studio. В нем сваял makefile. Вот при помощи этого makefile и более новой версии minGW пытаюсь собрать. Пока все не очень радужно, но все получится.

И все-таки под виндой кому можно скормить makefile.in для сборки проекта? В нем есть строчки типа @IS_WINDOWS_TRUE. Или это для сборки виндового приложения по никсами?
Автор: AZJIO
Дата сообщения: 02.03.2013 10:42
Перезалил справку ссылка1, зеркало.
Подсветил и добавил ссылку для inline, поправил в индексах и в дереве имена содержащие кавычки. И самое главное добавил кнопку копирования кода примера в буфер обмена.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193

Предыдущая тема: не знаю как назвать тему :-)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.