VLX file security

VLX file security

mmawad
Enthusiast Enthusiast
9,552 Views
9 Replies
Message 1 of 10

VLX file security

mmawad
Enthusiast
Enthusiast

Hello every one,

I'am not trying to hack a compiled routine, but should I trust the compiled vlx file "by vlide new application wizard" as I want to distribute some lisp routine that will contain some confidential information "mostly logic operations" and I'm sure that some with programming background will be eager find it out.

So I've done my research and found a tool to convert vlx back to fas, then another tool to decrypt that fas file, and a tool to disassemble the fas file.

I'm attaching a simple lisp routine, its compiled vlx, the decrypted fas file, and the disassembly text file. As I does not understand what had happened.

PLEASE NOTE that the decryption process for the fas file took almost a day

0 Likes
Accepted solutions (3)
9,553 Views
9 Replies
Replies (9)
Message 2 of 10

cadffm
Consultant
Consultant

Is it just an information or do you have a question?

 

Sebastian

Message 3 of 10

mmawad
Enthusiast
Enthusiast

i'm asking if the fas file security have been compromised ?

0 Likes
Message 4 of 10

doaiena
Collaborator
Collaborator

This isn't anything new. The level of secutity has remained the same for more than 15 years. If someone has the skill to completely reverse engineer your super secret algorithm from a vlx, they could write it on their own from scratch.

0 Likes
Message 5 of 10

hak_vz
Advisor
Advisor
Accepted solution

@mmawad wrote:

Hello every one,
PLEASE NOTE that the decryption process for the fas file took almost a day


Almost every encrypted file can be decrypted.

If you think that your data and your project will intrigue someone to break the code then don't do it at all or find the way to make it hardly readable even when decrypted.

In professionally  written applications that I had a chance to work with,  code is divided in many small files that are all encrypted and distributors don't bother if someone will try to break it.

Miljenko Hatlak

EESignature

Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.
0 Likes
Message 6 of 10

cadffm
Consultant
Consultant

"i'm asking if the fas file security have been compromised"

 

Not more or less then all the time.

The answer to this question you have to answer yourself.

 

Look at the result and then decide if it is acceptable to you or not. But in all respects, mathematical functions? Respect if you have to protect them because they are unknown to the rest of the world.

 

Try that: Take some few bucks and go to an onlone freelancer portal gor programmers.

Result should be a well working program (instead of decrypted fragments).

Sebastian

0 Likes
Message 7 of 10

john.uhden
Mentor
Mentor
Accepted solution

This has been discussed before.  I don't think there is any way to decompile or reverse engineer a .VLX or .FAS file.  The only things that can be exposed (extracted) are embedded textual files including DCL.

John F. Uhden

0 Likes
Message 8 of 10

john.uhden
Mentor
Mentor
Accepted solution

As a follow-up, while the code is not decryptable, your functions will be exposed after running if you don't localize them.

For example:

(defun c:Gizmo ( / *error* this that etc)

  (defun *error* ...)

  (defun this (input / output) ...)

  (defun that (input / output) ...)

  (defun other (input) ...)

  (princ)

)

See that the functions this and that are local, but other will remain after Gizmo is run and its name will show up in (atoms-family).  So you could, without localizing, allow your functions to be used by others.  But even then, don't overtrepidate unless you have used defun-q.

John F. Uhden

0 Likes
Message 9 of 10

shivashankar_dm
Community Visitor
Community Visitor

where to find the tool? 

 

0 Likes
Message 10 of 10

diagodose2009
Collaborator
Collaborator

You must pre-compile as jc_pin15 for hidden ascii-text before the vlx, before .vlx

(Defun dfn_cmd_undo (m169 / rr u c s a e w x y z)
 (setq;|a000|;
	 u ".UNDO"
	 c (jc_pin15 19352 (list m169))) (jc_pin15 10470 (list 0)) (jc_pin15 29767 (list)) (setq;|a000|;
	 s const_cadundo) (setq;|a000|;
	 a (jc_pin15 16387 (list "UNDOCTL"))) (if (=  c (chr 98)) (setq;|a000|;
	 e (command u "_BEGIN")
	 s (strcat c (jc_pin15 64752 (list s 2))))) (if (and  (=  c (chr 101)) (=  (jc_pin15 15542 (list s)) (chr 98))) (setq;|a000|;
	 e (command u "_END")
	 s (strcat (chr 69) (jc_pin15 64752 (list s 2))))) (if (and  (=  c (chr 117)) (=  (jc_pin15 3629 (list s)) (chr 49))) (setq;|a000|;
	 e (command u "_end")
	 e (command u "1")
	 s (strcat "E0" (jc_pin15 64752 (list s 3))))) (setq;|a000|;
	 w (=  (boole 1  a 2) 2)
	 x (=  (boole 1  a 1) 1)
	 y (jc_pin15 64752 (list s 3 1))
	 z (jc_pin15 64752 (list s 4 1))) (if (=  c (chr 49)) (progn  (if w (command u "_control" "_all" u "_auto" "_off") (if x (command u "_all" u "_auto" "_off"))) (setq;|a000|;
	 s (strcat (jc_pin15 15542 (list s)) (if w "C" "0") (if x "A" "0"))))) (if (=  c (chr 48)) (progn  (if (=  y "C") (command u "_control" "_none")) (if (=  z "A") (command u "_control" "_one")))) (setq;|a000|;
	 const_cadundo s) (jc_pin15 10470 (list nil)) (setq;|a000|;
	 rr a) 
rr)

,

please you compare  one same routine . My question = Can you understand the top-dfn_cmd_undo as like

bottom-dfn_cmd_undo?  If you not understand in full-source.ascii.text, then I believe even even  You cannot half-understand  inside .vlx. Anyway You can make .vlx the top-dfn_cmd_undo anytime , and You can send the top.vlx tou your "client"  .. The problem is encrypt more-dynamically the top-top-dfn_cmd_undo.lsp, then You glide , then you got the answer, but We need more help , is very hard very more more deep-encrypted solution, Today is only stage1 of your-question.

 

(Defun dfn_cmd_undo (m169 / rr u c s a e w x y z)
 (setq;|a000|;
	 u ".UNDO"
	 c (str_lwr m169)) (dfn_cmd_echo 0) (dfn_cmd_cancel) (setq;|a000|;
	 s const_cadundo) (setq;|a000|;
	 a (getvar "UNDOCTL")) (if (=  c (chr 98)) (setq;|a000|;
	 e (command u "_BEGIN")
	 s (strcat c (substr s 2)))) (if (and  (=  c (chr 101)) (=  (str_chr1 s) (chr 98))) (setq;|a000|;
	 e (command u "_END")
	 s (strcat (chr 69) (substr s 2)))) (if (and  (=  c (chr 117)) (=  (str_chr2 s) (chr 49))) (setq;|a000|;
	 e (command u "_end")
	 e (command u "1")
	 s (strcat "E0" (substr s 3)))) (setq;|a000|;
	 w (=  (boole 1  a 2) 2)
	 x (=  (boole 1  a 1) 1)
	 y (substr s 3 1)
	 z (substr s 4 1)) (if (=  c (chr 49)) (progn  (if w (command u "_control" "_all" u "_auto" "_off") (if x (command u "_all" u "_auto" "_off"))) (setq;|a000|;
	 s (strcat (str_chr1 s) (if w "C" "0") (if x "A" "0"))))) (if (=  c (chr 48)) (progn  (if (=  y "C") (command u "_control" "_none")) (if (=  z "A") (command u "_control" "_one")))) (setq;|a000|;
	 const_cadundo s) (dfn_cmd_echo nil) (setq;|a000|;
	 rr a) 
rr)

Very soon m I hope I got got sgte stage2 of your-question.😍 Eu multumesc tie ArsenieBoca🎯, Doamne milueste-ne.. Doamne milueste Ilie Lacatusu.

0 Likes