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?