本帖最后由 女萝岩 于 2020-1-27 15:37 编辑
1.delphi程序中的字符串大概是这么个结构
用c语言表示
struct
{
int a;//不知道是做什么的
int flag;//1或者-1
int length//字符串大小
char str[];//不以\0结尾的数组
}
在OD或者IDA中经常能看到类似下面的获取字符串大小的代码
lea,edx,var
call GetString//调用完之后,edx指向字符串
mov eax,[edx]
test eax,eax,//判断指针是否为0
jz return
mov ebx,[eax-4]// eax指向字符串,根据结构,[eax-4]就是字符串的大小
2.delphi程序获取编辑框内容用GetDlgItemText GetWindowText,SendMessage 都是断不下来的,因为它是用自己内部的函数获取的。获取流程先是传递一个指针,用来存放buffer的地址
再传进去一个对象的地址,对象是用ebx寻址的,后面再根一个call
特征码如下
8D????8B83????????E8????????
在OD中搜索这段特征码很快就能定位到类似string a:=Edit1.Text这种代码了。
|