zoukankan      html  css  js  c++  java
  • Delphi逆向

    Delphi反汇编内部字符串处理函数/过程不完全列表

    名称

    参数

    返回值

    作用

    等价形式 / 备注

    _PStrCat

    EAX :目标字符串

    EDX :源字符串

    EAX

    连接两个 Pascal 字符串

    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 :新长度

  • 相关阅读:
    ABAP接口用法
    监听textarea数值变化
    The first step in solving any problem is recognizing there is one.
    Wrinkles should merely indicate where smiles have been.
    God made relatives.Thank God we can choose our friends.
    Home is where your heart is
    ABAP跳转屏幕
    Python 工具包 werkzeug 初探
    atom通过remote ftp同步本地文件到远程主机的方法
    Mongodb学习笔记一
  • 原文地址:https://www.cnblogs.com/milantgh/p/3872049.html
Copyright © 2011-2022 走看看