flat assembler
Message board for the users of flat assembler.

Index > IDE Development > Code fingerprinting in FRESH?

Author
Thread Post new topic Reply to topic
crc



Joined: 21 Jun 2003
Posts: 637
Location: Penndel, PA [USA]
crc 16 Jul 2004, 18:41
It was pointed out to me that FRESH appears to have some fingerprinting in the library code. While I have no problem with requiring credit to be mentioned (as specified in the comments), code fingerprinting is something I strongly dislike. Consider this code from mainloop.asm:

Code:

.translate:
        invoke  TranslateMessage, esi             ; So, standard processing.
        invoke  DispatchMessage, esi
        jmp     .msg_loop

.terminate:                                                ; Terminating application.
      if defined StrLib
        call    FreeStrings
      end if
        invoke  ExitProcess,[.msg.wParam]
        int3                         ; this instruction never will be executed.

.finish:
        pop     ebx edi esi
        return
endp
    



The code after the ExitProcess call can be used to identify an application as using the Fresh libraries. Is this the intended purpose? If not, why add code that will NEVER BE EXECUTED to a binary?

_________________
Charles Childers, Programmer
Post 16 Jul 2004, 18:41
View user's profile Send private message Visit poster's website Reply with quote
JohnFound



Joined: 16 Jun 2003
Posts: 3499
Location: Bulgaria
JohnFound 16 Jul 2004, 20:50
crc wrote:
It was pointed out to me that FRESH appears to have some fingerprinting in the library code.
The code after the ExitProcess call can be used to identify an application as using the Fresh libraries. Is this the intended purpose? If not, why add code that will NEVER BE EXECUTED to a binary?


No, this is not a fingerprint (and what fingerprint can be in the opensource program, that have license allowing you to use its source even for commercial applications???

Actually the code, after this "int3", will be executed - there is a jz instruction that jumps to this label.

The instruction "int3" was inserted among "invoke ExitProcess" and ".finish:" because of the better readability of the source - when there is no int3 it looks that after invoke, the program will continue to the next instruction - "pop", but this is not true, because of the internal nature of the ExitProcess API function.
So, I wanted to mark the fact most clearly.

If this instruction bothers you, you can simply remove it and recompile Fresh or your application. (this will not break the Fresh license in any way).

Regards.
Post 16 Jul 2004, 20:50
View user's profile Send private message Visit poster's website ICQ Number Reply with quote
crc



Joined: 21 Jun 2003
Posts: 637
Location: Penndel, PA [USA]
crc 16 Jul 2004, 22:45
Ok, I don't have a problem with that. I've run into development tools & libraries that do put binary fingerprints into code, so I'm a little paranoid when I run into odd, non-executed code sequences. Smile
Post 16 Jul 2004, 22:45
View user's profile Send private message Visit poster's website Reply with quote
Display posts from previous:
Post new topic Reply to topic

Jump to:  


< Last Thread | Next Thread >
Forum Rules:
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Copyright © 1999-2024, Tomasz Grysztar. Also on GitHub, YouTube.

Website powered by rwasa.