首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Delphi和FPC是否有MakeWord函数(两个字节或字符)?

Delphi和FPC是两种编程语言,分别是由Embarcadero Technologies和Free Pascal开发的。它们都是面向对象的编程语言,用于开发各种应用程序。

在Delphi和FPC中,没有内置的MakeWord函数来创建两个字节或字符。然而,可以使用位运算和类型转换来实现这个功能。下面是一个示例代码:

代码语言:pascal
复制
function MakeWord(HighByte, LowByte: Byte): Word;
begin
  Result := (Word(HighByte) shl 8) or LowByte;
end;

这个函数接受两个字节作为参数,将高字节和低字节组合成一个字。通过将高字节左移8位,然后与低字节进行按位或运算,可以得到一个16位的字。

Delphi和FPC都支持多种数据类型和操作,可以用于处理各种编程任务。它们可以用于开发桌面应用程序、移动应用程序、Web应用程序等。在云计算领域,可以使用Delphi和FPC来开发与云相关的应用程序,如云存储、云计算平台的管理工具等。

腾讯云提供了云计算相关的产品和服务,如云服务器、云数据库、云存储等。您可以访问腾讯云官方网站(https://cloud.tencent.com/)了解更多关于腾讯云的产品和服务信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

新160个CrackMe分析-第4组:31-40(上)

,继续向上交叉引用到了上一层:看到的是个窗口过程函数,这里在比对消息码,这里弹窗往上有个DialogBoxParamA的调用,应该就是创建Register对话框的函数,所以跟进这里的窗口过程跟进之后,可以看到这有两个明显的函数调用获取用户输入...,分别保存在了两个全局变量里,然后就关闭窗口了,接下来还得从刚刚创建窗口的地方往下看往下看就是使用获取的NameSerial进行一个函数调用,然后用调用结果比对,选择是否弹窗成功接下来看Name的校验计算...:首先是判断字符的合法性,必须是字母,如果是小写字母则转变成大写字母然后累加每个字母的值,5678h进行异,得到用户名的校验值接下来是序列号的校验:循环遍历每一个字符,序列号如果说是纯数字,那么减去...0x30就相当于是把字符数字变成整数类型的数字,然后每次操作一个数字累加到edi之前就先乘以一次10,那么这个逻辑就相当于是字符串转整型的操作然后进行一个异1234h,返回校验值最后比较这两个校验值,...,这里依然是使用IDA的截图:刚开始是获取输入的NameSerial,Name长度需要大于等于4 接下来是对Name的处理:遍历字符串每次取一个字节,左移9位,然后累加到ebx里 验证环节依然是对比:

36210

socket网络编程基础

套接字3种类型: 流式套接字,即TCP套接字,用SOCK_STREAM表示 数据报套接字,即UDP套接字(称无连接套接字),用SOCK_DGRAM表示 原始套接字,用SOCK_RAM表示 本文主要分析...服务器用bind()函数来**绑定一个端口号IP地址**,使套接字与指定的端口号IP地址相关联。...服务器调用listen()函数,使服务器的这个端口IP处于**监听状态,等待网络中某一客户机的连接请求**。 客户机用socket()函数建立一个套接字,设定远程IP端口。...建立连接以后,客户机用write()函数close()函数)向socket中写入数据,也可以用read()函数recv()函数)读取服务器发来的数据。...服务器用read()函数recv()函数)读取客户机发来的数据,也可以用write()函数send()函数)来发送数据。 完成通信以后,使用close()函数**关闭socket连接**。

97510
  • 新160个CrackMe分析-第2组:11-20(下)

    程序,截图不方便注释,之后用IDR直接复制代码到everEdit里写注释了:找到校验按钮,分析校验函数sub_00444B30:首先是判断用户是否输入,无输入则弹窗,输入则跳转到00444B78:接下来校验输入的数据...,对一个数(eax)求n(edx)次方,这里Delphi函数调用约定是fastcall:累加完成之后会进行对比:累加的值输入的数字是否一样相同则跳转到成功提示上:然后再往下就是10字节长度11字节长度的运算对比了...啊查字符串:存在一些提示字符调试分析依然是拖IDR,复制出来在编辑器里写注释窗口里两个事件,一个是Name编辑框键入的时候触发的,一个是点击Try按钮触发的直接看按钮的验证逻辑:经过函数初始化部分之后...,判断了两个数字,不为0则向下进行,然后一系列获取编辑框的值,判空这一段主要是判断三个编辑框是否输入,无输入就骂你傻子,然后清空编辑框接下来判断序列号,第一个数字序列号1对比,第二个数字序列号2对比...,然后开根号,最后转换回十进制:第二段运算第二段运算是基于用户名的运算,首先判断了用户名长度,必须大于4字节,然后调用了一个自写函数对用户名计算了一个结果,然后进行位移操作,与操作之后得到一个新的值,

    53320

    熊猫烧香(上)初始分析

    三、IDAOD的分析 (1)使用IDA载入病毒样本 (2)定位到0x0040CB7E位置 注意:某些病毒在IDA中会自动分析出字符串“感谢艾玛…”,并且是在调用sub_403C98函数之前,我们可以推测上面那个函数也传递了一个字符串...接着可以通过OD动态调试获取字符串对应的值。 但是,我目前的IDA并没有自动解析出字符串的值,只能通过经验进行分析OD动态调试。...sub_403C98函数两个参数,由于采用的是Delphi编译器,因此在反汇编中,第一个参数保存在eax中,第二个参数保存在edx中。...首先看到两条赋值语句,将值赋给EDXEAX中,由于这个程序是使用Delphi编写,所以在call之前会将参数放到寄存器中,我们首先看看EDX中的内容。...再按F8发现这个函数比较两个字符是否相同的操作。 CMP ECX, EBX 总结:回到IDA,我们将函数sub_404018重命名为字符串比较函数“CMPString”。

    17410

    windows下的C++ socket服务器(3)

    inet_WsaData);//1 1 WSADATA inet_WsaData;SAStartup(MAKEWORD(1, 1), &inet_WsaData); 在windows下使用socket的相关函数前...int  WSAStartup(WORD wVersionRequested,LPWSADATA lpWSAData); 该函数的第一个参数指明程序请求使用的Socket版本,其中高位字节指明副版本、低位字节指明主版本...以前大家使用的都是socket1.1版本,但socket2.0版本已经出来了,所以我这里使用的是socket2.0版本(MAKEWORD(2.0)) 1.1版2.0版的区别: 两者的最重要区别是1.1...= 0)用于检测当前的Socket是否为2.0 LOBYTEHIBYTE是两个宏,在vs2013里定义如下 #define LOBYTE(w)           ((BYTE)(((DWORD_PTR...4 struct sockaddr_in saddr; sockaddr_in是定义了socket发送接收数据包的地址的结构体,四个字段,含义如下 第一个参数short sin_family,指定应用程序使用的通信协议的协议族

    2K100

    十二.熊猫烧香病毒IDAOD逆向分析(上)病毒初始化

    分析信息如下: 该程序并没有加壳,采用Delphi Borland Delphi 6.0-7.0编写 注意,这里补充姜老师对Delphi编写代码VC++编写代码的理解。...sub_403C98函数两个参数,由于采用的是Delphi编译器,因此在反汇编中,第一个参数保存在eax中,第二个参数保存在edx中。...XOR EDX, EAX EDXEAX异操作,其值保存在EDX中,即除法的余数EDX乱码EAX进行异操作。...发现这个结果是“2A”,该值正式刚才异出来的EDX结果。 接着我们尝试在下列两个位置增加断点。...再按F8发现这个函数比较两个字符是否相同的操作。 CMP ECX, EBX 总结:回到IDA,我们将函数sub_404018重命名为字符串比较函数“CMPString”。

    2.2K40

    Clickhouse简介性能对比

    常见的列式数据库: Vertica、 Paraccel (Actian Matrix,Amazon Redshift)、 Sybase IQ、 Exasol、 Infobright、 InfiniDB...不同的存储方式适合不同的场景,这里的查询场景包括: 进行了哪些查询 多久查询一次 各类查询的比例 每种查询读取多少数据————行、列字节 读取数据写入数据之间的关系 使用的数据集大小以及如何使用本地的数据集...是否使用事务,以及它们是如何进行隔离的 数据的复制机制与数据的完整性要求 每种类型的查询要求的延迟与吞吐量 系统负载越高,根据使用场景进行定制化就越重要,并且定制将会变的越精细。...) 对于简单查询,允许延迟大约50毫秒 列中的数据相对较小: 数字字符串(例如,每个URL 60个字节) 处理单个查询时需要高吞吐量(每个服务器每秒高达数十亿行) 事务不是必须的 对数据一致性要求低...不支持窗口函数相关子查询。 向量引擎 实时数据插入 稀疏索引 适合在线查询 缺点 没有完整的事务支持。 缺少高频率,低延迟的修改删除已存在数据的能力。

    6.6K22

    恶意代码分析实战六:熊猫烧香病毒样本分析

    用PEID进行查壳,显示未加壳,程序采用Delphi语言开发。 补充下Dephi开发的程序C++开发的程序的一些区别。 区别: 1.Delphi函数调用时参数的传递不完全用栈,主要用寄存器。...sub_403C98(AllocStrCpy) Part1: 我们在图1中可以看到两个sub_403C98的函数,因为之前说过上面代码都是Delphi自动生成的,所以这里就不分析,我们最开始的地方应当是标红这位置开始分析...sub_405360(Decode) 接着继续分析第一张图的如下图的地方,从图中可见call sub_405360,两个参数:(1)xboy,(2)一段看似加密的字符串。...Delphi逆向小技巧 其实Delphi专门的反编译器,其效果不比IDA Pro差,甚至更胜一筹,其中值得比较推荐的一款就是IDR。...sub_404018(strcmp) 我们用了上面介绍的小技巧后,分析起来就轻松多了,这里直接分析出了sub_404018是一个strcmp字符串比较函数,用来比较解密后的字符是否等同于全局变量。

    3.3K20

    14.11 Socket 基于时间加密通信

    代码中函数GenRandomString用于实现生成一个随机数,该函数接受一个随机数长度并返回一个字符串。...接着GetPasswordSalt_OnSec与GetPasswordSalt_OnMin函数分别用于根据当前秒与分钟生成一个随机的盐,函数GetXorKey则用于对特定一段字符串进行异处理并生成一个...Key,函数CRC32则用于对字符串计算得到一个哈希值。...接着调用GetXorKey函数生成随机数,该随机数是通过本机时间通过分钟与秒数生成的盐,并与用户密码进行异得到。...通过接收服务器端发过来的CRC32校验码,比对原始数据包有没有被修改过,该校验码是服务端通过数据包生成的,最后客户端计算收到的数据包CRC32是否与服务端一致,一致则继续执行异循环对数据包进行逐字节解包

    33820

    新160个CrackMe分析-第6组:51-60(上)

    看着就烦构造正确的keyfile首先是打开文件,读取其中的内容,对比内容是否为这个固定值然后判断内容的长度,内容的长度为固定值0x17字节条件满足了就会启用编辑框注册按钮:校验算法分析这个call里一堆代码不知道在干嘛...,得到一个值,将这个值累加到si里,对于每个字符都这么操作最后判断si的值是否大于一个固定值,否则就加上一个固定值再往后就是生成真码比较的过程了:首先将计算出来的累加值si转字符串,然后往第3第5个字符处插入...,有些函数没识别全,应该是导入表没修复好接下来是对Name的处理:反转字符串,然后对每个字符进行异0x30然后是对UnlockCode的处理:遍历每个字符,对每个字符0x20,最后各个处理过的Name...接下来直接跟进DialogFunc找nMsg=0x111,arg_8=3eb的分支:获取用户输入的两个值,调用了一个call,然后根据返回结果是否为1进行弹框跟进这个call看看:由于库函数的内联汇编看得头疼...,紧接着10个字节读取成功后,往下走:这里是处理前10个字节,每个字节一下0x58,直到遇到0为止这意味着,我们构造的文件里需要出现00截断 Key文件 效果:

    70520

    Python 的数据结构

    本篇博客主要内容,基础的数据结构: 列表、元组、字典 、 集合介绍,如何创建自定义函数如何操作Python文件对象及如何与本地硬盘交互。 系统:Windows10系统。...示例1代码如下: # 字符串排序 def list_sort_string(): list=["delphi","Delphi","python","Python","c++","C++",...Python 一些常用的序列函数必须掌握。...可以像访问列表元组中的元素一样,访问、插入设定字典中的元素; 可以用检查列表元组是否包含某个值的方法,检查字典中是否包含某个键; 可以用 del 关键字 pop 方法(返回值的同时删除键)删除值...虽然键值对没有顺序,这两个方法,可以用相同的顺序输出键值。

    3.2K20

    14.1 Socket 套接字编程入门

    (2, 0), &WSAData)当读者需要使用套接字编程时,不论是服务端还是客户端都需要调用WSAStartup初始化套接字库,该函数接受两个参数传递,第一个参数一般默认会传递MAKEWORD(2,...0) 它是一个宏,用于将两个8位的字节合并成一个16位的字,在MAKEWORD(2, 0)中,括号内的数字分别代表高位字节(2)低位字节(0),宏会将它们合并成一个16位的无符号short整型数据,即...,该函数需要传入两个参数,参数1为套接字套接字句柄,参数二为侦听套接字最大连接数,如果进入侦听状态则说明该套接字是等待连接状态,一旦服务器接受了连接,它可以使用返回的套接字对象与发起连接的客户端进行通信...一旦连接请求被接受,函数将返回一个新的套接字对象客户端的地址信息。在接受连接请求并创建新的套接字对象之后,服务器可以使用该对象与客户端进行通信。...一般来说,在与服务器进行通信之前,客户端套接字需要使用bind()函数指定一个本地地址端口,以确保数据可以正确地传输。

    39350

    【网络编程】基于TCPIP协议的CS模型

    应用 网络通信的函数,全都要使用SOCKET,每个客户端一个SOCKET,服务器一个SOCKET,通信的时候,就需要这个SOCKET做参数,跟谁通信,就要传递谁的SOCKET。...struct sockaddr { ushort sa_family;//地址类型 char sa_data[14];//端口号 ip地址 //往一个字符串中赋值端口号...字节 //两个结构体大小内存排布一样 结构体 -地址类型 -ip地址 127.0.0.1-回送地址 本地回环地址 本地网络测试 192.168.xxx.xxx- 用户...参数1 客户端的socket,每个客户端对应唯一的socket 参数2 客户端消息的存储空间,是个字符数组,一般是1500字节。...超过1500 系统会分片处理,比如2000个字节 系统分成两个包,1400+包头 == 1500 假设包头100字节 600+包头 == 700 分两次发送出去

    62810

    新160个CrackMe分析-第4组:31-40(下)

    调试分析借助VB Decompiler辅助分析:这里界面上有两个函数,一个是按钮,另一个是输入Name的时候的事件:首先看Text2_change函数:就是根据Name有无输入值来判断是否启用按钮 Private...:(大部分代码没啥用,主要看自动注释的内容,还有函数call,是否是处理我们输入的内容,如果是,大概率就是我们要看的地方,否则先跳过吧)然后接下来计算了一下字符串长度,保存了起来,大概率是循环遍历字符要用到...,然后就用上了函数开头保存的一堆字符:这里就是第一处校验跳转了,这里累加Reverse每个字符的ascii的值,输入的累加值做对比,如果相同则不跳转再往下就是第二次校验对比了,首先是获取第2,4,7个字符然后对这三个字符进行一系列计算...,这里简述一下:– 取一个字符到ebx– ebx左移8位– ebx进行操作,一个数组中的字符– 如果ebx小于0了,则乘以-1– 循环最终将刚刚计算的值转换成字符串,计算字符串长度这里的字符串长度就是接下来循环的次数...程序:常规的获取输入判断是否为空:然后是常规的根据Name计算校验码环节:算法:遍历字符串,取每一个字节,+5然后是常规的比对环节 注册机注册码生成算法:(点快了创建成.NET6的了,干脆就用这个写了.

    30710

    14.2 Socket 反向远程命令行

    FILE *_popen(const char *command, const char *mode);该函数接受两个参数:command:字符串,包含要执行的命令行指令。...mode:字符串,用于指定管道的打开方式,支持 "r" "w" 两种模式。函数返回一个FILE结构体指针,该指针指向一个由命令产生的输出流。...最终,用户可以使用标准的文件读取操作(如 fread()、fgets() 等)从该文件指针中读取输出,了该函数的支持再配合套接字即可实现远程命令执行的效果;14.2.1 服务端实现如下代码实现了一个基于...当新的客户端连接时,程序会等待用户在终端上输入要执行的命令,并将该命令发送给客户端。客户端执行该命令并将执行结果回显到服务端,服务端则将回显结果输出到终端上。...] = { 0 }; // 执行远程命令 FILE *fp = _popen(buf, "r"); // 循环读取并发送数据,每次发送1024字节

    27440

    新160个CrackMe分析-第1组:1-10(上)

    ,然后弹框提示逆向分析IDA里选择MessageBoxA函数查交叉引用,跟踪到函数sub_401056中,这是CM的校验逻辑所在:首先先获取用户输入,然后生成两个字符串:(注释写错了,应该是do-while...:这里调用了两个自写的函数,首先是sub_401311:这里计算一个前14字节的校验,然后对前14字节依次与ABCD...进行异操作,将异的结果保存起来,校验也保存起来然后是下一个函数sub_40133C...:就是取后4字节出来现在这个校验算法已经清晰了起来:–计算一个校验,校验与0x12345678进行异,得到的结果与输入里的最后4字节进行比较–对输入的前14字节进行异操作,异后的结果作为参数去调用显示验证成功提示框那么序列号的生成就是...:a.随便输入一个14字节字符串作为用户名b.对这14字节依次异ABCD......的交叉引用,找到按钮控件的处理例程:首先是注册了SEH异常链,然后获取用户输入接下来就是比较+弹窗三连:输入字符硬编码字符串进行对比,如果相同,就弹窗提示成果如果不相同,就判断是否输入的内容,如果无内容

    1.2K20

    vc++菜鸟教程_vc6.0使用教程详解

    关于如何编写VCL控件,Delphi的书籍里都有介绍,在此简单的说明一下。 在Delphi中,TComponent是所有VCL构件的基础。编写非可视构件以便从TComponent派生。...Delphi提供了若干专门用于制作控件(可视构件)的基本构件类型,都是从TControlTWinControl派生而来。...在制作构件时,要接触到很多类很多的属性方法,在这里,列出了一些比较重要而且比较常用的类和它的属性方法。...这一个方法两个参数:AComponent,Operation。进入的参数通知构件现在对哪一个构件进行操作,进行什么样的操作。...,是否接受焦点等; ControlStyle属性:控制类型,如是否透明,是否3D Frame等等; Paint方法:该方法在接受到WM_PAINT消息后就被调用,画出自己; VCL

    1.6K10

    14.9 Socket 高效文件传输

    在传输文件的过程中,可以将文件分解为若干个数据包进行传输,以减少数据传输中的丢包传输错误。每个数据包的长度可以根据实际情况进行选择,通常选择1024字节更大,也可以设置成更小的值。...首先无论时服务端还是客户端都需要封装两个函数,其中GetFileName()函数用于当用户传入文件的具体路径信息时自动获取到该文件的文件名,第二个函数GetFileSize()则用于传入文件路径并自动获取到该文件的字节数...首先使用WSAStartup函数对Winsock库进行初始化。然后创建一个socket,设置IP地址、端口号等信息,并将该socket本地服务端的地址绑定起来。...当客户端连接请求到来时,accept函数会接收请求,并创建一个新的socket与客户端进行通信。在与客户端通信的过程中,可以通过sendrecv函数进行数据的传输,实现文件的上传下载功能。...首先使用WSAStartup函数对Winsock库进行初始化。然后创建一个socket,并设置服务端的IP地址端口号。

    66950

    使用socket实现TCPUDP传输

    结构等长的补充字节 }; 还有一个SOCKADDR结构上面这个的功能完全一样,但是SOCKADDR这个结构里边只有两个成员,一个是协议簇,一个是14个字节的char...需要注意的是,如果服务端程序先进行recv操作,则我们应该在客户端先进行send操作,若两个同时进行相同的操作的话,则会卡在当前的位置,因为recvsend都是阻塞型的函数。...而UDP也需要两个函数,叫做recvfromsendto,这两个TCP那两个有点不同,其声明如下: int recvfrom( SOCKET s,...sockaddr FAR *to, //sockaddr结构地址 int tolen //sockaddr结构大小地址 ); 注意,这两个函数里边一个...因此,上面两个函数提供了sockaddr结构的地址,用于保存从哪里发来的发送到哪里的地址信息。

    1.6K20
    领券