zoukankan      html  css  js  c++  java
  • StartService VB中的调用方法

    Api Loader 中的声明为:

    Private Declare Function StartService Lib "advapi32.dll" Alias "StartServiceA" (ByVal hService As Long, ByVal dwNumServiceArgs As Long, ByVal lpServiceArgVectors As Long) As Long

    如果第二个参数 dwNumServiceArgs 不为 0 ,则表示 有附加参数 ,附加参数 在第三个参数 lpServiceArgVectors 指向的地址

    假如参数为 ABCD ,如果直接按下面的操作:

    Dim sArgs As String

    sArgs = "ABCD"
    r = StartService(ser, 1, StrPtr(sArgs))

    在调试运行状态下,运行没问题,对应的服务也能正常启动,但是编译后运行程序会崩溃

    后来,通过调试器 x64dbg 查看正常程序的调用参数,修改代码如下,程序可以正常运行不会崩溃

    Dim sArgs As String, pStr As Long
    sArgs = "ABCD"
    pStr = StrPtr(sArgs)
    'r = StartService(ser, 1, StrPtr(sArgs))
    r = StartService(ser, 1, VarPtr(pStr))

    这可能就是指针的指针了

  • 相关阅读:
    简单说说 Java 的 JVM 内存结构
    cpu怎么实现运算的
    triplet
    LCT的一些坑【已经变成坑点集合了233】
    插头DP学习笔记
    一个坑-卡常
    NOIP2017游记
    洛谷P4015 运输问题
    线性基学习笔记
    洛谷P4331[BOI2004] sequence
  • 原文地址:https://www.cnblogs.com/czcbzc/p/15043385.html
Copyright © 2011-2022 走看看