这里使用的开发环境是vs2010,不过几乎所有的设置在早期版本的vs中基本是一致的。启动vs之后关闭其他的项目和解决方案,然后按照下面的流程创作工程即可。
- 执行菜单的File->New->Project… (Ctrl-Shift-N)打开新建工程窗口。
- 展开左侧的Visual C++项目模板分支,然后选择右侧的Win32 Project条目,输入工程名称,然后点击确定。
这里使用的开发环境是vs2010,不过几乎所有的设置在早期版本的vs中基本是一致的。启动vs之后关闭其他的项目和解决方案,然后按照下面的流程创作工程即可。
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++ 编译器选项 | ||
-优化- | ||
/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 |
unit dropfile;
interface
uses
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
// declare our DROPFILES message handler
procedure AcceptFiles( var msg : TMessage );
message WM_DROPFILES;
end;
var
Form1: TForm1;
implementation
uses
// this unit contains certain functions that we'll be using
ShellAPI;
{$R *.DFM}
就像我们所熟知的那样,IDA对于Unicode和中文的串式参考并没有太好的处理,在这一方面不管是从插件还是ida自身的功能来看都要比OD的Unicode字符串搜索差得多。但是OD的字符串参考却不太好导入到IDA中于是就先是写了个idc的脚本,用来导入数据。今天又写了个小工具用来处理od解析出来的中文字符串参考。效果就是上面的样子,也许那天实在无聊了会改下OD的中文字符串搜索插件,让其可以直接导出数据。
Finally I succeeded calculating the hashab code on windows(xp – win7),but here is no code ,no bin.U can check the result on Linux.lol
; Author: Jake Commander
; Copyright The GeneSys Development System
HexEncode proc uses edi esi ebx pBuff:dword,dwLen:dword,pOutBuff:dword
;---------------------------------------
mov ebx, dwLen
mov edi, pOutBuff
test ebx, ebx
mov esi, pBuff
jz @F
.repeat
movzx eax, byte ptr [esi]
mov ecx, eax
add edi, 2
shr ecx, 4
and eax, 1111b
and ecx, 1111b
cmp eax, 10
sbb edx, edx
adc eax, 0
lea eax, [eax+edx*8+'7']
cmp ecx, 10
sbb edx, edx
adc ecx, 0
shl eax, 8
lea ecx, [ecx+edx*8+'7']
or eax, ecx
inc esi
mov [edi-2], ax
dec ebx
.until ZERO?
@@: mov eax, edi
mov byte ptr [edi], 0
sub eax, pOutBuff
ret
;---------------------------------------
HexEncode endp
Embarcadero.Delphi.XE2.RTM.v16.0.4256.43595.Lite.v5.0
——————————————————————————–
作者:lsuper
——————————————————————————–
发布历史:
2011.09.09 – v5.0
1、根据 RTM v16.0.4256.43595 原版制作
2011.08.08 – v5.0 Beta8
1、根据 beta8 v16.0.4223.41907 原版制作
2、为便于大家试用,写了一个 XE2Resetter 外挂
——————————————————————————–