51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

测试开发精英班,通向高级软件测试工程师【周活动】 找茬--心里圈的故事 !【长期招募】博为峰网校招聘兼职讲师!横扫BAT,Python全栈测试开发技能大全
【106期】:如何树立正确使用Python做开发的习惯 【征稿】提交你的测试成绩单! 【专题】用尽一切办法只为让你学好用例 自学软件测试那点事
查看: 3708|回复: 0

让开发将加密的部分封装成一个C的dll

[复制链接]
  • TA的每日心情

    2016-10-29 22:53
  • 签到天数: 18 天

    连续签到: 1 天

    [LV.4]测试营长

    发表于 2016-2-20 08:27:06 | 显示全部楼层 |阅读模式
    本帖最后由 a296540859 于 2016-2-20 08:30 编辑

    在进行LoadRunner打压时,有时候请求的参数是加密的,而加密的法则是通过调用一段DLL来生成的。这样通过参数化模拟的打压请求就无法达到预期的效果,这时候就需要调用DLL后,拿到DLL的返回值,用返回值来构造打压请求。那么怎么调用DLL呢?
      首先说一下调用DLL需要的条件:
      1、 VuGen只能识别标准C编译的DLL, 所以使用VC6创建的函数必须在函数开头加上extern "C",它告诉编译器对这个函数按照标准C的方式进行编译。
      2、 需要有标准C的导出函数。可以通过Dependency Walker查看:

      满足这两点后,就可以在LoadRunner脚本中调用此DLL了。
      调用外部DLL的方法有两种:
      ● (单个脚本中)在脚本中是使用 lr_load_dll 函数。
      ● (全局设置,所有脚本)通过修改 mdrv.dat 文件实现。
      第一种方法,可以直接通过lr_load_dll函数来实现。

      这样就可以直接保存返回值用户后续的打压参数了。但是这种方法是单个脚本才能用的,其他脚本不能使用。
      第二种方法是全局设置,相当于将dll加载到LoadRunner的DLL库中。所有脚本你都可以调用。
      1、将需要的DLL拷贝到LoadRunner安装路径的Bin目录下。
      2、修改mdrv.dat文件,找到[lrun_api]节点,在后面加上一句:
      WINNT_DLLS=XXX.dll
      这样,就不用lr_load_dll函数,直接调用XXX.dll里面的函数了。
      另外,在具体通过agent打压时,会发现报如下错误:
      Error: CCI security error:You are running under secure mode and the function ci_load_dll is not allowed in this mode.
      这是由于远程agent打压机无法加载DLL导致的。解决办法是在添加脚本时,将引用的DLL也添加进来。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2019-9-21 19:18 , Processed in 0.058480 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2019 Comsenz Inc.

    快速回复 返回顶部 返回列表