Сейчас на форуме: bartolomeo, vasilevradislav, rmn, Magister Yoda (+7 невидимых)

 eXeL@B —› Программирование —› Литература по программированию на С++
Посл.ответ Сообщение


Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 23 декабря 2008 12:37
· Личное сообщение · #1

Добрый день, с недавнего времени меня посетила мысль, почему бы не начать кодить на таком прекрасном языке, как С++? Сэкономил бы время, т.к. реально быстрее, чем асм, и в то же время - это не Визуал Бейсик, тут что пишем, то и получаем. Проблема в том, что реально не могу найти стоящей литературы по этому вопросу. Т.е. конечно, книги некоторые есть, но там как-то больше акцент делается на программирование вообще, а не на изучение С++ как такового. Алгоритмы я уж как-нибудь и сам придумаю. Меня интересуют вопросы использования указателей, создания заголовочных файлов, статическая линковка библиотек к собственной программе, использование АПИ, т.е. что-то на подобие тьюториалов Izcelion'a, только не для асма, а для С++. Буду благодарен за ссылки. И ещё - поверьте мне, я гуглил, у меня полно литературы по С++, но, тем не менее, строка типа
pNTH->OptionalHeader.SizeOfImage = CalcRealSizeOfImage(m_File.m_pMap);
меня озадачивает. Помогите, люди добрые

-----
Stuck to the plan, always think that we would stand up, never ran.





Ранг: 355.4 (мудрец), 55thx
Активность: 0.320
Статус: Uploader
5KRT

Создано: 23 декабря 2008 13:24
· Личное сообщение · #2

Книги от создателя языка С++, советуют:
Бьерн Страуструп - ВВЕДЕНИЕ В ЯЗЫК С++
Бьерн Страуструп. Язык программирования С++
Обе у меня есть в электронном виде

2504_23.12.2008_CRACKLAB.rU.tgz - Учебники по C,C++.rar

-----
Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes





Ранг: 527.7 (!), 381thx
Активность: 0.160.09
Статус: Участник
Победитель турнира 2010

Создано: 23 декабря 2008 13:26
· Личное сообщение · #3

ARCHANGEL пишет:
Помогите, люди добрые


pNTH указатель на структуру, поэтому доступ содержимому структуры через "->"
IMAGE_NT_HEADERS32 *pNTH;

сама структура верхнего уровня имеет поле OptionalHeader типа IMAGE_OPTIONAL_HEADER32

typedef struct _IMAGE_NT_HEADERS {
DWORD Signature;
IMAGE_FILE_HEADER FileHeader;
IMAGE_OPTIONAL_HEADER32 OptionalHeader;
} IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32;

и доступ к полю вложенной структуры (OptionalHeader структура, а не указатель на структуру) через "."
typedef struct _IMAGE_OPTIONAL_HEADER {
//
// Standard fields.
//

WORD Magic;
BYTE MajorLinkerVersion;
BYTE MinorLinkerVersion;
DWORD SizeOfCode;
DWORD SizeOfInitializedData;
DWORD SizeOfUninitializedData;
DWORD AddressOfEntryPoint;
DWORD BaseOfCode;
DWORD BaseOfData;

//
// NT additional fields.
//

DWORD ImageBase;
DWORD SectionAlignment;
DWORD FileAlignment;
WORD MajorOperatingSystemVersion;
WORD MinorOperatingSystemVersion;
WORD MajorImageVersion;
WORD MinorImageVersion;
WORD MajorSubsystemVersion;
WORD MinorSubsystemVersion;
DWORD Win32VersionValue;
DWORD SizeOfImage;
DWORD SizeOfHeaders;
DWORD CheckSum;
WORD Subsystem;
WORD DllCharacteristics;
DWORD SizeOfStackReserve;
DWORD SizeOfStackCommit;
DWORD SizeOfHeapReserve;
DWORD SizeOfHeapCommit;
DWORD LoaderFlags;
DWORD NumberOfRvaAndSizes;
IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
} IMAGE_OPTIONAL_HEADER32, *PIMAGE_OPTIONAL_HEADER32;

далее вызывается функция наверняка имеющая прототип DWORD CalcRealSizeOfImag(VOID *Image);
и ей в качестве параметра передается значение поля m_pMap переменной m_File, которая имеет тип структуры, например такой
typedef struct _MAPPED_FILE
{
....
VOID *m_pMap;
....
} MAPPED_FILE;

MAPPED_FILE m_File;
и возвращаемое значение функции присваивается pNTH->OptionalHeader.SizeOfImage

Thats all

-----
127.0.0.1, sweet 127.0.0.1





Ранг: 116.9 (ветеран)
Активность: 0.040
Статус: Участник

Создано: 23 декабря 2008 13:42
· Личное сообщение · #4

сначала я рекомендую прочесть:
Липпман - Основы программирования на C++

rapidshare.com/files/66643567/Lippman_-_C___for_Beginners__RUS_.rar
ну и конечно же иметь всегда под рукой:
Язык программирования C++. 3-е издание. Специальное издание. Бьерн Страуструп

anatolix.naumen.ru/files/books/stroustroup_se.zip

из классики могу посоветовать, на мой взгляд, очень хорошую книгу:
Б. Керниган, Д. Ритчи "Язык программирования C" Третье издание.

torrents.ru/forum/viewtopic.php?t=686909

-----
Nothing just happens. You choose it to happen.




Ранг: 384.1 (мудрец)
Активность: 0.250
Статус: Участник
www.int3.net

Создано: 23 декабря 2008 13:44
· Личное сообщение · #5

ARCHANGEL
Рекомендую начинать не со Страуструпа, а с Лафоре, на мой взгляд самая удачная книга для понимания С++
www.booksgid.com/programmer/4723-.html

-----
Подписи - ЗЛО! Нужно убирать!




Ранг: 8.3 (гость)
Активность: 0=0
Статус: Участник

Создано: 23 декабря 2008 13:52 · Поправил: -Garrett-
· Личное сообщение · #6

По API лучше Рихтера пока не читал (MSDN не обсуждается)
Сейчас вышла обновленная версия книги Рихтера "Windows via C/C++" - в электронном есть только англ. вариант (пришлось купить бумажную). Пару ссылок навскидку:
Рихтер:
Windows для профессионалов. http://www.infanata.org/2005/10/01/windows_dlya_professionalov_.html
Программирование серверных приложений для Microsoft Windows 2000 http://www.infanata.org/2007/07/01/programmirovanie_servernykh_prilozhenijj_dlja_microsoft_windows_2000.htm
Другие:
Системное программирование в среде Windows http://www.all-ebooks.com/2007/04/30/sistemnoe_programmirovanie_v_srede_windows.html
Системное программирование в Windows 2000 для профессионалов http://www.infanata.org/computers/1146099250-sistemnoe-programmirovanie-v-windows-2000-dlja.html

P.S. мое изучение C++ началось с книги Уолтер Савич "С++ во всей полноте", но найти электронную версию так и не удалось




Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 23 декабря 2008 14:16
· Личное сообщение · #7

Книгу читать конечно классно , но это те не асм читать книгу, там и так все понятно и доступно. А вот си просто так читать и запомнить хер там. Лучшая методика по моему мнению , это скачать эти книги , положить их на полочку ))) и взять какойнить проект на Си например с Hell Knights Crew где есть проекты интересные. А потом уже решать проблемы по мере поступления.

А еще с меню надо разбираться , столько всего , что глаза просто в кучу. Например проверка стэка , и еще много всякого лишнего говна в код идет. Основная работы у меня была по тому как сделать так чтобы код был только мой , и не каких кодов самопала от компилера.

До сих пор по этому дделу классного материала по оптимизации размера си программ , без потерь функционала я не нашел. Может кто подскажет ?

Классно решение понравилось мне , это Си вместе с АСМ , оболчка сишная код на асме. Но кросплатформенности я так понял не получится , скажем на 64 ую версию процов.

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube





Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 23 декабря 2008 15:09
· Личное сообщение · #8

Ребят, всем большое спасибо, кто откликнулся на просьбу о помощи. Но...
nice
Лафоре у меня есть, но мне что в нём не нравиться, так это как раз то, что по С++ нифига толком, как осуществлять преобразования типов, когда GetProcAddress возвращает DWORD, а это, оказывается, не DWORD, а FARPROC. И как теперь из этого FARPROC получить дворд?. Далее не рассказывается вообще нифига про то, как эти замурчательные исходные коды перенести в Visual C++, и не в консольное приложение, а в графическое. Как самому сделать заголовочные файлы для моих библиотек, которые я написал, скажем, на асме - тоже нифига.
OKOB
Ну, я не совсем так уж безнадёжен, мне из этого всего непонятно было только "->" - что это за хрень?
mak
Да, возможно, так и будет лучше, но какой конкретно проект взять?

-----
Stuck to the plan, always think that we would stand up, never ran.





Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 23 декабря 2008 15:15 · Поправил: mak
· Личное сообщение · #9

ARCHANGEL да тоже скрытие процессов , там есть классный руткит , и сеть скрывает и папки , все в одном двиге. Возьми его и попробуй для начала скомпилить , а когда скомпилишь уже смотри внутренности и играй с ними ... или выдери часть кода себе в проект. Так быстрее научишься. Практика лучше простых знаний.

а вот еще книга , она конечна тупая - но млин как она прекрасно все обьясняет для начала , то есть уже не боишься сишки ) вот ее глянь просто Фленов М.Е. - Программирование на C++ глазами хакера а потом посмотришь , все не узнаешь но поможет.

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube



 eXeL@B —› Программирование —› Литература по программированию на С++
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати