一个汇编指令:JL,所引发的深思

在RCE论坛上看到,值得学习,所以引用到这里了!
帖子的地址是:[url=http://www.woodmann.com/forum/showthread.php?t=12464]http://www.woodmann.com/forum/showthread.php?t=12464[/url]。
主题全文引用如下(作者是:nezumi-lab  ):

PE文件格式学习:可选头的大小SizeOfOptionalHeader

在PE头部,在IMAGE_NT_HEADERS结构中的FileHeader成员中指定了后面的OptionalHeader成员的大小!
IMAGE_NT_HEADERS的结构定义如下:

typedef struct _IMAGE_NT_HEADERS {
    DWORD Signature;
    IMAGE_FILE_HEADER FileHeader;
    IMAGE_OPTIONAL_HEADER32 OptionalHeader;
} IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32;

没事,写个猜数的小游戏

呵呵!以前做的一课C++程序里一段代码,无事,做成一个GUI界面的!
没什么技术含量。源代码工程与编译后的程序,大家都可以从附件里下载,打包在一起了!
主要是在初始化时,设置一下变量,然后在“生成”时,执行一下随机数的生成,然后在“OK”时,进行一下比较,然后根据设置进行提示信息的输出!

研究C++的一个编译开关:-d1reportAllClassLayout

编译开关:-d1reportAllClassLayout
[color=#FF0000]注意:-d1,这里的是数字“1”,而不是小写的“L”。[/color]汗,我自己就犯了这个错误,老是被忽略掉,而不起作用!

另外,不是自己生成一个文件,在控制台编译时,他直接输出在了控制台窗口。所以在控制台编译时,我使用了重定位到文件:

E:\Programming\c_cpp>cl classA.cpp -d1reportAllClassLayout > class.layout
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.21022.08 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.


E:\Programming\c_cpp>

C++类的实例的内存布局-阅《Reverse C++》有获(1)

一、在 Visual C++中,类的成员变量是按照其声明的大小依次排列在内存中的。
为了验证这一点,我将昨天的一个示例稍稍修改了一下:

#include
using namespace std;

class A{
  private:
    char ch;         //将char类型的成员变量提前放置
    int a,b;    
    
  public:
    A(){
      cout<<"调用构造函数\n";
      a=2;
      b=3;
    }
    ~A(){
      cout<<"调用析构函数\n";
    }
    
    void display(){
      cout<<"a+b="<    }
};
  
int main(){
  A a;
  a.display();
  
  return 0;
}

类与类之间的关系的发现-阅《Reverse C++》有获(3)

继续利用昨天的那个多继承类的例子,然后在派生类里添加自己的构造函数与析构函数,修改如下:

class C: public A,public B{
  private:
    int a,b;
  public:
    void displayC(){
      cout<<"function: displayC()\n";
    }
    C(){
      cout<<"Constructor C\n";
    }
    ~C(){
      cout<<"Destructor C\n";
    }
};

Base64 编码/解码的小工具

今天有空,完善了一下博客的模块,不过好多都是.blog的安装包,里面的代码都是Base64加密的,不能修改,只好在网上搜索了一下Base64编码、解码方面的小工具。GG搜索了一下,出来一大堆,都还不错。于是修改了一下自己需要的,然后重新加密,完善了博客。

[color=#FF0000]修正了对正文字符处理时的一个BUG!
增加了自定义字符参数!编译后的工具已经更新,源码就不再更新了,呵呵[/color]

下午无聊,又想着自己动手做个自己的专用,呵呵!完成界面如下:

Base64算法的资料整理(VC代码与ASM代码)

什么是Base64?
按照RFC2045的定义,Base64被定义为:Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式。(The Base64 Content-Transfer-Encoding is designed to represent arbitrary sequences of octets in a form that need not be humanly readable.)