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 :新长度
Delphi逆向的更多相关文章
- OD 实验(十二) - 对一个 Delphi 程序的逆向
程序: 运行程序 界面显示的是未注册 点击 Help -> About 点击 Use Reg Key 这里输入注册码 用 PEiD 看一下 该程序是用 Delphi 6.0 - 7.0 写的 逆 ...
- Reverse Core 第一部分 代码逆向技术基础
@date: 2016/10/14 <逆向工程核心原理>笔记 记录书中较重要的知识,方便回顾 ps. 因有一些逆向基础,所以我本来就比较熟悉的知识并未详细记录 第一章 关于逆向工程 目标, ...
- Delphi XE5 常见问题解答
Delphi XE5 常见问题解答 有关于新即时试用的问题吗?请看看 RAD Studio 即时试用常见问答. 常见问题 什么是 Delphi? Embarcadero? Delphi? XE5 是易 ...
- VB逆向
大家或许有所察觉了,随着我们课程的不断深入学习,我们感觉自身逆向的“内功”也在不断的增进! 我们从爆破入手,到现在逐步大家进入程序的内部,认识不同编译器开发的程序,探索不同的加密逻辑. 前边,我们的例 ...
- 逆向集录_00_不同程序OEP特征总结
在分析/逆向 程序时,如果事先知道这类程序的一些特征,那将会是事半功倍的: 分析/逆向 程序,和写程序不同,比喻的话:写程序像在作案,分析/逆向 程序就像是在破案,对破案来讲,重在假想和推理: 特征1 ...
- CrackMe005-下篇 | 逆向破解分析 | 160个CrackMe(视频+图文)深度解析系列
作者:逆向驿站微信公众号:逆向驿站知乎:逆向驿站 CrackMe005,上篇说了具体方法,下篇来发逆向分析过程,看看老夫是如何得到上篇的具体方法的! 准备 [环境和工具] win7/xp虚拟机环境 C ...
- Delphi编程中动态菜单要点归纳
一.创建菜单并添加项目 在设计程序时,有时需要动态创建菜单, 通常使用以下的语句: PopupMenu1 := TPopupMenu.Create(Self); Item := TMenuIte ...
- 【逆向工具】IDA使用1-VS2015版本debug查找Main函数,加载符号文件
IDA 常见操作 空格,切换反汇编视图 选择CALL或是跳转 进入函数内部或是跳转处 返回键 ESC daq.exe 分析32位程序 ,生成的IDA数据库文件是 .idb Idap64.exe 分析6 ...
- PowerDesigner逆向操作(从mysql5.0生成数据库的物理模型),把Comment写到name中,pdm文件导出为word
PowerDesigner逆向操作(从mysql5.0生成数据库的物理模型) 环境:powderdesigner12.5:mysql5.0步骤:1. 为指定的数据库配置mysql的ODBC数据源先下载 ...
随机推荐
- AIDL进程间调用与Binder的简单介绍
Binder是安卓中特有的一种进程间通信(IPC)方式,从Unix发展而来的手段,通信双方必须处理线程同步.内存管理等复杂问题,传统的Socket.匿名通道(Pipe).匿名管道(FIFO).信号量( ...
- 在Ubuntu中USB连接手机调试
1.打开手机USB调试功能 显示“开发者选项”(开发者选项默认隐藏,一般需要进入到“设置”-->“关于手机”连续点击七次,可将“开发者选项显示出来”) 将“开发者选项”设置为“开启”状态 打开U ...
- Hibernate+DWR无刷新三级联动
DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站.它可以允许在浏览器里的代码使用运行在 ...
- Javasript中Date日期常用用法(正则、比较)
Date 对象用于处理日期和时间.创建 Date 对象的语法: 代码如下 复制代码 var myDate=new Date() Date 对象会自动把当前日期和时间保存为其初始值.参数形式有以下5种 ...
- Quartz 第五课 SimpleTriggers 官方文档翻译
对于SimpleTrigger你需要知道它的启动总是在一个特殊的时间点或者有你设置的重复时间段中.直白来说,如果你想在2005年1月13日,正好上午11时23分54秒触发,然后执行五次,每十秒钟. 从 ...
- 使用C#通过调用minitab的COM库自动化生成报表
本文介绍通过C#调用minitab com组建自动化生成报表的方法. 首先需要在minitab中通过手动配置的方式生成报表来得到该报表的命令行,过程如下 选择菜单“编辑器”->“启用命令”启用命 ...
- OC1_类方法的内存管理
// // Dog.h // OC1_类方法的内存管理 // // Created by zhangxueming on 15/6/19. // Copyright (c) 2015年 zhangxu ...
- C# GET 和 SET作用
C#中get和SET,看来看去还是看不懂,通俗一点解释一下,用了有什么好处,不用会怎么样 如果你这样写是没有什么不一样的. private int __Old; public int Old{ get ...
- (转)一些国外优秀的elasticsearch使用案例
Github “Github使用Elasticsearch搜索20TB的数据,包括13亿的文件和1300亿行的代码” 这个不用介绍了吧,码农们都懂的,Github在2013年1月升级了他们的代码搜索, ...
- 第七章 探秘Qt的核心机制-信号与槽
第七章 探秘Qt的核心机制-信号与槽 注:要想使用Qt的核心机制信号与槽,就必须在类的私有数据区声明Q_OBJECT宏,然后会有moc编译器负责读取这个宏进行代码转化,从而使Qt这个特有的机制得到使用 ...