[轉載]Delphi逆向

Delphi反彙編內部字符串處理函數/過程不徹底列表

名稱數組

參數ide

返回值函數

做用spa

等價形式 / 備註指針

 

_PStrCat字符串

EAX :目標字符串字符串處理

EDX :源字符串引用

EAX類型轉換

鏈接兩個 Pascal 字符串copy

s:=copy(s+s1,1,255)

 

_PStrNCat

EAX :目標字符串

EDX :源字符串

CL :結果字符串最大長度

EAX

鏈接兩個 Pascal 字符串

s:=copy(s+s1,1,n)

 

_PStrCpy

EAX :目標字符串

EDX :源字符串

EAX

Pascal 字符串複製

s:=s1

 

_PStrNCpy

EAX :目標字符串

EDX :源字符串

CL :結果字符串最大長度

EAX

Pascal 字符串複製

s:=copy(s1,1,n)

 

_PStrCmp

EAX :左字符串

EDX :右字符串

標誌位 Z

Pascal 字符串比較

if s=s1

 

_AStrCmp

EAX :左字符串

EDX :右字符串

ECX :要比較的字符個數

標誌位 Z

Ansi 字符串比較

if s=s1

 

_LStrClr(var S: AnsiString);

EAX :字符串

清空字符串

s:=''

 

_LStrArrayClr{var str: AnsiString; cnt: longint};

EAX :字符串數組指針

EDX :數組長度

清空字符串數組

 

_LstrAsg(var dest: AnsiString; source: AnsiString)

EAX :目標字符串

EDX :源字符串

複製 Ansi 字符串

 

_LstrLAsg(var dest: AnsiString; source: AnsiString)

複製 Ansi 字符串。可是和 _LstrAsg 的區別不詳

 

_NewAnsiString(length: Longint)

EAX :長度

EAX (指針)

分配指定長度的 AnsiString

 

_LStrFromPCharLen(var Dest: AnsiString; Source: PAnsiChar; Length: Integer)

EAX :目標字符串

EDX :源字符串

ECX :要複製的長度

分配並從 PChar 複製指定長度的 AnsiString

 

_LStrFromPWCharLen(var Dest: AnsiString; Source: PWideChar; Length: Integer)

EAX :目標字符串

EDX :源字符串

ECX :要複製的長度

分配並從 PWideChar 複製指定長度的 AnsiString

 

_LStrFromChar(var Dest: AnsiString; Source: AnsiChar)

EAX :目標字符串

EDX :源字符串

單字符的分配和複製

 

_LStrFromWChar(var Dest: AnsiString; Source: WideChar)

EAX :目標字符串

EDX :源字符串

單字符的分配和複製

 

_LStrFromPChar(var Dest: AnsiString; Source: PAnsiChar)

Pchar 到 AnsiStr 的轉換

 

_LStrFromPWChar(var Dest: AnsiString; Source: PWideChar)

PWideChar 到 AnsiStr 的轉換

 

_LStrToString(var Dest: ShortString; const Source: AnsiString; MaxLen: Integer)

EAX :目標字符串

EDX :源字符串

ECX :要複製的長度

AnsiString 到 Pascal 字符串的轉換

 

_LstrLen(str: AnsiString): Longint

EAX :目標字符串

EAX

AnsiStr 的長度

 

_LstrCat(var dest: AnsiString; source: AnsiString)

EAX :目標字符串

EDX :源字符串

Ansi 字符串的鏈接

dest+=source

 

_LStrCat3{var dest:AnsiString; source1: AnsiString; source2: AnsiString}

EAX :目標字符串

EDX :源字符串 1

ECX :源字符串 2

Ansi 字符串的鏈接

dest+=source

 

_LstrCatN(var dest:AnsiString; argCnt: Integer; ...)

EAX :目標字符串

EDX :源字符串的個數 +2

[ESP+4*i] :第 i 個源字符串的指針

Ansi 字符串的鏈接

這裏的入口參數比較特別

 

_LStrCmp

EAX :左字符串

EDX :右字符串

標誌位 Z

Ansi 字符串比較

if s=s1

 

_LStrAddRef

EAX :目標字符串

增長 Ansi 字符串的引用計數

這個能夠不用管

 

_LStrToPChar

EAX

EAX

類型轉換

 

_LstrCopy(const s : AnsiString; index, count : Integer): AnsiString

EAX :目標字符串

EDX :起始位置

ECX :要複製的長度

[ESP+4]

複製指定長度的 Ansi 子串

 

_LStrDelete

EAX :目標字符串

EDX :起始位置

ECX :要刪除的長度

同 Delete

 

_LstrInsert(const source : AnsiString; var s : AnsiString; index : Integer)

EAX :要插入的字符串

EDX :目標字符串

ECX :要插入的位置

將 source 插入到 s 的 index 位置

結果是 s 加長

 

_LStrPos

EAX :子串

EDX :目標字符串

EAX

同 POS

 

_LStrSetLength

EAX :目標字符串

EDX :新長度

相關文章
相關標籤/搜索