CSV.VLX - Visual LISP Compiled Binary Analysis¶
File: src/x86/v3_60/v3.60/Csv.VLX
Size: 1,103,600 bytes (1.05 MB)
Format: Visual LISP eXecutable (VLX)
Compiler: AutoCAD R15.0 (AutoCAD 2000) VLISP compiler
Note
VLX File Structure
VLX files are compiled Visual LISP applications. Unlike standard ZIP archives, this VLX uses a custom compression format (VRTLIB-1 header) with protected bytecode. The file contains compiled FAS (Fast-load AutoLISP) modules and cannot be directly decompiled without specialized tools.
File Header Analysis¶
Magic Bytes (first 16 bytes, hex):
5652544c49422d31 e0d61000a3070000
Header Signature: VRTLIB-1 (Visual Runtime Library, version 1)
Protection Mode: :protected . T (Protected/encrypted compilation)
ActiveX Support: :active-x . T (Uses ActiveX/COM features)
Namespace: :separate-namespace (Isolated from global AutoLISP)
Module Structure (from LOAD directive)¶
The VLX contains 109 compiled FAS modules organized by functionality:
Core Application Modules¶
(:fas "CSV") ; Main application entry point
(:fas "ENABLE") ; Feature enable/disable logic
(:fas "SETVARS") ; System variable management
(:fas "UPDVAR") ; Variable update routines
(:fas "ERR") ; Error handling
(:fas "WARNING") ; Warning messages
Project Management¶
(:fas "PROJECT") ; Project file management
(:fas "PJ_NAME") ; Project naming
(:fas "NEW") ; New project creation
(:fas "DWGNEW") ; New drawing setup
(:fas "DWGOLD") ; Legacy drawing compatibility
Panel Drawing & Layout¶
(:fas "PANEL") ; Panel definition
(:fas "DRAWPAN") ; Panel drawing generation
(:fas "MAKEPAN") ; Panel creation logic
(:fas "INSPANEL") ; Insert panel into drawing
(:fas "FINPAN") ; Finalize panel
(:fas "RENPAN") ; Rename panel
(:fas "PANATT") ; Panel attributes
Dialog Boxes (DCL/ActiveX)¶
The VLX includes 40+ dialog modules following the *_DLG naming pattern:
Base/Foundation Dialogs:
(:fas "BP_DLG") ; Base plate dialog
(:fas "FH_DLG") ; Foundation head dialog
(:fas "FS_DLG") ; Foundation slab dialog
(:fas "FV_DLG") ; Foundation void dialog
Panel Dialogs:
(:fas "PP_DLG") ; Panel parameters dialog
(:fas "SLAB_DLG") ; Slab panel dialog
(:fas "WALL_DLG") ; Wall panel dialog
(:fas "RO_DLG") ; Roof panel dialog
Feature Dialogs:
(:fas "CH_DLG") ; Chamfer dialog
(:fas "DL_DLG") ; Dowell/lift dialog
(:fas "DR_DLG") ; Dowell/rebar dialog
(:fas "MP_DLG") ; Mix profile dialog
(:fas "OPENING") ; Opening (window/door) dialog
Material & Connection Dialogs:
(:fas "MATL_DLG") ; Material properties dialog
(:fas "WC_DLG") ; Weld connection dialog
(:fas "WC_EDIT") ; Weld connection editor
(:fas "WD_DLG") ; Weld detail dialog
Batch & Calculation Dialogs:
(:fas "BTCH_DLG") ; Batch operations dialog
(:fas "CALC_DLG") ; Calculations dialog
(:fas "GRID_DLG") ; Grid layout dialog
(:fas "LYR_DLG") ; Layer management dialog
(:fas "SDWG_DLG") ; Setup drawing dialog
Drawing & Dimensioning¶
(:fas "DRAWDIM") ; Dimension drawing
(:fas "drawdimlst") ; Dimension list (lowercase = helper)
(:fas "BASEDIM") ; Base dimensioning
(:fas "DRWBAS") ; Drawing base setup
(:fas "LAYOUT") ; Layout management
(:fas "SLIDE") ; Slide file generation
(:fas "PLT") ; Plot/print
Feature Generation¶
(:fas "BOLT") ; Bolt placement
(:fas "BRACE") ; Bracing elements
(:fas "CHAMFER") ; Chamfer edges
(:fas "COLUMN") ; Column placement
(:fas "DOWELS") ; Dowel placement
(:fas "FOOTING") ; Footing generation
(:fas "MITER") ; Miter joints
(:fas "OPENING") ; Openings (windows/doors)
(:fas "WELD") ; Weld symbols
(:fas "WELDCONN") ; Weld connections
Engineering Calculations¶
(:fas "CENTGRAV") ; Center of gravity
(:fas "FEATURE") ; Feature calculations
(:fas "POINTS") ; Point calculations
(:fas "THICK") ; Thickness calculations
Data Import/Export¶
(:fas "dreng") ; Drawing engineering data (lowercase = utility)
(:fas "drread") ; Drawing read
(:fas "mbeng") ; Main book engineering
(:fas "mbread") ; Main book read
(:fas "wsbeng") ; Work set book engineering
(:fas "wsbread") ; Work set book read
(:fas "engexp") ; Engineering export
(:fas "engimp") ; Engineering import
Automation & Batch Operations¶
(:fas "BTCH") ; Batch processing
(:fas "BPAUTO") ; Base plate automation
(:fas "PPAUTO") ; Panel placement automation
(:fas "PPCENT") ; Panel placement center
Validation & Checking¶
(:fas "CHRCHK") ; Character check
(:fas "DBCHK") ; Database check
(:fas "DIRCHK") ; Directory check
(:fas "RANGCHCK") ; Range check (note: typo in original)
List Management & Sorting¶
(:fas "NEWLIST") ; New list creation
(:fas "WCLIST") ; Weld connection list
(:fas "WCEDLST") ; Weld connection edit list
(:fas "STRLSORT") ; String list sort
Block & Attribute Management¶
(:fas "MKBLK") ; Make block
(:fas "nbblock") ; Note block (lowercase = utility)
(:fas "nb_dlg") ; Note block dialog
(:fas "nbenable") ; Note block enable
Revision & Markup¶
(:fas "REVISION") ; Revision control
(:fas "DONEREV") ; Done revision
(:fas "ELEVMRKR") ; Elevation marker
Page & Layout Management¶
(:fas "FPAGE") ; Foundation page
(:fas "WCPAGE") ; Weld connection page
(:fas "WDPAGE") ; Weld detail page
Helper Modules¶
(:fas "editbx") ; Edit box utility (lowercase = helper)
(:fas "native") ; Native code interface
(:fas "OKCANHLP") ; OK/Cancel/Help button helper
(:fas "PICK") ; Entity picking
(:fas "SAVELAY") ; Save layer state
(:fas "GREEN") ; Green mode (?)
(:fas "INVAR") ; Input variable
(:fas "SCR") ; Script generation
(:fas "CONVERT") ; Data conversion
(:fas "TILTUP") ; Tilt-up specific features
Naming Convention Notes:
UPPERCASE
.fasnames = Main moduleslowercase
.fasnames = Helper/utility modules*_DLGsuffix = Dialog box modules*_EDITsuffix = Editor modules*enablesuffix = Enable/disable feature modules*read/*eng= Data I/O modules
Technical Observations¶
1. Protection & Security¶
Protected Compilation:
:protected . Tmeans source code is encryptedCannot be decompiled without AutoCAD’s internal VLISP tools
FAS bytecode is proprietary to AutoCAD’s Visual LISP interpreter
2. ActiveX/COM Integration¶
ActiveX Enabled:
:active-x . Tindicates use of COM objectsLikely used for:
AutoCAD object model access
Dialog box creation (Visual LISP DCL vs ActiveX forms)
External application integration (Excel, Access, etc.)
3. Namespace Isolation¶
Separate Namespace:
:separate-namespaceprevents global pollutionFunctions defined in VLX don’t conflict with user’s AutoLISP code
Must be explicitly loaded/unloaded
4. Module Count¶
109 FAS files compiled into single VLX
Organized by feature domain (dialogs, drawing, calculations, etc.)
Modular architecture allows selective loading
5. File Size Distribution¶
Total VLX: 1,103,600 bytes (1.05 MB)
Average per FAS: ~10 KB
Suggests most FAS files are small to medium dialog/utility modules
Larger modules likely: CSV.FAS (main), PANEL.FAS, DRAWPAN.FAS
Comparison with v7.0 VLX¶
v3.60 VLX:
Size: 1,103,600 bytes (1.05 MB)
Modules: 109 FAS files
Format: VRTLIB-1
v7.0 VLX (for comparison):
Size: 813,096 bytes (794 KB)
Modules: Unknown (requires separate analysis)
26% smaller than v3.60
Hypothesis: v7.0 may have:
Removed obsolete modules
Optimized/compressed FAS files
Removed sample/demo code
Consolidated duplicate functions
Decompilation Possibilities¶
Option 1: Official AutoCAD VLISP¶
If you have AutoCAD 2000 with Visual LISP:
; In AutoCAD command line
(vl-load-vlx "Csv.vlx") ; Load the VLX
(vlax-dump-object (vlax-get-acad-object)) ; Inspect loaded functions
Option 2: Extract Individual FAS Files¶
VLX is compressed with a custom algorithm. Possible approaches:
Custom VLX Extractor - Reverse engineer VRTLIB-1 format
AutoLISP VLX-UNPROT - Third-party tools (risky, may not work on protected VLX)
Binary Analysis - Locate FAS boundaries in hex editor
Option 3: Runtime Inspection¶
Since we have source code for v3.60 LISP files in src/x86/v3_60/v3.60/, we can:
Compare function names in source vs VLX string table
Validate that VLX contains compiled versions of known modules
Identify any modules NOT in the source tree (proprietary/lost?)
Analysis Tools¶
Created: scripts/analyze-vlx.ps1 - PowerShell VLX analyzer
Usage: .\scripts\analyze-vlx.ps1 -VlxPath "path\to\file.vlx"
Features:
Attempts VLX extraction (if unprotected)
Lists FAS modules from LOAD directive
Extracts readable strings (function names, messages)
Identifies file format and protection level
Document Metadata¶
Created: 2025
Analysis Method: Binary string extraction + VLX header parsing using analyze-vlx.ps1
Limitations: Cannot decompile protected FAS bytecode without specialized tools
Completeness: Module list complete (109 modules identified); internal logic remains opaque
Next Steps:
Map FAS modules to LSP source files in
src/x86/v3_60/v3.60/Identify missing source code for modules without LSP files
Test VLX loading on AutoCAD 2020/2024/2026
Plan recompilation or migration strategy for P3
End of Document