小编mah*_*esh的帖子

如何破解虚拟表?

我想知道如何更改Test虚拟表中的地址HackedVTable.

void HackedVtable()
{
    cout << "Hacked V-Table" << endl;
}

class Base
{    
public:
    virtual Test()  { cout <<"base";    }
    virtual Test1() { cout << "Test 1"; }
    void *prt;
    Base(){}
};

class Derived : public Base
{
public: 
    Test()
    {
        cout <<"derived";
    }
};

int main()
{    
    Base b1;

    b1.Test(); // how to change this so that `HackedVtable` should be called instead of `Test`?

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

答案将不胜感激.

提前致谢.

c++ virtual

14
推荐指数
3
解决办法
1万
查看次数

C/C++编译器如何处理具有不同值范围的类型之间的类型转换?

如何在不丢失编译器内部数据的情况下进行类型转换?

例如:

 int i = 10;
 UINT k = (UINT) k;

 float fl = 10.123;
 UINT  ufl = (UINT) fl; // data loss here?

 char *p = "Stackoverflow Rocks";
 unsigned char *up = (unsigned char *) p;
Run Code Online (Sandbox Code Playgroud)

编译器如何处理这种类型转换?显示位的低级示例将受到高度赞赏.

c c++ compiler-construction types casting

13
推荐指数
3
解决办法
1万
查看次数

为什么编译器提供默认的拷贝构造

我想知道为什么编译器提供默认的复制构造函数.这个想法背后的策略是什么.

提前致谢.

c++ compiler-construction

11
推荐指数
3
解决办法
5913
查看次数

为什么这个const成员函数允许修改成员变量?

class String
{

    private:
        char* rep;

    public:
        String (const char*);
        void toUpper() const;
};


String :: String (const char* s)
{
    rep = new char [strlen(s)+1];
    strcpy (rep, s);
}


void String :: toUpper () const
{
    for (int i = 0; rep [i]; i++)
    rep[i] = toupper(rep[i]);
}


int main ()
{
    const String lower ("lower");
    lower.toUpper();

    cout << lower << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ const

10
推荐指数
1
解决办法
1万
查看次数

加载程序如何将DLL映射到进程地址空间

我很想知道Loader如何将DLL映射到处理地址空间.装载机如何做到这一点.例子非常受欢迎.

提前致谢.

c c++ dll loader

8
推荐指数
2
解决办法
5781
查看次数

使用IP标志的Do not Fragment Bit在哪里?

我很想知道在哪里使用IP标志的"不碎片"[DF]位.由于碎片对于更高层是不可见的,并且它们也不关心.

我也在寻找一个例子.

非常感谢提前.

c c++ networking network-programming network-protocols

8
推荐指数
3
解决办法
1万
查看次数

链接器如何解析汇编代码中的符号

我想知道链接器如何解析以下汇编代码中的printf符号.

#include<stdio.h>
void main()
{
     printf("Hello ");
}




    .file   "test.c"
    .def    ___main;    .scl    2;  .type   32; .endef
    .section .rdata,"dr"
LC0:
    .ascii "Hello \0"
    .text
.globl _main
    .def    _main;  .scl    2;  .type   32; .endef
_main:
    pushl   %ebp
    movl    %esp, %ebp
    subl    $8, %esp
    andl    $-16, %esp
    movl    $0, %eax
    addl    $15, %eax
    addl    $15, %eax
    shrl    $4, %eax
    sall    $4, %eax
    movl    %eax, -4(%ebp)
    movl    -4(%ebp), %eax
    call    __alloca
    call    ___main
    movl    $LC0, (%esp)
    **call  _printf**
    leave
    ret
    .def    **_printf**;    .scl …
Run Code Online (Sandbox Code Playgroud)

c c++ assembly linker

8
推荐指数
1
解决办法
1274
查看次数

stringstream clear和str有什么区别

我只是想知道clear()和str("")之间的区别是什么;

例如:

stringstream ss("Stack Overflow");

ss.clear();

ss.str("");
Run Code Online (Sandbox Code Playgroud)

我想知道潜在的技术差异.

c++ stringstream

6
推荐指数
2
解决办法
2408
查看次数

逃脱(\)角色背后的魔力是什么?

C/C++编译器如何操作源代码中的转义字符["\"]?如何编写用于处理该字符的编译器语法?编译器遇到该字符后会做什么?

c c++ compiler-construction escaping backslash

5
推荐指数
2
解决办法
1349
查看次数

需要PRBS模式生成C/C++ API

我正在寻找PRBS模式生成C/C++ API,以便我可以将其插入到UDP的Payload中.

如果有人知道生成PRBS模式的过程,那将是非常好的.

c c++ api algorithm networking

5
推荐指数
1
解决办法
4274
查看次数