加密与解密(逆向常用API)

来源:互联网 发布:淘宝开直播需要交钱吗 编辑:程序博客网 时间:2024/05/21 07:29
   原地址戳我。 转自鱼C工作室。

    在逆向中,我们常常需要从一些关键的API函数入手,大部分新手对此望而生畏!
 
    小甲鱼在这里给大家整理出逆向中需要掌握和注意的API函数及其用法,希望大家喜欢^_^


DialogBoxes类型常用APIs(通常在注册界面获取)

  • DialogBoxParamA
  • GetDlgItem
  • GetDlgItemInt
  • GetDlgItemTextA
  • GetWindowTextA
  • GetWindowLong
  • DialogBoxParamA'
函数功能:

该函数根据对话框模板资源创建一个模态的对话框。在显示对话框之前,函数把一个应用程序定义的值作为WM_INITDIALOG消息的IParam参数传到对话框过程,应用程序可用此值来初始化对话。

函数原型:
  1. int DialogBoxParam( HINSTANCE hlnstance, LPCTSTR IpTemplateName, HWND hWndParent, DLGPROC IPDialogFunc, LPARAM dwlnitParam );
复制代码

参数:
hlnstance:标识一个模块的事例,该模块的可执行文件含有对话框模板。
IpTemplateName:标识对话框模板。此参数可以指向一个以NULL结尾的字符串的指针,该字符串指定对话框模扳名,或是指定对话框模板的资源标识符的一个整型值。如果此参数指定了一个资源标识符,则它的高位字一定为零,且低位字一定含有标识符。一定用MAKEINTRESOURCE宏指令创建此值。
hWndParent:指定拥有对话框的窗口。
IpDirlogFunc:指向对话框过程的指针。
dwlnitaram:指定传递到WM_INITDIALOG消息的IParam参数中的对话框过程的值。

返回值
如果函数调用成功则返回值为在对函数EndDialog的调用中的nResult参数,该EndDialog函数用于中止对话框。
如果函数调用失败,则返回值为C1。若想获得错误信息,请调用GetLastError函数。


GetDlgItem

函数功能

该函数检索指定的对话框中的控件句柄。
 

函数原型
  1. HWND GetDlgItem(HWND hDlg, int nlDDlgltem);
复制代码

参数
hDlg:标识含有控件的对话框。
nlDDlgltem:指定将被检索的控件标识符。y

返回值
如果函数调用成功则返回值为给定控件的窗口句柄。
如果函数调用失败,则返回值为NULL,表示为一个无效的对话框句柄或一个不存在的控件。
若想获得更多错误信息,可以调用GetLastError函数。

GetDlgItemInt
 

函数功能
获取控件中里面字符串并转换成int类型返回。

函数原型
  1. UINT GetDlgItemInt( HWND hDlg, int nIDDlgItem, BOOL *lpTranslated, BOOLbSigned );
复制代码

参数
hDlg:对话框的句柄。
nIDDlgItem:标识哪个文本将被转换。
lpTranslated:表示成功或失败(TRUE表示成功,FALSE表示失败)。如果此参数为NULL,则该函数没有返回成功或失败的信息。
bSigned:TURE表示有符号数,FALSE表示无符号数。

返回值
如果函数成功转换,返回转换的字符个数。

小甲鱼备注
第三个参数,主要是为了接收错误信息的。可能出现的错误信息有: ID无效,并且超过指定大小。
比如说ID为12345677,这个就不行。

还有就是输入不能解析为一个int类型的,比如输入:"bvbvbvbv","3.5666", 当然后面可以解析为一个浮点型,在这里取得的值为3,但是还是会有错误信息。
如果不指定第二个参数,就不会获得任何错误信息。

对输入的判断是否可以解析为int类型或者是否有效,很有用的,我们经常有这个参数来判断用户的输入是否合法

第四个参数,默认的为true,主要是针对"-123",像这样的字符,它可以把前面的"-"解析为负号,那么就是标准的int类型了,如果设置为false,那么它不可以有负数,因为在这里的"-"号,被认为是不合法的。

GetDlgItemTextA

函数功能
调用这个函数以获得与对话框中的控件相关的标题或文本。GetDlgItemText成员函数将文本拷贝到lpStr指向的位置并返回拷贝的字节的数目。
 

函数原型
  1. int GetDlgItemText( HWND hDlg, int nID, LPTSTR lpStr, int nMaxCount );
复制代码

参数
hDlg:句柄啊句柄~_~
nID:指定了要获取其标题的控件的整数标识符。
lpStr:指向要接收控件的标题或文本的缓冲区。
nMaxCount:指定了要拷贝到lpStr的字符串的最大长度(以字节为单位)。如果字符串比nMaxCount要长,它将被截断。
 

返回值
如果函数调用成功,返回值为拷贝到缓冲区中的 TCHAR 字符个数(不包括结束空字符)。
如果函数调用失败,返回值为 0 。要获取更多错误信息,请调用 GetLastError 函数。

小甲鱼备注*
如果字符串的长度大于缓冲区的长度,则会被截断,并以空字符结束。
 

GetWindowTextA:

函数功能
该函数将指定窗口的标题条文本(如果存在)拷贝到一个缓存区内。如果指定的窗口是一个控件,则拷贝控件的文本。但是,GetWindowText不能接收其他应用程序中控件的文本。

函数原型
  1. Int GetWindowText( HWND hWnd, LPTSTR lpString, Int nMaxCount);
复制代码

参数
hWnd:带文本的窗口或控件的句柄。
IpString:指向接收文本的缓冲区的指针。
nMaxCount:指定要保存在缓冲区内的字符的最大个数,其中包含NULL字符。如果文本超过界限,它就被截断。
 

返回值
如果函数成功,返回值是拷贝的字符串的字符个数,不包括中断的空字符;如果窗口无标题栏或文本,或标题栏为空,或窗口或控制的句柄无效,则返回值为零。若想获得更多错误信息,请调用GetLastError函数。
 

小甲鱼备注
函数不能返回在其他应用程序中的编辑控件的文本。

GetWindowLong"
 

函数功能
该函数获得有关指定窗口的信息,函数也获得在额外窗口内存中指定偏移位地址的32位度整型值。

函数原型
  1. LONG GetWindowLong( HWND hWnd, int nlndex );
复制代码


参数
hWnd:窗口句柄及间接给出的窗口所属的窗口类。
nlndex:指定要获得值的大于等于0的值的偏移量。有效值的范围从0到额外窗口内存空间的字节数一4例如,若指定了12位或多于12位的额外类存储空间,则应设为第三个32位整数的索引位8。
要获得任意其他值,指定下列值之一:
  GWL_EXSTYLE(-20);获得扩展窗口风格。
  GWL_STYLE(-16):获得窗口风格。
  GWL_WNDPROC(-4):获得窗口过程的地址,或代表窗口过程的地址的句柄。必须使用CallWindowProc函数调用窗口过程。
  GWL_HINSTANCE(-6):获得应用事例的句柄。
  GWL_HWNDPARENT(-8):如果父窗口存在,获得父窗口句柄。
  GWL_ID(-12):获得窗口标识。
  GWL_USERDATA(-21):获得与窗口有关的32位值。每一个窗口均有一个由创建该窗口的应用程序使用的32位值。
  在hWnd参数标识了一个对话框时也可用下列值:
  DWL_DLGPROC(4):获得对话框过程的地址,或一个代表对话框过程的地址的句柄。必须使用函数CallWindowProc来调用对话框过程。
  DWL_MSGRESULT(0):获得在对话框过程中一个消息处理的返回值。
  DWL_USER(8):获得应用程序私有的额外信息,例如一个句柄或指针。

返回值
如果函数成功,返回值是所需的32位值;如果函数失败,返回值是0。若想获得更多错误信息请调用 GetLastError函数。

小甲鱼备注
通过使用函数RegisterClassEx将结构WNDCLASSEX中的cbWndExtra单元指定为一个非0值来保留额外类的存储空间。
0 0