捆綁
捆綁是指將兩個及以上執行檔重新組裝成一個檔案的過程,這樣就可以實現運行執行檔後同時運行其他多個執行檔。 說白點其實就是把多個執行檔“組合”成一個執行檔,而這個執行檔還必須有“分解”能力,這樣才能把 EXE分離出來,使之正常運行。而“組合”也可是多種形式的,下面為幾種捆綁方式:
檔案末尾
這種原理很簡單,也是用的最多的方式,就是將B.EXE附加到A.EXE末尾,這樣當A.EXE被執行的時候而B.EXE也跟著執行了。這種捆綁器的代碼滿網路都是,沒什麼技術含量。
資源捆綁
這是以資源的形式組合到一個EXE檔案中的方式。資源是EXE中一個特殊區段,可以包含EXE需要不需要的用到的任何一切東西。這種方法是如何利用這一點的?只需要用的BeginUpdateResource、UpdateResource、EndUpdateResource這三個API函式就可以了,因為這三個函式是用於更新替換用的。只需要寫一個包裹檔案的頭檔案header.exe,頭檔案中只需要一段釋放資源的代碼。而捆綁器用的時候先將頭釋放出來,然後根據上面三個函式將待捆綁的更新到這個頭檔案幾完成捆綁。類似原理廣泛用於木馬生成器中。
編譯器捆綁
這種方法相當陰險,是將要捆綁的檔案轉換成16進制保存到一個數組中。像這樣的語句:
muma:array[0..9128] of Byte=($4D,$5A.$50….$00); 需要的時候再用API 函式CreateFile和WriteFile便可將檔案還原硬碟,這樣經過編譯器連線器一弄,檢測到可能性就很小了。
函式
bind函式用於將套接字綁定到一個已知的地址上。
頭檔案
#include <sys/socket.h>
語法
int bind(SOCKET socket, const struct sockaddr *address,
socklen_t address_len);
參數說明
socket:是一個套接字。
address:是一個sockaddr結構指針,該結構中包含了要結合的地址和連線埠號。
address_len:確定address緩衝區的長度。
返回值
如果函式執行成功,返回值為0,否則為SOCKET_ERROR。
在定義一個套接字後,需要調用bind函式為其指定本機地址、協定和連線埠號。
下面的代碼創建一個套接字s,將其綁定到3010連線埠上。
int port = 3010;
SOCKET s = socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
sockaddr_in addr;
addr.sin_family = AF_INET; //內部網路協定TCP\UDP等
addr.sin_port = htons(port); //連線埠號
addr.sin_addr.s_addr = htonl(INADDR_ANY);
if (SOCKET_ERROR = bind(s,(LPSOCKADDR)&addr,sizeof(addr))==0)
{MessageBox("失敗!");}
Jquery中使用