📄 chap3-3.htm.primary
字号:
<html>
<head>
<title>Crack Tutorial</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link rel="stylesheet" href="style/css.css" type="text/css">
<link rel="stylesheet" href="../STYLE/Css.css" type="text/css">
</head>
<body bgcolor="white" text="#000000" link="#004080" vlink="#004080" background="../image/Back.gif">
<p><a href="catalog.htm">目录</a>>>第3章</p>
<p align="center" class="shadow1Copy"><b class="p3">第3章 动态分析技术</b></p>
<table width="80%" border="0" cellspacing="0" cellpadding="3" align="center" bgcolor="#bcbcbc" bordercolor="#111111" class="shadow1">
<tr>
<td class="shadow1" width="25%">
<div align="center"><span class="p9">第一节<font color="#FFFFFF"> </font><a href="Chap3-1.htm"><font color="#FFFFFF">
安装与配制 </font></a></span></div>
</td>
<td class="shadow1" width="25%">
<div align="center"><span class="p9">第二节<font color="#FFFFFF"> <font color="#000000"><a href="Chap3-2.htm"><font color="#FFFFFF">操作入门</font></a></font></font></span></div>
</td>
<td class="shadow1" width="25%">
<div align="center"><span class="p9">第三节 <a href="Chap3-3.htm"><font color="#FFFFFF">API函数简介</font></a></span></div>
</td>
<td class="shadow1" width="25%">
<div align="center"><span class="p9">第四节 <a href="Chap3-4.htm"><font color="#FFFFFF">拆解教程</font></a>
</span></div>
</td>
</tr>
</table>
<p align="center"><b>第三节 常用Win32 API函数简介</b></p>
<p><br>
现在很多讲Windows程序设计的书都是讲基于MFC库和OWL库的Windows设计,对Windows实现的细节都鲜有讨论,而调试程序都是和系统底层打交道,所以有必要掌握一些Win32
API函数的知识,这样我们可快捷地找出程序调用错在哪?是哪个参数出了问题。<br>
Windows程序模块包括KERNEL、USER和GDI,其中KERNEL完成内存管理、程序的装人与执行和任务调度等功能,它需要调用原MS―DOS中的文件管理、磁盘输入输出和程序执行等功能;USER是一个程序库,它用来对声音、时钟、鼠标器及键盘输入等操作进行管理;GDI是一功能十分丰富的子程序库,它提供了图形与文字输出、图象操作和窗口管理等各种与显示和打印有关的功能。上述KERNEL、USER和GDI模块中的库函数可被应用程序调用,也可被其他程序模块调用。把包含库函数的模块称为输出者(export)。你应明白为什么跟踪软件时经常在KERNEL32!.text和USER32.text等系统领空转的问题吧。<br>
这里列出几个经常碰到的Win 32 API函数,它们都是存在Windows系统核心文件KERNEL32.DLL中和视窗管理文件USER32.DLL中。<br>
Windows函数是区分字符集的:A表示ANSI,W表示Wide,即Unicode (Wide character-set),前者就是通常使用的单字节方式,但这种方式处理象中文这样的双字节字符不方便,容易出现半个汉字的情况。而后者是双字节方式,方便处理双字节字符。Windows的所有与字符有关的函数都提供两种方式的版本。尽管你编程时使用GetWindowText,但实际上编译程序会根据设置自动调用GetWindowTextA或GetWindowTextW。函数的最后一个字母告诉我们函数是使用单字节还是双字节字符串。<br>
<b>1、 Hmemcpy函数</b><br>
void hmemcpy(hpvDest, hpvSource, cbCopy) <br>
void _huge* hpvDest; // 目的数据地址 <br>
const void _huge* hpvSource; // 源数据地址 <br>
long cbCopy; // 数据大小 (Bytes) <br>
这个函数在KERNEL32.DLL中,它很常用,俗称万能断点,但一般的编程书籍上很少提到,原因它是底层的东西,没有特殊需要,一般不直接调用。但的确它是很有用的!有意思的是它执行的操作很简单,只是将内存中的一块数据拷贝到另一个地方。<br>
注意:此函数只在Windows 9x系统上有效,在Win NT/2K系统上相关的函数是memcpy,但在Win NT/2K上不同于Windows 9x上,很少再调用memcpy来处理数据了,用此函数设断基本上什么也拦不住。<br>
<b>2、 GetWindowText函数</b><br>
此函数在USER32.DLL用户模块中,它的作用是复制指定窗口中的字符到缓冲区。函数原型:<br>
int GetWindowText(<br>
HWND hWnd//欲获取文字的那个窗口的句柄 <br>
LPTSTR lpString //预定义的一个缓冲区,至少有cch+1个字符大小;随同窗口文字载入 <br>
int nMaxCount//lpString缓冲区的长度<br>
);<br>
16位:GetWindowText<br>
32位:GetWindowTextA,GetWindowTextW<br>
<b>3、 GetDlgItemText</b><br>
此函数在USER32.DLL用户模块中,它的作用是返回对话框中某一个窗口的标题或文字。函数原型:<br>
UINT GetDlgItemText(<br>
HWND hDlg, // 对话框句柄<br>
int nIDDlgItem, //控制标识符<br>
LPTSTR lpString, / 预定义的一个字符缓冲区<br>
int nMaxCount// 字符缓冲区的长度<br>
);<br>
16位:GetDlgItemText<br>
32位:GetDlgItemTextA,GetDlgItemTextW<br>
<b>4、 MessageBox函数</b><br>
此函数是在USER32.DLL用户模块中,它的作用创建、显示和操作信息框。函数原型:<br>
int MessageBox(<br>
HWND hWnd, //窗口句柄<br>
LPCTSTR lpText, // 信息框中文字的地址<br>
LPCTSTR lpCaption, // 信息框标题地址<br>
UINT uType // 信息框类型<br>
);<br>
16位:MessageBox<br>
32位:MessageBoxA,MessageBoxW<br>
</p>
<p align="center"><a href="../Catalog.htm"><img src="../image/navtoc.gif" width="84" height="23" border="0"></a><a href="Chap3-2.htm"><img src="../image/Navprev.gif" width="80" height="23" border="0"></a><a href="Chap3-4.htm"><img src="../image/navnext.gif" width="83" height="23" border="0"></a></p>
<hr width=735>
<div align="center"><span class="p9"><font size="2"><span class="p9"><font size="2"><span class="p9">Copyright
© 2000-2001 <a href="http://www.pediy.com/">KanXue Studio</a> All Rights
Reserved.</span></font></span></font></span> </div>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -