S
solova
Написал Длл-ку для хука , это моя первая Длл-ка.
Писал в MS Visual Studio (C++)
Win32 Console Application
отметил только
Application type: DLL и Empty project
в ручную добавил stdafx.h\cpp
всё работает.
Ну так вот.
Открыл я эту(готовую) Длл через блокнот, там читабельного текста много, ну и почитал
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">почищенный текст</div></div><div class="sp-body"><div class="sp-content">This program cannot be run in DOS mode.
WM_кнопка_нажата(%s);C:\test.txt a
f:\dd\vctools\crt_bld\self_x86\crt\src\crtdll.c
Stack around _alloca corrupted Local variable used before initialization Stack memory corruption
Cast to smaller type causing loss of data Stack pointer corruption
Unknown Runtime Check Error
Stack memory around _alloca was corrupted
A local variable was used before it was initialized
Stack memory was corrupted A cast to a smaller data type has caused a loss of data.
If this was intentional, you should mask the source of the cast with the appropriate bitmask.
For example:char c = (i & 0xFF);
Changing the code in this way will not affect the quality of the resulting optimized code.
The value of ESP was not properly saved across a function call.
This is usually a result of calling a function declared with one calling convention with a function pointer declared with
a different calling convention. Stack around the variable '' was corrupted.The variable ' ' is being used without being initialized. Run-Time Check Failure #%d - %s
Unknown Module Name Unknown Filename
Stack corrupted near unknown variable
Stack area around _alloca memory reserved by this function is corrupted
Stack area around _alloca memory reserved by this function is corrupted
Address: 0x Size:
Allocation number within this function:
Data: <wsprintfA user32.dll%.2X A variable is being used without being initialized.MSPDB80.DLL
PDBOpenValidate5 EnvironmentDirectory SOFTWARE\Microsoft\VisualStudio\9.0\Setup\VS
RegCloseKey RegQueryValueExA RegOpenKeyExA ADVAPI32.DLL
C:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects\HookTest\Hook\Debug\Hook.pdb
Hook.dll ?InstallHook@@YAHK@Z ?RemoveHook@@YAHXZ UnhookWindowsHookEx SetWindowsHookExW CallNextHookEx USER32.dll
fclose fwrite sprintf _strtime fopen
_CRT_RTC_INITW MSVCR90D.dll _encode_pointer _malloc_dbg _free_dbg _encoded_null _decode_pointer _CrtSetCheckCount
_initterm _initterm_e _amsg_exit _adjust_fdiv __CppXcptFilter _crt_debugger_hook __clean_type_info_names_internal _unlock
__dllonexit _lock _onexit _except_handler4_common
InterlockedExchange Sleep InterlockedCompareExchange IsDebuggerPresent RaiseException DebugBreak WideCharToMultiByte
MultiByteToWideChar lstrlenA GetProcAddress LoadLibraryA TerminateProcess GetCurrentProcess UnhandledExceptionFilter
SetUnhandledExceptionFilter QueryPerformanceCounter GetTickCount GetCurrentThreadId GetCurrentProcessId GetSystemTimeAsFileTime HeapFree
HeapAlloc GetProcessHeap GetModuleFileNameW \ VirtualQuery FreeLibrary KERNEL32.dll »ї<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.DebugCRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly> ну то что там почти все функции мои прочитываются это ерунда но меня сильно удивили строчки
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Текст</div></div><div class="sp-body"><div class="sp-content">C:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects\HookTest\Hook\Debug\Hook.pdb
EnvironmentDirectory SOFTWARE\Microsoft\VisualStudio\9.0\Setup\VSзачем эти строчки нужны если программа будет на другом компе использоваться где наверняка нету этих директорий и я понимаю что это лишнее
И зачем нужны подобные коменты(или что это)
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Текст</div></div><div class="sp-body"><div class="sp-content">This program cannot be run in DOS mode.
.......
For example:char c = (i & 0xFF);....
........ кому эти эксамплы нужны и прочий текст.
мне это как то не мешает и ДЛЛ весит 30Кб ,и я понимаю что там есть то без чего работать длл не будет , но там есть и лишний текст, и если от него можно избавится для уменьшения размера файла, я только за.
может что то в настройках проекта надо поменять?
Вопрос вот в чём: можно ли от лишнего текста избавится , если да то как.
PS:Меня больше интересует не уменьшение размера, а отсутствие всего лишнего
Писал в MS Visual Studio (C++)
Win32 Console Application
отметил только
Application type: DLL и Empty project
в ручную добавил stdafx.h\cpp
всё работает.
Ну так вот.
Открыл я эту(готовую) Длл через блокнот, там читабельного текста много, ну и почитал
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">почищенный текст</div></div><div class="sp-body"><div class="sp-content">This program cannot be run in DOS mode.
WM_кнопка_нажата(%s);C:\test.txt a
f:\dd\vctools\crt_bld\self_x86\crt\src\crtdll.c
Stack around _alloca corrupted Local variable used before initialization Stack memory corruption
Cast to smaller type causing loss of data Stack pointer corruption
Unknown Runtime Check Error
Stack memory around _alloca was corrupted
A local variable was used before it was initialized
Stack memory was corrupted A cast to a smaller data type has caused a loss of data.
If this was intentional, you should mask the source of the cast with the appropriate bitmask.
For example:char c = (i & 0xFF);
Changing the code in this way will not affect the quality of the resulting optimized code.
The value of ESP was not properly saved across a function call.
This is usually a result of calling a function declared with one calling convention with a function pointer declared with
a different calling convention. Stack around the variable '' was corrupted.The variable ' ' is being used without being initialized. Run-Time Check Failure #%d - %s
Unknown Module Name Unknown Filename
Stack corrupted near unknown variable
Stack area around _alloca memory reserved by this function is corrupted
Stack area around _alloca memory reserved by this function is corrupted
Address: 0x Size:
Allocation number within this function:
Data: <wsprintfA user32.dll%.2X A variable is being used without being initialized.MSPDB80.DLL
PDBOpenValidate5 EnvironmentDirectory SOFTWARE\Microsoft\VisualStudio\9.0\Setup\VS
RegCloseKey RegQueryValueExA RegOpenKeyExA ADVAPI32.DLL
C:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects\HookTest\Hook\Debug\Hook.pdb
Hook.dll ?InstallHook@@YAHK@Z ?RemoveHook@@YAHXZ UnhookWindowsHookEx SetWindowsHookExW CallNextHookEx USER32.dll
fclose fwrite sprintf _strtime fopen
_CRT_RTC_INITW MSVCR90D.dll _encode_pointer _malloc_dbg _free_dbg _encoded_null _decode_pointer _CrtSetCheckCount
_initterm _initterm_e _amsg_exit _adjust_fdiv __CppXcptFilter _crt_debugger_hook __clean_type_info_names_internal _unlock
__dllonexit _lock _onexit _except_handler4_common
InterlockedExchange Sleep InterlockedCompareExchange IsDebuggerPresent RaiseException DebugBreak WideCharToMultiByte
MultiByteToWideChar lstrlenA GetProcAddress LoadLibraryA TerminateProcess GetCurrentProcess UnhandledExceptionFilter
SetUnhandledExceptionFilter QueryPerformanceCounter GetTickCount GetCurrentThreadId GetCurrentProcessId GetSystemTimeAsFileTime HeapFree
HeapAlloc GetProcessHeap GetModuleFileNameW \ VirtualQuery FreeLibrary KERNEL32.dll »ї<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.DebugCRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly> ну то что там почти все функции мои прочитываются это ерунда но меня сильно удивили строчки
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Текст</div></div><div class="sp-body"><div class="sp-content">C:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects\HookTest\Hook\Debug\Hook.pdb
EnvironmentDirectory SOFTWARE\Microsoft\VisualStudio\9.0\Setup\VSзачем эти строчки нужны если программа будет на другом компе использоваться где наверняка нету этих директорий и я понимаю что это лишнее
И зачем нужны подобные коменты(или что это)
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Текст</div></div><div class="sp-body"><div class="sp-content">This program cannot be run in DOS mode.
.......
For example:char c = (i & 0xFF);....
........ кому эти эксамплы нужны и прочий текст.
мне это как то не мешает и ДЛЛ весит 30Кб ,и я понимаю что там есть то без чего работать длл не будет , но там есть и лишний текст, и если от него можно избавится для уменьшения размера файла, я только за.
может что то в настройках проекта надо поменять?
Вопрос вот в чём: можно ли от лишнего текста избавится , если да то как.
PS:Меня больше интересует не уменьшение размера, а отсутствие всего лишнего