找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 5213|回复: 2

【openssl】尝试将openssl转移到windows内核

[复制链接]

30

主题

211

回帖

2784

积分

用户组: 版主

UID
1821
精华
7
威望
69 点
宅币
2164 个
贡献
206 次
宅之契约
0 份
在线时间
480 小时
注册时间
2016-7-12
发表于 2017-3-23 15:39:37 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
本帖最后由 Ayala 于 2017-3-25 21:29 编辑

最小修改原则 先把openssl编译成静态库 自己修改路径 没使用vs 一堆警告 好坑

  1. @echo off

  2. set orgpath=%path%

  3. set srcdir=F:\openssl-1.1.0e\
  4. set tagdir=F:\openssl\
  5. set perldir=C:\Perl64\site\bin;C:\Perl64\bin
  6. set nasmdir="C:\Program Files (x86)\NASM"


  7. set winddk=F:\WinDDK\7600.16385.1
  8. set winsdk=F:\Microsoft SDKs\Windows
  9. set incdir=%winddk%\inc\crt;%winddk%\inc\api;%winsdk%\v7.0A\include
  10. set libdir_x86=%winddk%\lib\crt\i386\;%winddk%\lib\wxp\i386\;%winddk%\lib\wnet\i386\;%winsdk%\v10.0\lib
  11. set libdir_x64=%winddk%\lib\crt\amd64\;%winddk%\lib\win7\amd64\;%winddk%\lib\wnet\amd64\;%winsdk%\v10.0\lib\amd64

  12. set nmakedir=%winddk%\bin\x86
  13. set cl_x86=%winddk%\bin\x86\x86
  14. set cl_x64=%winddk%\bin\x86\amd64
  15. set lib_x86=F:\wrk\tools\x86
  16. set lib_x64=F:\wrk\tools\amd64

  17. set args=no-filenames no-ui no-stdio --release -static


  18. echo   cd %srcdir%
  19. cd %srcdir%


  20. :X86

  21. echo '-------------------------------------
  22. echo '                i386
  23. echo '-------------------------------------
  24. set path=%perldir%;%nasmdir%;%cl_x86%;%orgpath%;%nmakedir%;%lib_x86%
  25. set include=%incdir%
  26. set lib=%libdir_x86%

  27. perl Configure VC-WIN32 --prefix=%tagdir%i386 %args%
  28. nmake clean
  29. nmake test
  30. nmake install

  31. :AMD64
  32. echo '-------------------------------------
  33. echo '                Amd64
  34. echo '-------------------------------------

  35. set path=%perldir%;%nasmdir%;%cl_x64%;%orgpath%;%nmakedir%;%lib_x64%
  36. set include=%incdir%
  37. set lib=%libdir_x64%

  38. perl Configure VC-WIN64A --prefix=%tagdir%amd64 %args%
  39. nmake clean
  40. nmake test
  41. nmake install



  42. :done
  43. pause
  44. exit
复制代码


开始写代码 先重载openssl需要的符号

  1. /*openssl_lib.c 后续需要将函数具体实现 */
  2. int main() {return 0;}
  3. //__cdecl
  4. int _close(){return 0;}
  5. int _lseek(){return 0;}
  6. int _write(){return 0;}
  7. int _read(){return 0;}
  8. int _open(){return 0;}
  9. //int fflush(){return 0;}
  10. int ftell(){return 0;}
  11. int fseek(){return 0;}
  12. int fopen(){return 0;}
  13. int fclose(){return 0;}
  14. int fwrite(){return 0;}
  15. int fread(){return 0;}
  16. int fgets(){return 0;}
  17. int fprintf(){return 0;}
  18. //int _iob(){return 0;}  
  19. int feof(){return 0;}
  20. int ferror(){return 0;}
  21. int clearerr(){return 0;}
  22. int _fileno(){return 0;}
  23. int _setmode(){return 0;}


  24.   //这里偷懒 为了兼容应该声明为函数原型 __stdcall api(args...);
  25. int sendto(){return 0;}
  26. int* __imp_sendto=(int *)&sendto;                                
  27. int recvfrom(){return 0;}
  28. int* __imp_recvfrom=(int *)&recvfrom;                              
  29. int send(){return 0;}
  30. int* __imp_send=(int *)&send;                                 
  31. int WSASetLastError(){return 0;}
  32. int* __imp_WSASetLastError=(int *)&WSASetLastError;                       
  33. int recv(){return 0;}
  34. int* __imp_recv=(int *)&recv;                                 
  35. int shutdown(){return 0;}
  36. int* __imp_shutdown=(int *)&shutdown;                              
  37. int accept(){return 0;}
  38. int* __imp_accept=(int *)&accept;                                
  39. int closesocket(){return 0;}
  40. int* __imp_closesocket=(int *)&closesocket;                           
  41. int bind(){return 0;}
  42. int* __imp_bind=(int *)&bind;                                 
  43. int listen(){return 0;}
  44. int* __imp_listen=(int *)&listen;                                
  45. int connect(){return 0;}
  46. int* __imp_connect=(int *)&connect;                              
  47. int socket(){return 0;}
  48. int* __imp_socket=(int *)&socket;                                
  49. int getsockname(){return 0;}
  50. int* __imp_getsockname=(int *)&getsockname;                           
  51. int ioctlsocket(){return 0;}
  52. int* __imp_ioctlsocket=(int *)&ioctlsocket;                           
  53. int WSACleanup(){return 0;}
  54. int* __imp_WSACleanup=(int *)&WSACleanup;                           
  55. int freeaddrinfo(){return 0;}
  56. int* __imp_freeaddrinfo=(int *)&freeaddrinfo;                          
  57. int WSAStartup(){return 0;}
  58. int* __imp_WSAStartup=(int *)&WSAStartup;                           
  59. int gethostbyname(){return 0;}
  60. int* __imp_gethostbyname=(int *)&gethostbyname;                        
  61. int getsockopt(){return 0;}
  62. int* __imp_getsockopt=(int *)&getsockopt;                           
  63. int WSAGetLastError(){return 0;}
  64. int* __imp_WSAGetLastError=(int *)&WSAGetLastError;                       
  65. int getaddrinfo(){return 0;}
  66. int* __imp_getaddrinfo=(int *)&getaddrinfo;                           
  67. int getnameinfo(){return 0;}
  68. int* __imp_getnameinfo=(int *)&getnameinfo;                           
  69. int ntohs(){return 0;}
  70. int* __imp_ntohs=(int *)&ntohs;                                 
  71. int setsockopt(){return 0;}
  72. int* __imp_setsockopt=(int *)&setsockopt;                           



  73. int CryptGenRandom(){return 0;}
  74. int* __imp_CryptGenRandom=(int *)&CryptGenRandom;                        
  75. int CryptReleaseContext(){return 0;}
  76. int* __imp_CryptReleaseContext=(int *)&CryptReleaseContext;                  
  77. int RegisterEventSourceW(){return 0;}
  78. int* __imp_RegisterEventSourceW=(int *)&RegisterEventSourceW;                  
  79. int ReportEventW(){return 0;}
  80. int* __imp_ReportEventW=(int *)&ReportEventW;                          
  81. int DeregisterEventSource(){return 0;}
  82. int* __imp_DeregisterEventSource=(int *)&DeregisterEventSource;                 
  83. int CryptAcquireContextW(){return 0;}
  84. int* __imp_CryptAcquireContextW=(int *)&CryptAcquireContextW;                  
  85. int SystemTimeToFileTime(){return 0;}
  86. int* __imp_SystemTimeToFileTime=(int *)&SystemTimeToFileTime;                  
  87. int GetSystemTime(){return 0;}
  88. int* __imp_GetSystemTime=(int *)&GetSystemTime;                        
  89. int GetLastError(){return 0;}
  90. int* __imp_GetLastError=(int *)&GetLastError;                          
  91. int SetLastError(){return 0;}
  92. int* __imp_SetLastError=(int *)&SetLastError;                          
  93. int GetProcAddress(){return 0;}
  94. int* __imp_GetProcAddress=(int *)&GetProcAddress;                        
  95. int GetModuleHandleW(){return 0;}
  96. int* __imp_GetModuleHandleW=(int *)&GetModuleHandleW;                     
  97. int GetVersion(){return 0;}
  98. int* __imp_GetVersion=(int *)&GetVersion;                           
  99. int MultiByteToWideChar(){return 0;}
  100. int* __imp_MultiByteToWideChar=(int *)&MultiByteToWideChar;                  
  101. int FormatMessageW(){return 0;}
  102. int* __imp_FormatMessageW=(int *)&FormatMessageW;                        
  103. int GetFileType(){return 0;}
  104. int* __imp_GetFileType=(int *)&GetFileType;                           
  105. int GetStdHandle(){return 0;}
  106. int* __imp_GetStdHandle=(int *)&GetStdHandle;                          
  107. int FreeLibrary(){return 0;}
  108. int* __imp_FreeLibrary=(int *)&FreeLibrary;                           
  109. int LoadLibraryA(){return 0;}
  110. int* __imp_LoadLibraryA=(int *)&LoadLibraryA;                          
  111. int CloseHandle(){return 0;}
  112. int* __imp_CloseHandle=(int *)&CloseHandle;                           
  113. int LoadLibraryW(){return 0;}
  114. int* __imp_LoadLibraryW=(int *)&LoadLibraryW;                          
  115. int GetModuleHandleExW(){return 0;}
  116. int* __imp_GetModuleHandleExW=(int *)&GetModuleHandleExW;                    
  117. int WideCharToMultiByte(){return 0;}
  118. int* __imp_WideCharToMultiByte=(int *)&WideCharToMultiByte;                  
  119. int FindNextFileW(){return 0;}
  120. int* __imp_FindNextFileW=(int *)&FindNextFileW;                        
  121. int CreateFiber(){return 0;}
  122. int* __imp_CreateFiber=(int *)&CreateFiber;                           
  123. int SwitchToFiber(){return 0;}
  124. int* __imp_SwitchToFiber=(int *)&SwitchToFiber;                        
  125. int DeleteFiber(){return 0;}
  126. int* __imp_DeleteFiber=(int *)&DeleteFiber;                           
  127. int ConvertThreadToFiber(){return 0;}
  128. int* __imp_ConvertThreadToFiber=(int *)&ConvertThreadToFiber;                  
  129. int ConvertFiberToThread(){return 0;}
  130. int* __imp_ConvertFiberToThread=(int *)&ConvertFiberToThread;                  
  131. int WriteFile(){return 0;}
  132. int* __imp_WriteFile=(int *)&WriteFile;                             
  133. int FindFirstFileW(){return 0;}
  134. int* __imp_FindFirstFileW=(int *)&FindFirstFileW;                        
  135. int FindClose(){return 0;}
  136. int* __imp_FindClose=(int *)&FindClose;                             
  137. int GetSystemTimeAsFileTime(){return 0;}
  138. int* __imp_GetSystemTimeAsFileTime=(int *)&GetSystemTimeAsFileTime;               
  139. int GetTickCount(){return 0;}
  140. int* __imp_GetTickCount=(int *)&GetTickCount;                          
  141. int Sleep(){return 0;}
  142. int* __imp_Sleep=(int *)&Sleep;                                 
  143. int RtlCaptureContext(){return 0;}
  144. int* __imp_RtlCaptureContext=(int *)&RtlCaptureContext;                     
  145. int RtlLookupFunctionEntry(){return 0;}
  146. int* __imp_RtlLookupFunctionEntry=(int *)&RtlLookupFunctionEntry;               
  147. int SetUnhandledExceptionFilter(){return 0;}
  148. int* __imp_SetUnhandledExceptionFilter=(int *)&SetUnhandledExceptionFilter;           
  149. int UnhandledExceptionFilter(){return 0;}
  150. int* __imp_UnhandledExceptionFilter=(int *)&UnhandledExceptionFilter;              
  151. int GetCurrentProcess(){return 0;}
  152. int* __imp_GetCurrentProcess=(int *)&GetCurrentProcess;                     
  153. int TerminateProcess(){return 0;}
  154. int* __imp_TerminateProcess=(int *)&TerminateProcess;                     
  155. int ExitProcess(){return 0;}
  156. int* __imp_ExitProcess=(int *)&ExitProcess;                           
  157. int ReadConsoleW(){return 0;}
  158. int* __imp_ReadConsoleW=(int *)&ReadConsoleW;                          
  159. int ReadConsoleA(){return 0;}
  160. int* __imp_ReadConsoleA=(int *)&ReadConsoleA;                          
  161. int SetConsoleMode(){return 0;}
  162. int* __imp_SetConsoleMode=(int *)&SetConsoleMode;                        
  163. int GetConsoleMode(){return 0;}
  164. int* __imp_GetConsoleMode=(int *)&GetConsoleMode;                        
  165. int GetCurrentThreadId(){return 0;}
  166. int* __imp_GetCurrentThreadId=(int *)&GetCurrentThreadId;                    
  167. int TlsFree(){return 0;}
  168. int* __imp_TlsFree=(int *)&TlsFree;                              
  169. int TlsSetValue(){return 0;}
  170. int* __imp_TlsSetValue=(int *)&TlsSetValue;                           
  171. int TlsGetValue(){return 0;}
  172. int* __imp_TlsGetValue=(int *)&TlsGetValue;                           
  173. int TlsAlloc(){return 0;}
  174. int* __imp_TlsAlloc=(int *)&TlsAlloc;                              
  175. int DeleteCriticalSection(){return 0;}
  176. int* __imp_DeleteCriticalSection=(int *)&DeleteCriticalSection;                 
  177. int LeaveCriticalSection(){return 0;}
  178. int* __imp_LeaveCriticalSection=(int *)&LeaveCriticalSection;                  
  179. int EnterCriticalSection(){return 0;}
  180. int* __imp_EnterCriticalSection=(int *)&EnterCriticalSection;                  
  181. int InitializeCriticalSectionAndSpinCount(){return 0;}
  182. int* __imp_InitializeCriticalSectionAndSpinCount=(int *)&InitializeCriticalSectionAndSpinCount;
  183. int GetEnvironmentVariableW(){return 0;}
  184. int* __imp_GetEnvironmentVariableW=(int *)&GetEnvironmentVariableW;               
  185. int GlobalMemoryStatus(){return 0;}
  186. int* __imp_GlobalMemoryStatus=(int *)&GlobalMemoryStatus;                    
  187. int GetCurrentProcessId(){return 0;}
  188. int* __imp_GetCurrentProcessId=(int *)&GetCurrentProcessId;                  
  189. int QueryPerformanceCounter(){return 0;}
  190. int* __imp_QueryPerformanceCounter=(int *)&QueryPerformanceCounter;               
  191. int RtlVirtualUnwind(){return 0;}
  192. int* __imp_RtlVirtualUnwind=(int *)&RtlVirtualUnwind;                     
  193. int MessageBoxW(){return 0;}
  194. int* __imp_MessageBoxW=(int *)&MessageBoxW;                           
  195. int GetProcessWindowStation(){return 0;}
  196. int* __imp_GetProcessWindowStation=(int *)&GetProcessWindowStation;               
  197. int GetUserObjectInformationW(){return 0;}
  198. int* __imp_GetUserObjectInformationW=(int *)&GetUserObjectInformationW;           


  199. int FlushFileBuffers(){return 0;}
  200. int* __imp_FlushFileBuffers=(int*)&FlushFileBuffers;        
  201. int RtlUnwindEx(){return 0;}
  202. int* __imp_RtlUnwindEx=(int*)&RtlUnwindEx;            
  203. int HeapAlloc(){return 0;}
  204. int* __imp_HeapAlloc=(int*)&HeapAlloc;               
  205. int HeapFree(){return 0;}
  206. int* __imp_HeapFree=(int*)&HeapFree;               
  207. int OutputDebugStringA(){return 0;}
  208. int* __imp_OutputDebugStringA=(int*)&OutputDebugStringA;      
  209. int GetCPInfo(){return 0;}
  210. int* __imp_GetCPInfo=(int*)&GetCPInfo;               
  211. int GetACP(){return 0;}
  212. int* __imp_GetACP=(int*)&GetACP;                  
  213. int GetOEMCP(){return 0;}
  214. int* __imp_GetOEMCP=(int*)&GetOEMCP;               
  215. int EncodePointer(){return 0;}
  216. int* __imp_EncodePointer=(int*)&EncodePointer;           
  217. int DecodePointer(){return 0;}
  218. int* __imp_DecodePointer=(int*)&DecodePointer;           
  219. int FlsSetValue(){return 0;}
  220. int* __imp_FlsSetValue=(int*)&FlsSetValue;            
  221. int FlsGetValue(){return 0;}
  222. int* __imp_FlsGetValue=(int*)&FlsGetValue;            
  223. int GetModuleFileNameA(){return 0;}
  224. int* __imp_GetModuleFileNameA=(int*)&GetModuleFileNameA;      
  225. int LCMapStringW(){return 0;}
  226. int* __imp_LCMapStringW=(int*)&LCMapStringW;            
  227. int GetStringTypeW(){return 0;}
  228. int* __imp_GetStringTypeW=(int*)&GetStringTypeW;         
  229. int LoadLibraryExW(){return 0;}
  230. int* __imp_LoadLibraryExW=(int*)&LoadLibraryExW;         
  231. int VirtualProtect(){return 0;}
  232. int* __imp_VirtualProtect=(int*)&VirtualProtect;         
  233. int VirtualAlloc(){return 0;}
  234. int* __imp_VirtualAlloc=(int*)&VirtualAlloc;            
  235. int SetThreadStackGuarantee(){return 0;}
  236. int* __imp_SetThreadStackGuarantee=(int*)&SetThreadStackGuarantee;
  237. int GetSystemInfo(){return 0;}
  238. int* __imp_GetSystemInfo=(int*)&GetSystemInfo;           
  239. int VirtualQuery(){return 0;}
  240. int* __imp_VirtualQuery=(int*)&VirtualQuery;            
  241. int GetTimeZoneInformation(){return 0;}
  242. int* __imp_GetTimeZoneInformation=(int*)&GetTimeZoneInformation;  
  243. int HeapReAlloc(){return 0;}
  244. int* __imp_HeapReAlloc=(int*)&HeapReAlloc;            
  245. int CompareStringW(){return 0;}
  246. int* __imp_CompareStringW=(int*)&CompareStringW;         
  247. int SetEnvironmentVariableA(){return 0;}
  248. int* __imp_SetEnvironmentVariableA=(int*)&SetEnvironmentVariableA;
  249. int FileTimeToSystemTime(){return 0;}
  250. int* __imp_FileTimeToSystemTime=(int*)&FileTimeToSystemTime;   
  251. int FileTimeToLocalFileTime(){return 0;}
  252. int* __imp_FileTimeToLocalFileTime=(int*)&FileTimeToLocalFileTime;
  253. int GetDriveTypeA(){return 0;}
  254. int* __imp_GetDriveTypeA=(int*)&GetDriveTypeA;           
  255. int FindFirstFileA(){return 0;}
  256. int* __imp_FindFirstFileA=(int*)&FindFirstFileA;         
  257. int HeapSize(){return 0;}
  258. int* __imp_HeapSize=(int*)&HeapSize;               
  259. int GetFullPathNameA(){return 0;}
  260. int* __imp_GetFullPathNameA=(int*)&GetFullPathNameA;        
  261. int GetCurrentDirectoryA(){return 0;}
  262. int* __imp_GetCurrentDirectoryA=(int*)&GetCurrentDirectoryA;   
  263. int SetFilePointer(){return 0;}
  264. int* __imp_SetFilePointer=(int*)&SetFilePointer;         
复制代码





  1. #ifndef _OPENSSL_INC_H_
  2. #define _OPENSSL_INC_H_
  3. /*openssl_inc.c */

  4. #include "openssl\aes.h"
  5. #include "openssl\applink.c"
  6. #include "openssl\asn1.h"
  7. #include "openssl\asn1t.h"
  8. //#include "openssl\asn1_mac.h"
  9. #include "openssl\async.h"
  10. #include "openssl\bio.h"
  11. #include "openssl\blowfish.h"
  12. #include "openssl\bn.h"
  13. #include "openssl\buffer.h"
  14. #include "openssl\camellia.h"
  15. #include "openssl\cast.h"
  16. #include "openssl\cmac.h"
  17. #include "openssl\cms.h"
  18. #include "openssl\comp.h"
  19. #include "openssl\conf.h"
  20. #include "openssl\conf_api.h"
  21. #include "openssl\crypto.h"
  22. #include "openssl\ct.h"
  23. #include "openssl\des.h"
  24. #include "openssl\dh.h"
  25. #include "openssl\dsa.h"
  26. #include "openssl\dtls1.h"
  27. #include "openssl\ebcdic.h"
  28. #include "openssl\ec.h"
  29. #include "openssl\ecdh.h"
  30. #include "openssl\ecdsa.h"
  31. #include "openssl\engine.h"
  32. #include "openssl\err.h"
  33. #include "openssl\evp.h"
  34. #include "openssl\e_os2.h"
  35. #include "openssl\hmac.h"
  36. #include "openssl\idea.h"
  37. #include "openssl\kdf.h"
  38. #include "openssl\lhash.h"
  39. #include "openssl\md2.h"
  40. #include "openssl\md4.h"
  41. #include "openssl\md5.h"
  42. #include "openssl\mdc2.h"
  43. #include "openssl\modes.h"
  44. #include "openssl\objects.h"
  45. #include "openssl\obj_mac.h"
  46. #include "openssl\ocsp.h"
  47. #include "openssl\opensslconf.h"
  48. #include "openssl\opensslv.h"
  49. #include "openssl\ossl_typ.h"
  50. #include "openssl\pem.h"
  51. #include "openssl\pem2.h"
  52. #include "openssl\pkcs12.h"
  53. #include "openssl\pkcs7.h"
  54. #include "openssl\rand.h"
  55. #include "openssl\rc2.h"
  56. #include "openssl\rc4.h"
  57. #include "openssl\rc5.h"
  58. #include "openssl\ripemd.h"
  59. #include "openssl\rsa.h"
  60. #include "openssl\safestack.h"
  61. #include "openssl\seed.h"
  62. #include "openssl\sha.h"
  63. #include "openssl\srp.h"
  64. #include "openssl\srtp.h"
  65. #include "openssl\ssl.h"
  66. #include "openssl\ssl2.h"
  67. #include "openssl\ssl3.h"
  68. #include "openssl\stack.h"
  69. #include "openssl\symhacks.h"
  70. #include "openssl\tls1.h"
  71. #include "openssl\ts.h"
  72. #include "openssl\txt_db.h"
  73. #include "openssl\ui.h"
  74. #include "openssl\whrlpool.h"
  75. #include "openssl\x509.h"
  76. #include "openssl\x509v3.h"
  77. #include "openssl\x509_vfy.h"
  78. //#include "openssl\__DECC_INCLUDE_EPILOGUE.H"
  79. //#include "openssl\__DECC_INCLUDE_PROLOGUE.H"

  80. #endif
复制代码


简单的驱动

  1. #include <ntdef.h>
  2. #include <ntddk.h>

  3. #include "openssl_inc.c"

  4. #pragma comment(lib,"libcrypto.lib")
  5. #pragma comment(lib,"libssl.lib")

  6. int foo()
  7. {
  8.         SSL_CTX *ctx;
  9.         SSL_library_init();
  10.         OpenSSL_add_all_algorithms();
  11.         SSL_load_error_strings();
  12.         ctx=SSL_CTX_new(SSLv23_server_method());
  13.         SSL_CTX_free(ctx);
  14. }



  15. NTSTATUS
  16. DriverEntry(IN PDRIVER_OBJECT DriverObject,IN PUNICODE_STRING RegistryPath)
  17. {
  18.         return 0;
  19. }

复制代码


构建命令行

  1. @echo off
  2. :re
  3. cls
  4. echo /*********************************************/
  5. echo /                                             /
  6. echo /*********************************************/
  7. set path=F:\WinDDK\7600.16385.1

  8. set ddk=%path%\inc\ddk
  9. set crt=%path%\inc\crt
  10. set api=%path%\inc\api
  11. set ssl=F:\openssl\amd64
  12. set obj=.\obj\amd64\openssl_lib.obj

  13. %path%\bin\x86\AMD64\cl.exe .\src\openssl_lib.c /Fp:strict /D"_AMD64_" /Fo"%obj%" /c



  14. %path%\bin\x86\AMD64\cl.exe .\src\hello_world.c /Fp:strict /D"_AMD64_" /I"%crt%" /I"%api%" /I"%ddk%" /I "%ssl%\include" /Fo"Debug\hello_world.obj" /c

  15. echo /*********************************************/
  16. echo /                                             /
  17. echo /*********************************************/


  18. %path%\bin\x86\AMD64\link.exe %obj% .\Debug\hello_world.obj /LIBPATH:"%path%\lib\win7\amd64" /LIBPATH:"%path%\lib\Crt\amd64" /LIBPATH:"F:\openssl\amd64\lib" /OUT:"Debug\hello_world_amd64_win7.sys" /NOLOGO /SUBSYSTEM:native /driver /MACHINE:AMD64 ntoskrnl.lib libcrypto.lib libssl.lib /ENTRY:DriverEntry                                 
  19. echo /*********************************************/
  20. echo /                                             /
  21. echo /*********************************************/


  22. pause
  23. goto re
  24. ;/driver /base:0x10000 /align:32 /subsystem:native
复制代码
回复

使用道具 举报

1111

主题

1651

回帖

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
244
威望
743 点
宅币
24239 个
贡献
46222 次
宅之契约
0 份
在线时间
2297 小时
注册时间
2014-1-26
发表于 2018-1-12 12:16:59 | 显示全部楼层
一堆傀儡函数!
回复 赞! 靠!

使用道具 举报

15

主题

39

回帖

246

积分

用户组: 中·技术宅

UID
5832
精华
0
威望
2 点
宅币
188 个
贡献
0 次
宅之契约
0 份
在线时间
39 小时
注册时间
2020-4-15
发表于 2020-7-22 20:59:34 | 显示全部楼层
这个是传说中的winssl吗?
回复 赞! 靠!

使用道具 举报

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-4-23 14:56 , Processed in 0.042287 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表