其实这个代码现在网上已经可以随便下载到了,这里只是分享个种子。嘎嘎。
Moving to Windows x64【翻译】
VS2010 + IDASDK6.2搭建IDA Plugin开发环境
这里使用的开发环境是vs2010,不过几乎所有的设置在早期版本的vs中基本是一致的。启动vs之后关闭其他的项目和解决方案,然后按照下面的流程创作工程即可。
- 执行菜单的File->New->Project… (Ctrl-Shift-N)打开新建工程窗口。
- 展开左侧的Visual C++项目模板分支,然后选择右侧的Win32 Project条目,输入工程名称,然后点击确定。
C/C++/Delphi 调用命令并且显示执行结果
C/C++ 代码:
void ExecutCmd()
{
SECURITY_ATTRIBUTES sa;
HANDLE hRead,hWrite;
wchar_t * lpCommandLine =_T("ping.exe www.h4ck.org.cn ");
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
TCHAR temp[255] = {0};
_tcscpy(temp,lpCommandLine);
if (!CreatePipe(&hRead,&hWrite,&sa,0)) {
MessageBox(_T("Error On CreatePipe()"));
return;
}
STARTUPINFO si;
PROCESS_INFORMATION pi;
si.cb = sizeof(STARTUPINFO);
GetStartupInfo(&si);
si.hStdError = hWrite;
si.hStdOutput = hWrite;
si.wShowWindow = SW_HIDE;
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
if (!CreateProcess(NULL,temp
,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi)) {
MessageBox(_T("Error on CreateProcess()"));
return;
}
CloseHandle(hWrite);
char buffer[4096] = {0};
DWORD bytesRead;
while (true) {
if (ReadFile(hRead,buffer,0x3FFu,&bytesRead,NULL) == NULL)
break;
outputstr += buffer;//m_outputstr is CString
OutputDebugString(outputstr);
UpdateData(false);
Sleep(200);
}
}
微软C-C++ 编译器选项
微软C/C++ 编译器选项 | ||
-优化- | ||
/O1 | 最小化空间 | minimize space |
/Op[-] | 改善浮点数一致性 | improve floating-pt consistency |
/O2 | 最大化速度 | maximize speed |
/Os | 优选代码空间 | favor code space |
/Oa | 假设没有别名 | assume no aliasing |
/Ot | 优选代码速度 | favor code speed |
/Ob | 内联展开(默认 n=0) | inline expansion (default n=0) |
/Ow | 假设交叉函数别名 | assume cross-function aliasing |
/Od | 禁用优化(默认值) | disable optimizations (default) |
/Ox | 最大化选项。(/Ogityb2 /Gs) | maximum opts. (/Ogityb1 /Gs) |
/Og | 启用全局优化 | enable global optimization |
/Oy[-] | 启用框架指针省略 | enable frame pointer omission |
/Oi | 启用内建函数 | enable intrinsic functions |
-代码生成- | ||
/G3 | 为 80386 进行优化 | optimize for 80386 |
/G4 | 为 80486 进行优化 | optimize for 80486 |
/GR[-] | 启用 C++ RTTI | enable C++ RTTI |
/G5 | 为 Pentium 进行优化 | optimize for Pentium |
/G6 | 为 Pentium Pro 进行优化 | optimize for Pentium Pro |
/GX[-] | 启用 C++ 异常处理(与 /EHsc 相同) | enable C++ EH (same as /EHsc) |
/EHs | 启用同步 C++ 异常处理 | enable synchronous C++ EH |
/GD | 为 Windows DLL 进行优化 | optimize for Windows DLL |
/GB | 为混合模型进行优化(默认) | optimize for blended model (default) |
/EHa | 启用异步 C++ 异常处理 | enable asynchronous C++ EH |
/Gd | __cdecl 调用约定 | __cdecl calling convention |
/EHc | extern“C”默认为 nothrow | extern “C” defaults to nothrow |
/Gr | __fastcall 调用约定 | __fastcall calling convention |
/Gi[-] | 启用增量编译 | enable incremental compilation |
/Gz | __stdcall 调用约定 | __stdcall calling convention |
/Gm[-] | 启用最小重新生成 | enable minimal rebuild |
/GA | 为 Windows 应用程序进行优化 | optimize for Windows Application |
/Gf | 启用字符串池 | enable string pooling |
/QIfdiv[-] | 启用 Pentium FDIV 修复 | enable Pentium FDIV fix |
/GF | 启用只读字符串池 | enable read-only string pooling |
/QI0f[-] | 启用 Pentium 0x0f 修复 | enable Pentium 0x0f fix |
/Gy | 分隔链接器函数 | separate functions for linker |
/GZ | 启用运行时调试检查 | enable runtime debug checks |
/Gh | 启用钩子函数调用 | enable hook function call |
/Ge | 对所有函数强制堆栈检查 | force stack checking for all funcs |
/Gs[num] | 禁用堆栈检查调用 | disable stack checking calls |
Hello Apple
蛋疼的 REG_MULTI_SZ
话说这个东西是够蛋疼的,当时在发《Delphi Read/Write REG_MULTI_SZ》一篇的时候就注意到读到的信息虽然是正确的,但是在写入的时候却发生了错误。如果再读的话那就更不对了。 从网上查了一下那个蛋疼的REG_MULTI_SZ到底是个什么东西,但是大部分人的结论就是这么一句:
REG_MULTI_SZ 一个以空字符结束的字符串数组,被两个null字符结束。
看了半天也没发现到底信息后面写的是什么东西,看来是我太笨了! 今天又遇到这个问题索性把注册表中的一个REG_MULTI_SZ 键值倒了出来,原来竟然是这么一串东东:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System]
"Component Information"=hex:00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
"Identifier"="AT/AT COMPATIBLE"
"Configuration Data"=hex(9):ff,ff,ff,ff,ff,ff,ff,ff,00,00,00,00,02,00,00,00,05,\
00,00,00,0c,00,00,00,00,00,00,00,00,00,00,00,80,00,ff,03,00,00,3f,00,fe,00,\
01,00,05,00,00,00,18,00,00,00,00,00,00,00,00,00,00,00,00,00,0c,00,00,de,00,\
00,00,00,0e,00,00,00,01,00,00,00,0f,00,00,00,01,00
"SystemBiosDate"="12/17/10"
"SystemBiosVersion"=hex(7):31,00,32,00,31,00,37,00,31,00,30,00,20,00,2d,00,20,\
00,32,00,30,00,31,00,30,00,31,00,32,00,31,00,37,00,00,00,00,00
结束的地方是00,00,00,00,00~ ,知道了是怎么结束的也就知道该怎么写回去了。擦,太蛋疼了~
Reflector 1.0.2011.0408
修改:
1,移除所有授权相关代码和资源
2,移除所有报告错误相关代码和资源
3,移除ReflectorInstaller相关代码和资源,大小由4.3M(混淆压缩)变成2.8M(未混淆压缩)
4,增加代码着色,原来只有黑色和深绿色,看起来要命。类名红色,方法名绿色,类字段浅黄色,参数浅绿色,本地变量黑色(若不喜欢自己修改代码)
原文链接:http://www.cnblogs.com/nnhy/archive/2011/04/14/2016021.html