06 2011 档案
摘要:待分析Demo代码:int add(int a,int b){ return a+b;}int main(){ int a=0xaa; int b=0xbb; printf("a+b=%d",add(a,b));} 编译,不优化这里参数0xBB,0xAA压栈 push eax,push ecx说明这里默认的调用约定是__stdcall然后去调用函数int add(int,int)Ollydbg F7执行进add函数调用前两个参数0xBB,0xAA已经入栈这里前两行,ebp即esp,是栈顶。ebp+8 是 0xAAebp+C 是 0xBB做加法后返回,retn自动恢复堆栈平衡
阅读全文
摘要:wchar_t wstr[100]=L"wstr";char str[100];wcstombs(str,wstr,100);//宽字符转多字节mbstowcs(wstr,str,100);//多字节转宽字符 也可以使用:MultiByteToWideChar和WideCharToMultiByte参考:http://blog.csdn.net/iamoyjj/archive/2011/05/06/6400877.aspx
阅读全文
摘要:编译和链接选项ml.exe /c /coff /nologo /Folink.exe /SUBSYSTEM:WINDOWS /nologo /OUTHello World Demo Compiled with MASMPlus.386.model flat, stdcalloption casemap :noneinclude windows.incinclude user32.incinclude kernel32.incinclude masm32.incinclude gdi32.incincludelib gdi32.libincludelib user32.libincludelib
阅读全文
摘要:PE文件格式被组织为一个线性的数据流,它由一个MS-DOS头部开始,接着是一个是模式的程序残余以及一个PE文件标志,这之后紧接着PE文件头和可选头部。这些之后是所有的段头部,段头部之后跟随着所有的段实体。文件的结束处是一些其它的区域,其中是一些混杂的信息,包括重分配信息、符号表信息、行号信息以及字串表数据。PE文件主要信息按顺序IMAGE_DOS_HEADER MS-DOS MZ头部DOS STUB MS-DOS 实模式残余程序NTSIGNATURE PE文件标识IMAGE_FILE_HEADER PE文件头IMAGE_OPTIONAL_HEADER PE可选头IMAGE_SECTION_HE
阅读全文
摘要:默认的情况下,byte char型的变量会以asic码的形式被cout打印输出。要想以数值的形式打印这两种数据类型,需要进行强制类型转换类似下面这个样子 cout.setf(ios::hex,ios::basefield);//设置十六进制显示数值 cout.setf(ios::showbase|ios::uppercase);//设置0x头和大写 byte a; cout<<(short)a<<endl;
阅读全文
摘要:cout.setf(ios::hex,ios::basefield);//设置十六进制显示数值cout.setf(ios::showbase|ios::uppercase);//设置0x头和大写
阅读全文
摘要:#include <windows.h>#include "console.h"int main(){ PROCESS_INFORMATION pi; STARTUPINFO si; ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si); CHAR szSysPath[MAX_PATH]; if (GetSystemDirectory(szSysPath,MAX_PATH)>0)//get windows system dir { strcat_s(szSysPath,MAX_PATH,"//no
阅读全文
摘要:首先添加鼠标,图标,菜单资源,然后可以从资源ID加载BOOL InitApplication( HINSTANCE hInstance ){ WNDCLASS wc; wc.cbClsExtra=0; wc.cbWndExtra=0; wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);; //wc.hCursor=LoadCursor(NULL,IDC_ARROW); wc.hCursor=LoadCursor(hInstance,MAKEINTRESOURCE(IDC_CURSOR_PEN));//looad cursor by res
阅读全文
摘要:win32.h#ifndef _X_WIN32_H_#define _X_WIN32_H_BOOL InitApplication(HINSTANCE);BOOL InitInstance(HINSTANCE,int);LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);#endif win32.cpp#include <windows.h>#include "win32.h"HINSTANCE g_hInst;HWND g_hWnd;char g_szAppName[]="WIN32Sample&quo
阅读全文
浙公网安备 33010602011771号