loadrunner Lr_类函数之 lr_get_trans_instance_duration()

本文介绍lr_get_trans_instance_duration函数的使用方法,该函数用于获取LoadRunner中事务实例的持续时间,支持通过句柄指定具体事务实例,适用于性能测试中的事务时间分析。

lr_get_trans_instance_duration()

返回事务实例的持续时间

double lr_get_trans_instance_duration(long trans_handle);

 

参数说明:

trans_handle:事务句柄。

 

lr_get_trans_instance_duration函数以秒为单位返回打开的事务实例的持续时间,直到此时为止。 使用此函数可确定事务结束前的总事务时间。

此函数和lr_get_transaction_duration之间的区别在于,您可以通过其句柄指定事务实例。 使用lr_get_transaction_duration,可以按其名称指定独立事务。

trans_handle是对lr_start_transaction_instance的调用的返回值。

lr_get_trans_instance_duration仅对打开的事务返回大于零的值。

要确定其他事务统计信息,例如思考时间和浪费的时间,请使用适当的事务函数。

示例:lr_get_trans_instance_duration

在以下示例中,lr_get_trans_instance_duration函数检查父事务实例和子事务实例的持续时间,并将它们发送到Output窗口。

#include“as_web.h”

Action()

{

    long parent_trans_handle;

    long child_handle;

    double trans_time;

    int rc;

 

    / *启动主事务实例。

        传递0作为父句柄表示

        事务没有父类。

        函数返回值是在其他中使用的句柄

        事务实例函数。 * /

    parent_trans_handle =

        lr_start_transaction_instance(“ParentTransaction”,0);

    / *执行业务流程,这里用a表示

        单个web_url调用。 * /

    web_url(“web_url”,“URL = http://www.mercury.com”,LAST);

    rc = lr_get_trans_instance_status(parent_trans_handle);

    if(rc == LR_FAIL){

     / * web_url失败了事务。

        没有点继续,因为

        未来的电话可能也会失败。 * /

     lr_end_transaction_instance(parent_trans_handle,LR_FAIL);

     return ;

    }}

 

    / *启动子事务实例。

        通过从另一个返回的句柄

        lr_start_transaction_instance调用为

        句柄参数使这个事务a

        子例程。 * /

    child_handle =

        lr_start_transaction_instance

            (“ChildTransInstance”,parent_trans_handle);

    //执行业务流程

    web_url(“web_url”,

        “URL = http://astra.mercuryinteractive.com”,LAST);

    / *获取子事务实例的持续时间。

        传递实例句柄。

        持续时间(秒)是返回值。 * /

    //总时长

    trans_time =

        lr_get_trans_instance_duration(child_handle);

    lr_output_message

        (“第一个子实例时间是%lf秒。”,

        trans_time);

    //思考时间

    trans_time =

        lr_get_trans_instance_think_time(child_handle);

    lr_output_message

        (“第一个子实例认为时间是%lf秒。”,

         trans_time);

    //浪费时间

    trans_time =

        lr_get_trans_instance_wasted_time(child_handle);

    lr_output_message

        (“第一个子实例浪费时间是%lf秒。”,

        trans_time);

    //结束子事务实例

    lr_end_transaction_instance(child_handle,LR_PASS);

    / *获取父事务实例的持续时间,

        其包括子事务持续时间。 * /

    trans_time =

        lr_get_trans_instance_duration(parent_trans_handle);

    lr_output_message

        (“父事务持续时间为%lf秒”。,

        trans_time);

    //结束父事务实例

    lr_end_transaction_instance(parent_trans_handle,

        LR_PASS);

    return 0;

}}

 

 

内容概要:本文详细记录了对一个Android ARM64静态ELF文件中字符串加密机制的逆向分析过程。该ELF文件的所有字符串均被加密,无法通过常规strings命令或IDA直接识别。作者通过分析发现,加密字符串存储在.rodata段,其解密所需信息(包括密文地址、长度和16位密钥)保存在.data.rel.ro段的40字节描述符中。核心解密函数sub_10F408采用自反的双pass流密码算法,结合固定密钥KEY_TERM(由.data段24字节数据计算得出),实现字节级非线性、位置与长度相关的加密。文章还复现了完整的Python解密脚本,并揭示了该保护机制的本质为代码混淆而非强加密,最终成功批量解密全部956条字符串,暴露程序真实行为,如shell命令模板、设备标识篡改、网络重置等操作。此外,文中还提及未启用的自定义壳框架及其反dump设计。; 适合人群:具备逆向工程基础的安全研究人员、二进制分析人员及对ELF保护技术感兴趣的开发者。; 使用场景及目标:①学习ELF二进制中字符串加密的典型实现方式与逆向突破口;②掌握从结构识别、函数追踪到算法还原的完整逆向流程;③理解“绑定二进制”的完整性校验设计及其局限性;④实践编写IDAPython脚本自动化提取与解密敏感数据。; 阅读建议:此资源以实战案例驱动,不仅展示技术细节,更强调逆向思维与验证方法,建议读者结合IDA调试环境,逐步跟随文中步骤进行动态分析与算法验证,深入理解每一步的推理依据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值