Objects in the heap also have a very regular structure. They all have code pointers as their first word, which point to info tables that also have a regular structure [1]. GHC produced code is probably one of the easiest to identify out of all compiled languages...

http://hackage.haskell.org/trac/ghc/wiki/Commentary/Rts/Storage/HeapObjects

Ben.


On 27/05/2010, at 1:15 PM, Daniel Peebles wrote:

Next up, binary obfuscation! Apple already uses these extensively in their Fairplay code. Surely it isn't against the rules (yet?) to apply them to your program before submitting it to the store? :P

On Wed, May 26, 2010 at 11:01 PM, Ben Lippmeier <benl@ouroborus.net> wrote:

On 27/05/2010, at 9:01 AM, Edward Kmett wrote:
> While we can all acknowledge the technical impossibility of identifying the original source language of a piece of code...


Uh,

desire:tmp benl$ cat Hello.hs
main = putStr "Hello"

desire:tmp benl$ ghc --make Hello.hs

desire:tmp benl$ strings Hello | head
Hello
base:GHC.Arr.STArray
base:GHC.Arr.STArray
base:GHC.Classes.D:Eq
base:GHC.Classes.D:Eq
failed to read siginfo_t
 failed:
Warning:
select
buildFdSets: file descriptor out of range

...




_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe