memcmp

    0熱度

    1回答

    我在Win32下開發了一個簡單工作的DLL:它掃描主機的子虛擬內存。但是由於某些原因,它與Cheat Engine,ArtMoney甚至OllyDbg相比使用單線程掃描速度非常慢。這是用VirtualQuery()掃描單個內存段的函數的代碼。主機(.exe應用程序)承諾大約300-400 MiB的內存,並且我必須掃描大約170個內存部分,大小從4KiB到32MiB不等。我只掃描MEM_PRIVAT

    1熱度

    1回答

    我有一個類,其中我在一個特定的成員上過載了==運算符,memcmp()。由於在代碼中完成了錯誤的副本(調用memcpy的尺寸比應該更大),因此調用==運算符時出現段錯誤。 據我所知,UB很神祕,顯然沒有定義,但仍然有一些我注意到的讓我感興趣的東西。 在調試過程中,我將==調用與其實現交換(即a==b與memcmp(a.member_x, b.member_x, SIZE)交換)並且沒有段錯誤! 那

    1熱度

    1回答

    我必須在性能敏感的地方比較相等的16字節內存塊。 塊總是完全對齊,它們總是正好是16個字節。在我看來,我應該能夠利用這些知識,並提出比逐字節比較更好的方法。 事實上,我認爲絕大多數memcmp實現都是這樣做的,但顯然這需要一段時間來分析地址和大小。在我的情況不是這樣,但它仍然較快的是: ... mov $0x10,%ecx mov -0x4c(%ebp),%esi repz cmpsb %e

    -1熱度

    1回答

    PInkove部分取自一些SO回答(對不起,我失去了原來的鏈接)。 以下是完整的程序。輸出是false。 using System; using System.Runtime.InteropServices; namespace Memcpy { class Program { [DllImport("msvcrt.dll", CallingConventi

    1熱度

    3回答

    的是否 if(strncmp(buf, buf2, 7) == 0) 做同樣的事情, if(memcmp(buf, buf2, 7) == 0) buf和buf2是的char *數組或相似。 我打算把這個附加到另一個問題上,但後來決定也許最好單獨發佈它。據推測,答案要麼是微不足道的「是」,要麼不是那麼有什麼區別? (我發現來自在線文檔這些功能,但不知道strncmp因爲文檔略有不清楚。)

    -4熱度

    1回答

    對於memecmp(),第三個參數是size_t(無符號)。 但是當我們傳遞第三個參數爲-1時,返回總是爲0,即使第一個和第二個參數指向的內存塊不同?

    -1熱度

    2回答

    我有這樣的變量, unsigned char identifier1[12]; 當我使用這個標識符是與流延到 const uint8_t* 像 const uint8_t* getIdentifier() {return identifier1; } 和我接收功能: unsigned char *zid ,我想比較他們兩個,所以我用這個memcmp(identifier1, zid

    -3熱度

    2回答

    #include <stdio.h> #include <stdlib.h> #include <memory.h> #include <string.h> int cauta(const void *x, int n, int dim_el, const void *el) { char *c = (char*) x; int i; for(i = 0

    -1熱度

    1回答

    首先,對不起,如果我的英語不好,這不是我的自然語言。 我還沒有逆向工程的經驗。所以,我很困惑我在大學裏關於這個話題的第一個任務。 任務是找到一個二進制密碼。該程序要求用戶輸入,將其轉換並將該輸入與硬編碼值(我不知道它的長度)進行比較。我試圖找到這個價值。 我敢肯定,我發現memcmp命令在哪裏比較值。我知道memcmp得到這些值作爲輸入參數,但我不知道從哪裏(堆棧或明確寄存器...) 下面是一段代

    -1熱度

    1回答

    Memcpy和memcmp函數可以帶一個指針變量嗎? char *p; char* q; memcpy(p,q,10); //will this work? memcmp(p,q,10); //will this work?