反彙編windows htonl 函式

2022-03-05 16:05:15 字數 1306 閱讀 6942

因為自己在系統核心寫網路程式有時候需要呼叫htons htonl 這樣的函式進行轉換,但由於核心只能呼叫c執行庫,別的api不能呼叫。自己也接觸過一點彙編,從來沒有去學過。看過老碼識途這本書前幾章,如是自己反編譯試了一下,結果自己還真反出來,對於懂彙編的人確實非常容易。

ulong myhtonl(ulong i)

變數就用暫存器的名字,這樣避免混淆。 自己感覺這個**是不是有點問題,他怎麼沒有判斷自己系統是不是小端就進行轉換了,如果自己電腦是高階怎麼辦呢?

後面看了網上乙個人寫模擬**。

ypedef unsigned short int uint16;

typedef unsigned long int uint32;

// 短整型大小端互換

#define biglittleswap16(a) ((((uint16)(a) & 0xff00) >> 8) | \

(((uint16)(a) & 0x00ff) << 8))

// 長整型大小端互換

#define biglittleswap32(a) ((((uint32)(a) & 0xff000000) >> 24) | \

(((uint32)(a) & 0x00ff0000) >> 8) | \

(((uint32)(a) & 0x0000ff00) << 8) | \

(((uint32)(a) & 0x000000ff) << 24))

// 本機大端返回1,小端返回0

int checkcpuendian()c;

c.i = 0x12345678;

return (0x12 == c.s[0]);}

// 模擬htonl函式,本機位元組序轉網路位元組序

unsigned long int htonl(unsigned long int h)

// 模擬ntohl函式,網路位元組序轉本機位元組序

unsigned long int ntohl(unsigned long int n)

// 模擬htons函式,本機位元組序轉網路位元組序

unsigned short int htons(unsigned short int h)

// 模擬ntohs函式,網路位元組序轉本機位元組序

unsigned short int ntohs(unsigned short int n)

看了他自己新增了判斷,我估計windows系統估計通過巨集進行替換了honts 這些函式,如果是小端 定義轉換內容,如是高階高階就定義直接返回即可了。這種做法windows最喜歡這樣寫**了。

反彙編 迴圈

includeint main 00401010 55 push ebp 00401011 8bec mov ebp,esp 00401013 83ec 44 sub esp,44 00401016 53 push ebx 00401017 56 push esi 00401018 57 push ...

反彙編簡介

在傳統的軟體開發模型中,程式設計師使用編譯器 彙編器 鏈結器中的乙個或者幾個建立可執行程式,為了回溯程式設計過程,可以使用各種工具來撤銷彙編和編譯過程,這些工具就叫做反彙編器和反編譯器。反彙編器 以機器語言作為輸入,得到組合語言形式的輸出結果 反編譯器 以機器語言作為輸入,得到高階語言形式的輸出結果...

反彙編快速入門

我從事組合語言研究大概幾年前,因為是我為了開發sepl計算機語言編譯器。雖然到現在還沒有開發出 來,但是已經看到曙光了。為了研究彙編,我從反彙編入手,做了破解,脫殼,除錯等。但是彙編對我來說一直是讀天書,沒有任何突破。直到最近幾天我有了重大發現。有人說做黑客從反彙編sqlserver.exe檔案開始...