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

  • 相关阅读:
    GIthub的小技巧
    C#中DateTime格式转换
    流程控制: if分支 while循环 for循环
    注释,输入,格式化输出,数据类型,运算符
    计算机原理简单了解
    day30
    day19
    day18 时间:time:,日历:calendar,可以运算的时间:datatime,系统:sys, 操作系统:os,系统路径操作:os.path,跨文件夹移动文件,递归删除的思路,递归遍历打印目标路径中所有的txt文件,项目开发周期
    day17跨文件夹导入模块,模块的两种被执行方式,包,直接使用包中模块,包的管理
    day16模块,导入模板完成的三件事,起别名,模块的分类,模块的加载顺序,环境变量,from...import语法导入,from...import *,链式导入,循环导入
  • 原文地址:https://www.cnblogs.com/milantgh/p/3872049.html
Copyright © 2011-2022 走看看