首页
社区
课程
招聘
[讨论]求教Labview编译的程序要如何入手?
发表于: 2026-5-26 15:01 973

[讨论]求教Labview编译的程序要如何入手?

2026-5-26 15:01
973

一、为何有此疑问?

同事写的labview程序,在终端运行时会随机出现“卡住”的现象。中等概率事件,有时候一天出现几次,有时候一周都不会出现。软件中插入调试日志等手段后,仍未找到原因。为了探索问题点,想要通过“附件进程”的方式,协助debug。


二、一些准备工作。

因为对于labview我是一个完全不懂的小白,只好通过网络搜寻了一些帖子来学习思路。

帖子:bbs.kanxue.com/thread-170771.htm

回帖讯息:

曾半仙 12
    9 楼 
Labview编译的程序和PB/VB类似都要用专用工具分析,怎么入手要看分析结果,发布过程如果去掉过代码视图后,基本就无法分析流程,只能打hook lvrt的主意了。
2013-5-19 14:11

从中得到的讯息是:要从LabVIEW运行时库(lvrt.dll) 入手。


帖子:fa9K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3f1#2x3Y4m8G2K9X3W2W2i4K6u0W2j5$3&6Q4x3V1k6@1K9s2u0W2j5h3c8Q4x3X3b7I4x3K6R3H3z5o6R3J5i4K6u0V1x3g2)9J5k6o6q4Q4x3X3g2Z5N6r3#2D9

帖子摘要:

......

今天的主题是追踪内存,看看其与其他语言有啥区别
我用labview 2020,设计了一个简单比较

然后用OD去跟

发现还是区别很大

一堆的call 而且都不系统的api

但都是lvrt.xxxxx

......

从中得到的讯息是:寻找合适的函数lvrt.xxxxx作为突破口。


通过WindowsAPI 获取到本地labview2013 32位版本生成的测试程序的信息:

请输入目标进程的 PID: 6888
已选择 PID=6888
[+] 进程已打开, 句柄=0x000000E4
[*] 目标进程位数: 32 位
[+] lvrt.dll 基址: 0x30000000
[*] 正在解析 lvrt.dll 符号表...
[+] 已解析 1987 个 lvrt.dll 导出符号
[*] lvrt.GetDSFromVIRef 函数表基址: 0x304D7540
[*] lvrt.LVRTTable 函数表基址: 0x30C40DB0


请选择操作:
1. 穷举扫描所有表偏移 (显示函数名)


开始穷举扫描 LVRTTable (偏移 0 ~ 0x1B0C, 步长4)...
偏移 0x000 (索引   0): 0x307ABE60 -> SwapWL
偏移 0x004 (索引   1): 0x307ABE80 -> SwapBW
偏移 0x008 (索引   2): 0x307ABEA0 -> RevBL
偏移 0x00C (索引   3): 0x307ABEE0 -> RevBQ
偏移 0x010 (索引   4): 0x30799020 -> Abs
偏移 0x014 (索引   5): 0x30798FE0 -> Min
偏移 0x018 (索引   6): 0x30799000 -> Max
偏移 0x01C (索引   7): 0x307988D0 -> IsDigit
偏移 0x020 (索引   8): 0x307988F0 -> IsAlpha
偏移 0x024 (索引   9): 0x30798E90 -> IsLower
偏移 0x028 (索引  10): 0x30798EC0 -> IsUpper
偏移 0x030 (索引  12): 0x307AE840 -> CPStrSize
偏移 0x034 (索引  13): 0x307AE870 -> CPStrCmp
偏移 0x038 (索引  14): 0x307AEE00 -> CPStrInsert
偏移 0x03C (索引  15): 0x307AEA80 -> CPStrRemove
偏移 0x040 (索引  16): 0x307AEC20 -> CPStrReplace
偏移 0x044 (索引  17): 0x307AEBB0 -> CPStrIndex
偏移 0x048 (索引  18): 0x30798980 -> StrLen
偏移 0x04C (索引  19): 0x307989A0 -> StrCat
偏移 0x050 (索引  20): 0x307989D0 -> StrCpy
偏移 0x054 (索引  21): 0x307989F0 -> StrNCpy
偏移 0x058 (索引  22): 0x30798A40 -> StrCmp
偏移 0x05C (索引  23): 0x30798B20 -> StrNCmp
偏移 0x060 (索引  24): 0x30794330 -> BlockCmp
偏移 0x064 (索引  25): 0x3079AC80 -> PStrCat
偏移 0x068 (索引  26): 0x3079ACD0 -> PStrCpy
偏移 0x06C (索引  27): 0x3079ACF0 -> PStrNCpy
偏移 0x070 (索引  28): 0x3079AD90 -> PStrCaseCmp
偏移 0x074 (索引  29): 0x3079AE10 -> PPStrCaseCmp
偏移 0x078 (索引  30): 0x3079B070 -> PToCStr
偏移 0x07C (索引  31): 0x3079B0B0 -> CToPStr
偏移 0x084 (索引  33): 0x307AE280 -> LToPStr
偏移 0x088 (索引  34): 0x307ADF50 -> PToLStr
偏移 0x094 (索引  37): 0x307B93D0 -> QSort
偏移 0x098 (索引  38): 0x307A9210 -> FPrintf
偏移 0x0A0 (索引  40): 0x30798E20 -> SPrintf
偏移 0x0A4 (索引  41): 0x30798E60 -> SPrintfp
偏移 0x0A8 (索引  42): 0x3079B200 -> PPrintf
偏移 0x0AC (索引  43): 0x3079B240 -> PPrintfp
偏移 0x0F8 (索引  62): 0x30799030 -> ConvertNum
偏移 0x104 (索引  65): 0x30798D80 -> HexChar
偏移 0x108 (索引  66): 0x307B93F0 -> BinSearch
偏移 0x114 (索引  69): 0x307B8A20 -> Pin
偏移 0x178 (索引  94): 0x307C17B0 -> RandomGen
偏移 0x180 (索引  96): 0x30797440 -> MilliSecs
偏移 0x184 (索引  97): 0x30837780 -> TimeInSecs
偏移 0x188 (索引  98): 0x30838050 -> DateCString
偏移 0x18C (索引  99): 0x30838090 -> TimeCString
偏移 0x190 (索引 100): 0x308380B0 -> ASCIITime
偏移 0x194 (索引 101): 0x30837A60 -> SecsToDate
偏移 0x198 (索引 102): 0x30837AD0 -> DateToSecs
偏移 0x19C (索引 103): 0x307ADB80 -> LStrCmp
偏移 0x1A4 (索引 105): 0x308387E0 -> TToStd
偏移 0x1A8 (索引 106): 0x308387E0 -> TToStd
偏移 0x420 (索引 264): 0x30860E40 -> TrackSBarEvent
偏移 0x424 (索引 265): 0x30860D50 -> TrackSBar
偏移 0x428 (索引 266): 0x30860A40 -> DrawSBar
偏移 0x42C (索引 267): 0x3078E500 -> AZDisposeHandle
偏移 0x430 (索引 268): 0x3078D810 -> AZDisposePtr
偏移 0x434 (索引 269): 0x3078E510 -> AZGetHandleSize
偏移 0x43C (索引 271): 0x3078F100 -> DSHandToHand
偏移 0x440 (索引 272): 0x3078DB20 -> AZHUnlock
偏移 0x444 (索引 273): 0x3078DB20 -> AZHUnlock
偏移 0x450 (索引 276): 0x3078DB90 -> AZHPurge
偏移 0x454 (索引 277): 0x3078DC40 -> AZHNoPurge
偏移 0x458 (索引 278): 0x3078F0E0 -> AZNewHandle
偏移 0x45C (索引 279): 0x3078F0F0 -> AZNewHClr
偏移 0x460 (索引 280): 0x3078D820 -> AZNewPtr
偏移 0x464 (索引 281): 0x30732B40 -> AZNewPClr
偏移 0x474 (索引 285): 0x3078D830 -> AZRecoverHandle
偏移 0x478 (索引 286): 0x3078E520 -> AZSetHandleSize
偏移 0x47C (索引 287): 0x3078E530 -> AZSetHSzClr
偏移 0x48C (索引 291): 0x3078D840 -> DSHeapCheck
偏移 0x490 (索引 292): 0x3078DCF0 -> AZCheckHandle
偏移 0x494 (索引 293): 0x3078D5C0 -> DSCheckPtr
偏移 0x49C (索引 295): 0x3078D420 -> DSDisposePtr
偏移 0x4A4 (索引 297): 0x3078D490 -> DSNewPtr
偏移 0x4A8 (索引 298): 0x3078D940 -> DSNewPClr
偏移 0x4B8 (索引 302): 0x3078D560 -> DSRecoverHandle


我将不断补充搜索到的讯息。


传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回