日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SocksGun源码(类SocksCap)

發布時間:2023/12/14 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SocksGun源码(类SocksCap) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
//利用HOOK API技術替換wsock32.dll中的connect函數,達到類似sockscap的功能 cHXspH
//本程序支持socks5.0中的tcp及明文密碼認證方式 8xlq5O
// ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  m
#include "string.h" HgyZ-S
#include "Winsock.h" |{nJF-
#include "Dbghelp.h" !Fa
#include "tlhelp32.h" N
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  N
#pragma comment ( lib, "wsock32.lib" ) (J[k1l
#pragma comment ( lib, "Dbghelp.lib" ) o[AiW
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  Z)B/Nr
/// gD-]5
//                          // kMVJ
//         定義函數原型           // AlyT[D
//                          // ;m|+
/// ->bH3y
//定義LoadLibraryA()函數原型 [W
typedef HMODULE (WINAPI * LOADLIBRARYA_PROC) ( LPCSTR lpFileName ); ]fka'E
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  zmEJ
//定義LoadLibraryW()函數原型 =8s"
typedef HMODULE (WINAPI * LOADLIBRARYW_PROC) ( LPCWSTR lpFileName ); '(!$le
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  3EMp[
//定義LoadLibraryExA()函數原型 t5W~uR
typedef HMODULE (WINAPI * LOADLIBRARYEXA_PROC)( LPCTSTR lpFileName, %l.v41
HANDLE hFile, E
DWORD dwFlags ); [)+
//定義LoadLibraryExW()函數原型 do/
typedef HMODULE (WINAPI * LOADLIBRARYEXW_PROC)( LPCWSTR lpFileName, 3[4z
HANDLE hFile, ;yLG
DWORD dwFlags ); C]!
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  'PN&7
//定義GetProcAddress()函數原型 R
typedef FARPROC (WINAPI * GETPROCADDRESS_PROC) (HMODULE hModule, >'N
LPCSTR lpProcName ); B
//定義connect()函數原型 kGj
typedef int (WINAPI * CONNECT_PROC)(SOCKET s,           y:[`
const struct sockaddr FAR *name, '
int namelen ); =
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  J{%8
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  2Y
/// #(
//                          // M~O
//         定義全局變量           // Y
//                          // IcIZ
/// 6o1*
LOADLIBRARYA_PROC OriginalLoadLibraryA; // 保存LoadLibraryA()函數地址 JztP9
LOADLIBRARYW_PROC OriginalLoadLibraryW; // 保存LoadLibraryW()函數地址 ):h%zC
LOADLIBRARYEXA_PROC OriginalLoadLibraryExA; // 保存LoadLibraryExA()函數地址 j
LOADLIBRARYEXW_PROC OriginalLoadLibraryExW; // 保存LoadLibraryExW()函數地址 <# Y
GETPROCADDRESS_PROC OriginalGetProcAddress; // 保存GetProcAddress()函數地址 `z{cj
CONNECT_PROC OriginalConnect; // 保存WSOCK32.dll中的connect()函數地址 7+
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  8*=
HANDLE hCurrentProcess; // 當前進程句柄 Uu
HANDLE hLogFile; // 日志文件句柄 zm<
char strMcastIp[128]=""; // 模擬廣播的多播服務器地址 c
char strGameRoomIp[20] = ""; // 作為游戲房間的用戶地址 C~rK?
unsigned short GameRoomPort = 0; // 作為游戲房間的用戶端口 8SY
unsigned short RealBindPort = 0; ukA
unsigned short GameServerPort = 0; // 游戲服務器的端口 $~,
SOCKET sockThread; // 傳遞給保活線程的SOCKET變量 G
bool MyIpIsTrue = false; // 用來標識本機IP是否為真實IP的參數 q_pJ^8
bool RedirectPacket = true; // 用來標識是否需要服務器做包轉發 ?rV:
sockaddr_in connectAddr = {0}; // 用來存放connect的socket地址 hmkX2:
struct hostent FAR * pHostent; // 本機IP地址 Wh
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  !*k
//定義協議族 HKZm
static char afString[30][20] = {{"NULL"},{"AF_UNIX"}, {"AF_INET"}, {"AF_IMPLINK"}, bA-(
{"AF_PUP"}, {"AF_CHAOS"}, {"AF_IPX"}, {"AF_ISO"}, #
{"AF_ECMA"}, {"AF_DATAKIT"}, {"AF_CCITT"}, {"AF_SNA"}, b6s~d
{"AF_DECnet"}, {"AF_DLI"}, {"AF_LAT"}, {"AF_HYLINK"}, c>
{"AF_APPLETALK"}, {"AF_NETBIOS"}, {"AF_VOICEVIEW"}, ,Ml'
{"AF_FIREFOX"}, {"AF_UNKNOWN1"}, {"AF_BAN"}, {"AF_ATM"}, X
{"AF_INET6"}, {"AF_CLUSTER"}, {"AF_12844"}, {"AF_IRDA"}, >?9C
{"NULL"}, {"AF_NETDES" } }; .G
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  m{FX
/// i4e>
//                          // 2y:&
//          聲明子函數           // /
//                          // JCfw
/// w^X:R
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  VNU/f2
//錯誤代碼判斷函數 Tip]
void CheckError( int, int, char * ); #,Kd9t
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  -`;pK{
//替換IMPORT ADDRESS TABLE的函數 o^2
int ReplaceIATEntryInOneMod( PCSTR, PROC, PROC, HMODULE ); )r
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  j>9IC6
//替換系統LoadLibraryA()的函數 VI
HMODULE WINAPI __stdcall MyLoadLibraryA( LPCSTR ); K
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  X)> vw
//替換系統LoadLibraryW()的函數 +n
HMODULE WINAPI __stdcall MyLoadLibraryW( LPCWSTR ); yE]c
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  |e<LU
//替換系統LoadLibraryExA()的函數 9$
HMODULE WINAPI __stdcall MyLoadLibraryExA( LPCSTR, HANDLE, DWORD ); qOD/
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  OP/F
//替換系統LoadLibraryExW()的函數 Ap
HMODULE WINAPI __stdcall MyLoadLibraryExW( LPCWSTR, HANDLE, DWORD ); TU
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  /<tL~
//替換系統GetProcAddress()函數 #@
FARPROC WINAPI __stdcall MyGetProcAddress( HMODULE, LPCSTR ); 6bs(9`
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  H
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  Yd
int WINAPI __stdcall MyConnect( SOCKET, 4J?
const struct sockaddr FAR *, +*
int ); 6s
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  7b*
//記錄日志的函數 Jt6,
void WriteLogFile( char * ); 8i
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  98
//保存原有的API函數地址的子程序 ~#9
int SaveProcAddress(); !Y
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  mkbK8
//遍歷并替換進程內所有模塊API函數的子程序 GY0.
int ReplaceAllMod( bool ); F/
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  /
//替換系統函數的函數 $W(VW
void ReplaceFunctions( HMODULE ); /
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  1#C|%
/// *7.
//                          // ~I
//           主函數            // 9!
//                          // ~IS
/// ?}BY
BOOL WINAPI __stdcall DllMain( HINSTANCE hinstDLL, ,
DWORD fdwReason, -(X#D5
LPVOID lpvReserved ) wRh<(j
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  Ty3
char chrRead[2]={ 0, 0 }; PL81
char strFile[255] = { 0 }; w=9U~o
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  a8
switch ( fdwReason ) R%Cy
  { %zAN
case DLL_PROCESS_ATTACH: Gvqjq
//初始化SOCKET )
WSADATA wsa; 9&
WSAStartup( MAKEWORD(2, 1), &wsa ); d >Gkx
//打開日志文件 N>-
hLogFile = CreateFile( "HookApi.log", GENERIC_WRITE, FILE_SHARE_READ,  uk
NULL, CREATE_ALWAYS, NULL, NULL ); '>o<6
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  X
//獲取當前進程句柄 .B%S%u
hCurrentProcess = GetCurrentProcess(); |CB_sV
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  :XA17/
SaveProcAddress(); ~a
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  C1y;
//遍歷并替換進程內所有模塊API函數 #6k
ReplaceAllMod( 1 ); o_C*Yl
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  c
break; $.O
// End of DLL_PROCESS_ATTACH :JM{pJ
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  B=_<
  case DLL_THREAD_ATTACH: break; -lMqih
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  U'4v
    case DLL_THREAD_DETACH: break; qGO$
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  {w
  case DLL_PROCESS_DETACH: d
//當DLL卸載的時候,進行收尾工作 Xc]/fB
//關閉日志文件 N5[E8N
CloseHandle( hLogFile ); zv8(t
Sleep( 200 ); L>T
break; 'Ei
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  &~1bD/
    default: w9*
break; eL
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  lXqH1
   } // End of switch 35
  return TRUE; -2X)ib
  UNREFERENCED_PARAMETER( hinstDLL ); =
  UNREFERENCED_PARAMETER( lpvReserved ); U|t
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  J3
//End of DllMain >Sp(
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  h[
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  Jq
/// yJ({
//                          // t:@6
//      獲取并保存API函數地址的函數      // ec!L
//                          // e
/// :/|+F>
int SaveProcAddress() :Rl::M
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  a~v
//獲取KERNEL32.DLL中的LoadLibraryA()函數地址并保存 5
OriginalLoadLibraryA = (LOADLIBRARYA_PROC) k
GetProcAddress( GetModuleHandle("kernel32"), "LoadLibraryA" ); jQTYz"
CheckError( (int)OriginalLoadLibraryA, NULL, "GetProcAddress LoadLibraryA" ); K8
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  ;R&&L
//獲取KERNEL32.DLL中的LoadLibraryW()函數地址并保存 L#L#?0
OriginalLoadLibraryW = (LOADLIBRARYW_PROC) U&TL
GetProcAddress( GetModuleHandle("kernel32"), "LoadLibraryW" ); vkQ~XD
CheckError( (int)OriginalLoadLibraryW, NULL, "GetProcAddress LoadLibraryW" ); 27bT
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  'j/C-
//獲取KERNEL32.DLL中的LoadLibraryExA()函數地址并保存 Zg.w{
OriginalLoadLibraryExA = (LOADLIBRARYEXA_PROC) v2_
GetProcAddress( GetModuleHandle("kernel32"), "LoadLibraryExA" ); tCE%+
CheckError( (int)OriginalLoadLibraryExA, NULL, "GetProcAddress LoadLibraryExA" ); X/+X
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  "-tma
//獲取KERNEL32.DLL中的LoadLibraryExW()函數地址并保存 &B04H!
OriginalLoadLibraryExW = (LOADLIBRARYEXW_PROC) dDe
GetProcAddress( GetModuleHandle("kernel32"), "LoadLibraryExW" ); p61
CheckError( (int)OriginalLoadLibraryExW, NULL, "GetProcAddress LoadLibraryExW" ); pr6E#O
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  (9
//獲取KERNEL32.DLL中的GetProcAddress()函數地址并保存 %3
OriginalGetProcAddress = (GETPROCADDRESS_PROC) d5
GetProcAddress( GetModuleHandle("kernel32"), "GetProcAddress" ); "a
CheckError( (int)OriginalGetProcAddress, NULL, "GetProcAddress GetProcAddress" ); Rk/#c
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  @ F:
//獲取WSOCK32.dll中的connect()函數地址并保存 {)
OriginalConnect = (CONNECT_PROC) p-y)Xb
GetProcAddress( GetModuleHandle("wsock32"), "connect" ); z<g2
CheckError( (int)OriginalConnect, NULL, "GetProcAddress WSOCK32:connect" ); (
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  Y
return 0; _'+)H;
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  /4QgNq
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  ^V+|CW
/// d%
//                            // +[u~j
//      替換指定內存模塊系統函數的子程序      // F
//                            // IQD)
//                            // sl|[
//  參數:HMODULE hModCaller 需要被替換的模塊的句柄  // Z/$x
//                            // 5gfs,x
//  返回:本函數沒有返回值               // E+RWi
//                            // F
/// N}c)8.
void ReplaceFunctions( HMODULE hModCaller ) WJMNvb
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  r)}
int iRetCode; *
char * strBuf = (char *)malloc( 256 ); 1mMx
GetModuleFileName( hModCaller, strBuf, 255 ); PVem
WriteLogFile( "Replace Functions in " ); >]ce
WriteLogFile( strBuf ); %7"
WriteLogFile( ":/r/n" ); o
free( strBuf ); !}y9^
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  K
if (( !strstr( strBuf, "VERSION.DLL" ) ) && Un{
( !strstr( strBuf, "COMCTL32.DLL" ) ) && *k|N
( !strstr( strBuf, "opengl32.dll" ) ) ) X=
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  !`!v
//替換KERNEL32.dll中的LoadLibraryA()函數 &mDv
iRetCode = ReplaceIATEntryInOneMod( "KERNEL32.dll", c
(PROC)OriginalLoadLibraryA, pZX)s
(PROC)MyLoadLibraryA, [T
hModCaller ); n5ju
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  <8F
if ( iRetCode == 0 ) WriteLogFile( "/t KERNEL32:LoadLibraryA /r/n" ); c~
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  FN~y}
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  4B;zP-
//替換KERNEL32.dll中的LoadLibraryW()函數 n
iRetCode = ReplaceIATEntryInOneMod( "KERNEL32.dll", B`si
(PROC)OriginalLoadLibraryW, =%
(PROC)MyLoadLibraryW, L}
hModCaller ); r7<Og)
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  3u
if ( iRetCode == 0 ) WriteLogFile( "/t KERNEL32:LoadLibraryW /r/n" ); )-o
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  !{}
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  Rj?mL/
//替換KERNEL32.dll中的LoadLibraryExA()函數 Bi:Y
iRetCode = ReplaceIATEntryInOneMod( "KERNEL32.dll", GhH
(PROC)OriginalLoadLibraryExA, %Dw)]
(PROC)MyLoadLibraryExA, UFR;qD
hModCaller ); j?
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  1g
if ( iRetCode == 0 ) WriteLogFile( "/t KERNEL32:LoadLibraryExA /r/n" ); CP';t{
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  J(g~!
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  y6."w
//替換KERNEL32.dll中的LoadLibraryExW()函數 ~
iRetCode = ReplaceIATEntryInOneMod( "KERNEL32.dll", `
(PROC)OriginalLoadLibraryExW, H.&
(PROC)MyLoadLibraryExW, ]
hModCaller ); `
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  9T
if ( iRetCode == 0 ) WriteLogFile( "/t KERNEL32:LoadLibraryExW /r/n" ); pVP
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  lZgffk
//替換KERNEL32.dll中的GetProcAddress()函數 b(
iRetCode = ReplaceIATEntryInOneMod( "KERNEL32.dll", (PROC)OriginalGetProcAddress, [+Z2
(PROC)MyGetProcAddress, hModCaller ); 7h5sr
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  )wt
if ( iRetCode == 0 ) WriteLogFile( "/t KERNEL32:GetProcAddress /r/n" ); f;lEu
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  !OTFt_
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  }@*""'
//替換WSOCK32.dll中的connect()函數 6E1
iRetCode = ReplaceIATEntryInOneMod( "WSOCK32.dll", M3-Q
(PROC)OriginalConnect, c| >we
(PROC)MyConnect, pO
hModCaller ); ?6@P.
if ( iRetCode == 0 ) WriteLogFile( "/t WSOCK32:connect /r/n" ); L0]X
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  Gr1'g
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  w,&8
//End of ReplaceFunctions() {E
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  Q
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  9c
// ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  t
// 遍歷進程中所有的模塊并替換API函數 r1
// 如果 falg = 0 則進行替換,否則進行恢復 _0
// ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  >
int ReplaceAllMod( bool flag ) 2*lRz
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  a
//遍歷本進程的所有模塊,替換需要替換的函數 'n(
static char strTmp[10]; x83q
HANDLE hSnapshotMod; B93U#B
hSnapshotMod = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, NULL ); qIF
if ( hSnapshotMod == INVALID_HANDLE_value ) GO
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  %EqNZE
itoa( GetLastError(), strTmp, 10 ); #/
WriteLogFile( "CreateToolhelp32Snapshot Error:" ); ~
WriteLogFile( strTmp ); TPFqEr
WriteLogFile( "/r/n" ); b*B
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  3m2T
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  r2
MODULEENTRY32 ModuleEntry; s*
ModuleEntry.dwSize = sizeof( MODULEENTRY32 ); _
int iRet = Module32First( hSnapshotMod, &ModuleEntry ); /Tnq
if ( iRet == FALSE ) ajpF^w
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  94
itoa( GetLastError(), strTmp, 10 ); JA=;W
WriteLogFile( "Module32First Error:" ); w]
WriteLogFile( strTmp ); {Ll5
WriteLogFile( "/r/n" ); /v9
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  It
while ( iRet ) )o#RO
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  -R%R%
ReplaceFunctions( ModuleEntry.hModule ); %6yWS6
iRet = Module32Next( hSnapshotMod, &ModuleEntry ); gt
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  4X
iRet = GetLastError(); M)4dh
if ( iRet != ERROR_NO_MORE_FILES ) Dr
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  
WriteLogFile( "Module32Next Error:" ); OKw[PI
itoa( iRet, strTmp, 10 ); .]:00
WriteLogFile( strTmp ); n+3e
WriteLogFile( "/r/n" ); ze
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  j'
return 0; dbpa
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  )f
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  j7I(
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  W
/// >a'
//                            // ]:
//      替換一個進程中函數地址的子程序       // ,*yyG
//                            //
// 返回值:0成功,-1沒找到,1沒有符號的引用,2沒有輸入節 // UZI n
//                            // N<
/// #h{!
int ReplaceIATEntryInOneMod( PCSTR pszCalleeModName, $f0%00
PROC pfnCurrent, PROC pfnNew, HMODULE hModCaller ) p2GW
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  ,zP-V{
ULONG ulSize; 'O"
PIMAGE_IMPORT_DESCRIPTOR pImportDesc; TIh
pImportDesc = (PIMAGE_IMPORT_DESCRIPTOR) oE&P]i
ImageDirectoryEntryToData( hModCaller, TRUE, 4YVE
IMAGE_DIRECTORY_ENTRY_IMPORT, &ulSize ); t'QM3R
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  #me@b
if (pImportDesc == NULL) return 2; //沒有輸入節 3*tC
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  !./7%`
//循環查找模塊名是否存在 QVv
for(; pImportDesc->Name; pImportDesc++)
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  y3yC
PSTR pszModName; p'
pszModName = (PSTR)((PBYTE)hModCaller + pImportDesc->Name ); c1CL-
if ( lstrcmpiA( pszModName, pszCalleeModName ) == 0 ) break; O^2k+
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  Y
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  U
if ( pImportDesc->Name == 0 ) return 1;//沒有符號的引用 2Hh
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  $,7
//獲取輸入節地址表IAT "NvkK
PIMAGE_THUNK_DATA pThunk; >X-]U
pThunk = (PIMAGE_THUNK_DATA)((PBYTE)hModCaller + pImportDesc->FirstThunk ); dc~
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  ?
//替換函數地址 .
for (; pThunk->u1.Function; pThunk++) c46p
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  3->q
//獲得函數地址 fm/e
PROC* ppfn = (PROC*)&pThunk->u1.Function; ,Q
//判斷是否我們需要找的函數 OoquP
if (*ppfn == pfnCurrent) qDzu2
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  H
//地址符合,更改輸入節的地址 ?:njG
DWORD dwDummy; JAzX
VirtualProtect( ppfn, sizeof(PROC), PAGE_EXECUTE_READWRITE, &dwDummy ); a+3R
WriteProcessMemory( hCurrentProcess, ppfn, &pfnNew, sizeof(PROC), NULL ); |5
return 0;//成功返回 &;t
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  iBX<
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  SFM{
return -1;//沒找到 VSv~a
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  rBQQ
//End of ReplaceIATEntryInOneMod() bJ7
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  lAoy
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  q>~Lu
/// R'G~
//                            // k66s
//      以下為替換系統SOCKET函數的子程序      // qhjQ
//                            // y!
//     參數與返回值與相應的系統函數完全相同     // :41I
//                            //                            // d+
/// ?E`n
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  )JER
// ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  @J.KC
//用來替換LoadLibraryA()的函數 h.W9
// ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  wU/
HMODULE WINAPI __stdcall MyLoadLibraryA( LPCTSTR lpFileName ) @BaU~
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  h*
static int counter = 0; SLx`
counter ++; }Q|G:#
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  *iC
//記錄調用LoadLibraryA()時的參數 :q
WriteLogFile( "LoadLibraryA( " ); 00~Jd
if ( !IsBadStringPtr( lpFileName, 255 ) ) h!
WriteLogFile( (char*)lpFileName ); 4
else WriteLogFile( "_BadFileName" ); :#r
WriteLogFile( " )/r/n/r/n" ); atC8FW
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  3Ain
//調用真正的LoadLibraryA()函數 tJC
HMODULE hMod = OriginalLoadLibraryA( lpFileName ); @'zKpX
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  =x
char * strExeName = (char*)malloc( 256 ); [^4
char * strModName = (char*)malloc( 256 ); JmXw]
GetModuleFileName( NULL, strExeName, 255 ); O}0U
GetModuleFileName( hMod, strModName, 255 ); 4>:
//對新加載的模塊進行API函數替換 ^{S@^
if ( stricmp( strExeName, strModName ) && ( !strstr(strModName, "opengl32") ) ) j
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  ?QAKP?
WriteLogFile( "ReplaceFunctions/r/n/r/n" ); T
ReplaceFunctions( hMod ); Z
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  (]B!
free( strExeName ); ]!(
free( strModName ); m
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  9}b
counter --; 0XXf
if ( ( counter == 0 ) && ( !strstr(strModName, "opengl32") ) ) #Oa@
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  }.h5
WriteLogFile( "ReplaceAllMods/r/n/r/n" ); 6|JV
ReplaceAllMod( 1 ); o{
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  Mx
return hMod; Cr
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  G
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  Maf6
// ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  [
//用來替換LoadLibraryW()的函數 lq+j
// ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  z-Icaw
HMODULE WINAPI __stdcall MyLoadLibraryW( LPCWSTR lpFileName ) rz#AF
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  ]aA
static int counter = 0; BM/2
counter ++; 2VW
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  D*
//記錄調用LoadLibraryW()時的參數 xk/Zt
char * strTmp = (char *)malloc( 256 ); AuxXB
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  T!5
WideCharToMultiByte( CP_UTF8, 0Vs
0, ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  /m&z
lpFileName, .:>kQG
-1, ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  Kk*
strTmp, N
255, ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  E?wjR
NULL, ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  4_
NULL ); 5u,bc
WriteLogFile( "LoadLibraryExW( " ); >JN
if ( !IsBadStringPtr( strTmp, 255 ) ) Y]_
WriteLogFile( strTmp ); Bvagn
else WriteLogFile( "_BadFileName" ); 7Aaz{.
WriteLogFile( " )/r/n/r/n" ); R<j<
free( strTmp ); MV
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  9u
//調用真正的LoadLibraryW()函數 2H#5<]
HMODULE hMod = OriginalLoadLibraryW( lpFileName ); #Swo;f
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  ,i
char * strExeName = (char*)malloc( 256 ); 8=A7,
char * strModName = (char*)malloc( 256 ); v2(.
GetModuleFileName( NULL, strExeName, 255 ); k^1
GetModuleFileName( hMod, strModName, 255 ); woD
//對新加載的模塊進行API函數替換 jv/
if ( stricmp( strExeName, strModName ) ) }
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  [z,Pg|
WriteLogFile( "ReplaceFunctions/r/n/r/n" ); cHYYl
ReplaceFunctions( hMod ); 0vrmu+
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  X67^
free( strExeName ); <Cb%Ys
free( strModName ); C"Fs
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  %
counter --; qtI
if ( counter == 0 ) ]4!
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  ;U
WriteLogFile( "ReplaceAllMods/r/n/r/n" ); V
ReplaceAllMod( 1 ); 0>4!
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  Q2
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  `eeby2
return hMod; #D%|I
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  h-HKn
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  7~K
// ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  I#
//用來替換LoadLibraryExA()的函數 .4#5
// ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  =
HMODULE WINAPI __stdcall MyLoadLibraryExA(LPCTSTR lpFileName, 6;3cU'
 HANDLE hFile, Vvs
 DWORD dwFlags ) nv
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  U
static int counter = 0; tri8
counter ++; r':.]
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  #xlzI
//記錄調用LoadLibraryExA()時的參數 Y4X[/p
WriteLogFile( "LoadLibraryExA( " ); IsM+X>
if ( !IsBadStringPtr( lpFileName, 255 ) ) d
WriteLogFile( (char*)lpFileName ); -#%
else WriteLogFile( "_BadFileName" ); 2
WriteLogFile( " )/r/n/r/n" ); 'WW$d
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  cn[3
//調用真正的LoadLibraryExA()函數 !
HMODULE hMod = OriginalLoadLibraryExA( lpFileName, =
hFile, 6FD~
dwFlags ); D
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  ^smH8F
char * strExeName = (char*)malloc( 256 ); %W]Y
char * strModName = (char*)malloc( 256 ); ,%%O
GetModuleFileName( NULL, strExeName, 255 ); L
GetModuleFileName( hMod, strModName, 255 ); p
//對新加載的模塊進行API函數替換 !
if ( stricmp( strExeName, strModName ) ) w
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  rGF
WriteLogFile( "ReplaceFunctions/r/n/r/n" ); ^qVe
ReplaceFunctions( hMod ); ~}
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  BXp
free( strExeName ); 9(
free( strModName ); f[TJu*
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  6ik
counter --; 1
if ( counter == 0 ) g*$&O=
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  y%B
WriteLogFile( "ReplaceAllMods/r/n/r/n" ); AXAl+
ReplaceAllMod( 1 ); ~+n5W
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  Z=f4)1
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  &S
return hMod; jM=#_
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  8'7
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  t_g}
// ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  v2;u^K
//用來替換LoadLibraryExW()的函數 Q@Zpm{
// ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  <U_{
HMODULE WINAPI __stdcall MyLoadLibraryExW( LPCWSTR lpFileName, vr98*<
HANDLE hFile, O5s
DWORD dwFlags ) CLosR3
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  "z!7"H
static int counter = 0; P3*i.t
counter ++; 8/@(/
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  :7
//記錄調用LoadLibraryExW()時的參數 q!X-t
char * strTmp = (char *)malloc( 256 ); G=
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  `@xf
WideCharToMultiByte( CP_UTF8, {
0, ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  KHcnUc
lpFileName, MnKMP
-1, ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  5
strTmp, a "g
255, ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  JNku#1
NULL, ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  iWcfd|
NULL ); '
WriteLogFile( "LoadLibraryExW( " ); ;
if ( !IsBadStringPtr( strTmp, 255 ) ) "o9W
WriteLogFile( strTmp ); %=eFT
else WriteLogFile( "_BadFileName" ); Gc
WriteLogFile( " )/r/n/r/n" ); u
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  lndd
//調用真正的LoadLibraryExW()函數 bTqB
HMODULE hMod = OriginalLoadLibraryExW( lpFileName, f
hFile, }
dwFlags ); h@
int lastError = GetLastError(); jI*v
if ( hMod == NULL ) ~-
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  t#%-Ea
itoa( lastError, strTmp, 10 ); p*ys
WriteLogFile( "Error code:" ); PL;^
WriteLogFile( strTmp ); ~=}-H
WriteLogFile( "/r/n" ); 5
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  opweTd
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  MD5NL
char * strExeName = (char*)malloc( 256 ); */
char * strModName = (char*)malloc( 256 ); J_/`1e
GetModuleFileName( NULL, strExeName, 255 ); MNUG{
GetModuleFileName( hMod, strModName, 255 ); G/tL|
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  l@Y
//對新加載的模塊進行API函數替換 4kX{
if ( stricmp( strExeName, strModName ) ) 0.+SRM
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  ?Wi/
WriteLogFile( "ReplaceFunctions/r/n/r/n" ); R8
ReplaceFunctions( hMod ); Z:3
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  cs*kGg
free( strExeName ); @0A7U)
free( strModName ); :WO~+I
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  Vy
counter --; +x0
if ( counter == 0 ) _Q [E
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  8<
WriteLogFile( "ReplaceAllMods/r/n" ); 6N
ReplaceAllMod( 1 ); UZ_)
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  ~'TF1
free( strTmp ); Mp(^g
SetLastError( lastError ); #P8A
return hMod; A
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  /x
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  w?5>rh
// ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  g*Z'!
//用來替換GetProcAddress()的函數 %}1%6*
// ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  4p
FARPROC WINAPI __stdcall MyGetProcAddress( HMODULE hModule, q=RR`
LPCSTR lpProcName ) C<`In4
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  (
//調用系統的GetProcAddress()函數 =k
FARPROC proc = OriginalGetProcAddress( hModule, ghNUEk
lpProcName ); ?/
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  yHdJ
int lastError = GetLastError(); /h
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  =hU|
//獲取hModule的Module Name E
char * lpModName = (char*)malloc( 256 ); fa
GetModuleFileName( hModule, lpModName, 255 ); tVQ
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  &bj(R
//替換對WSOCK32函數的取地址操作 I8#e
if ( strstr( lpModName, "WSOCK32" ) ) 3v+!o6
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  N>F,L
if ( proc == (FARPROC)OriginalConnect ) i
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  OBA
proc = (FARPROC)MyConnect; "H
WriteLogFile( "GetProcAddress connect() /r/n/r/n" ); V
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  (
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  fYTvH
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  _
//替換對Kernel32 Loadlibrary()函數的取地址操作 5%+
if ( strstr( lpModName, "KERNEL32" ) ) vCHfR
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  l
if ( proc == (FARPROC)OriginalLoadLibraryA ) X)/
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  Lp_~*
proc = (FARPROC)MyLoadLibraryA; OEA
WriteLogFile( "GetProcAddress LoadLibraryA() /r/n" ); eOo[3(
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  UYyc!
if ( proc == (FARPROC)OriginalLoadLibraryW ) U
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  ?9M
proc = (FARPROC)MyLoadLibraryW; t
WriteLogFile( "GetProcAddress LoadLibraryW() /r/n" ); )+
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  xZ$#T)
if ( proc == (FARPROC)OriginalLoadLibraryExA ) 7(0(5M
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  </^
proc = (FARPROC)MyLoadLibraryExA; vBq"Y%
WriteLogFile( "GetProcAddress LoadLibraryExA() /r/n" ); EW
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  Zp
if ( proc == (FARPROC)OriginalLoadLibraryExW ) OMJ
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  Y
proc = (FARPROC)MyLoadLibraryExW; WNIb|
WriteLogFile( "GetProcAddress LoadLibraryExW() /r/n" ); cJ]
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  uF??<2
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  GP-
free( lpModName ); /35HDG
SetLastError( lastError ); /9$
return proc; ea!HWm
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  @E,4k
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  iX)8cC
// ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  /~
//用來替換connect()的函數 }
// ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  1iB
int WINAPI __stdcall MyConnect( SOCKET s,              3%%V[q
const struct sockaddr FAR *name,  @bta@/
int namelen ) PV*xi)
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  cY]Fn$
char buf[255] = {0}; l,)yq
sockaddr_in * to; U=
to = (sockaddr_in*)name; 7O78]9
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  ^B%
// socks proxy address & port 5t
sockaddr_in sa; gr ~k
sa.sin_family = AF_INET; Dp1^
sa.sin_addr.s_addr = inet_addr( "127.0.0.1" ); z])
sa.sin_port = htons( 1080 ); %;
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  rMziG0
// connect to the socks proxy l*a
int iRet = OriginalConnect( s, (sockaddr*)&sa, namelen ); #{`
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  (
// send a version identifier/method selection message ~
buf[0] = 0x5; // SOCKS Protocol Version 5.0 LZ+v
buf[1] = 0x2; // number of methods is 2 (&puM
buf[2] = 0x0; // X'00' NO AUTHENTICATION REQUIRED #)l
buf[3] = 0x2; // X'02' USERNAME/PASSWORD iWMfm
iRet = send( s, buf, 4, 0 ); 9L
if ( iRet == SOCKET_ERROR ) OTgAUI
return SOCKET_ERROR; *
else ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  8p/Lm
MessageBox( NULL, "send", "sockscap", MB_OK ); |35
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  4sT4`!
iRet = recv( s, buf, 254, 0 ); /
if ( iRet == SOCKET_ERROR ) O;4nW
return SOCKET_ERROR; 6/kU.4
else ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  {>A
MessageBox( NULL, "Recv", "sockscap", MB_OK ); l_, j#
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!   !::
// define the username & password for socks authentication 5hh
char username[64] = "guest"; '
int userlen = 5; C=Ei
char password[64] = "guest"; n/D
int passlen = 5; 1=
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  #
switch ( buf[1] ) /B#A=
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  ;jP
case 0x0 : // No authentication require q?
buf[0] = 0x5; // SOCKS Protocol Version 5.0 ?
buf[1] = 0x1; // CMD = connect Kur
buf[2] = 0x0; // Reserved d}7/7
buf[3] = 0x1; // IP v4 G
memcpy( buf + 4, &to->sin_addr.s_addr, sizeof(DWORD) ); .g y
memcpy( buf + 8, &to->sin_port, sizeof(WORD) ); =j);u
iRet = send( s, buf, 10, 0 ); =%
iRet = recv( s, buf, 254, 0 ); DB%Em
if ( buf[1] == 0x0 ) // GL@Jt
iRet = 0; o`.&e
else ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  3_2zt
iRet = SOCKET_ERROR; }B
break; O`|3oI
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  +,~
case 0x2 : // need username/password Bpx
buf[0] = 0x1; x
buf[1] = userlen; k3_
memcpy( buf + userlen, username, userlen ); 'A@%
buf[ userlen+2 ] = passlen; *
memcpy( buf + userlen + 3, password, passlen ); n
iRet = send( s, buf, 3 + userlen + passlen, 0 ); @!Hf
iRet = recv( s, buf, 254, 0 ); =
if ( buf[1] == 0x0 ) // Authentication return vaule, 0x0 for success .
iRet = 0; |
else ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  g4VBY}
iRet = SOCKET_ERROR; // Other for failure OTU
break; +sY{;
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  .?w!
case 0xFF: // Can't accept your methods 5A5;+
iRet = SOCKET_ERROR; W?WsuG
break; /c3s
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  ,y
default : // Unknown error (j
iRet = SOCKET_ERROR; Z
break; `3Bak:
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  Z//Xt
return iRet; UM
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  >z'/
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  kamqU
// ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  .
//記錄日志文件的函數 _>
// ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  |"8>S0
void WriteLogFile( char * strBuf ) ]N_
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  7@A
DWORD nNumberOfBytesToWrite, NumberOfBytesWritten; d
nNumberOfBytesToWrite = strlen( strBuf ); >tqe
WriteFile( hLogFile, strBuf, nNumberOfBytesToWrite,  C
&NumberOfBytesWritten, NULL ); 63ka
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  `
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  5)uKjY
?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  P29Hv
// ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  h=v]L
//錯誤處理函數CheckError() +a>'
//如果iReturnCode等于iErrorCode,則輸出pErrorMsg并退出 @v/
// ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  u?2BEr
void CheckError( int iRetCode, int iErrorCode, char *pErrorMsg ) kn}(
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  7eML
char strErrorCode[10]; !*%hm9
char * strBuf = (char*)malloc( 256 ); in
if ( iRetCode == iErrorCode ) /F
{ ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  9@f,D
strcpy( strBuf, pErrorMsg ); V7
itoa( GetLastError(), strErrorCode, 10 ); N =`
strcat( strBuf, strErrorCode ); *8v+!
strcat( strBuf, "/r/n/r/n" ); Ih
WriteLogFile( strBuf ); aQCS6
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  u
free( strBuf ); S
} ?→天擎網超級論壇 -- 天擎科技致力于企業、個人上網專業解決方案,為您打造完美空間!  %zUL5.
//end of CheckError()

總結

以上是生活随笔為你收集整理的SocksGun源码(类SocksCap)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。