[HN Gopher] Decompiling x86 Deep Neural Network Executables
___________________________________________________________________
Decompiling x86 Deep Neural Network Executables
Author : matt_d
Score : 27 points
Date : 2022-10-09 18:18 UTC (4 hours ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| 37ef_ced3 wrote:
| This will not be able to reverse engineer fully-customized,
| fully-fused neural networks generated by NN-512:
|
| https://NN-512.com
|
| NN-512 generates custom code for all the operations, custom units
| of work for the threads, custom code around tensor edges,
| everything is fused and unrolled and customized. If they can
| deduce the network graph specification from the AVX-512 code, I
| will be astonished.
|
| If you can do it, show me. But I know you can't.
|
| Anyone who cares about model privacy will use their own variant
| of a tool like NN-512. It's security through obscurity, but
| that's the best you can hope for if you are distributing an
| executable.
| bertr4nd wrote:
| By "fully fused" do you mean no function call boundaries?
| ("Fused" is such an overloaded term)
| 37ef_ced3 wrote:
| Convolutions are fused into convolutions, elementwise
| operations are fused into convolutions, everything is inlined
| except where function calls are needed for pthread work units
| (and those work units are all custom/arbitrary).
| rootw0rm wrote:
| exe sample?
| c0balt wrote:
| I don't have a ms windows pc available nor the time to setup
| cross compilation for one rn. (Assuming you meant an
| executable file for one of those with 'exe').
|
| However you ahould be able be able to compile one for
| yourself by downloading, from e.g.
| https://nn-512.com/browse/DenseNet121, one of the generated C
| files and compiling it with GCC[0]. It shouldn't require any
| special dependencies beside AVX support on your CPU.
|
| Edit: Regarding general decompilation for neural networks
| this project might be interesting[1]
|
| [0]: https://gcc.gnu.org/ [1]:
| https://github.com/monkbai/DNN-decompiler
| rootw0rm wrote:
| OS isn't terribly important, but thanks for the reply. i
| only have AVX2 on this system tho
| 37ef_ced3 wrote:
| So...
|
| ...you were unable to decipher this Hacker News comment
| thread...
|
| ...unable find some C code and build it with GCC and make an
| executable for yourself...
|
| ...but you think you can reverse engineer the executable?
| [deleted]
| rootw0rm wrote:
| there's a million crackmes i can download right now, i
| don't really feel like chasing dependencies and building it
| myself. also, no AVX-512
| userbinator wrote:
| _If you can do it, show me. But I know you can 't_
|
| I've been out of the cracking scene for over a decade now, but
| I expect that to be none other than a challenge, having seen
| how far publicly available decompilers have progressed.
| 37ef_ced3 wrote:
| Here is the C code for a DenseNet-121 generated by NN-512:
|
| https://nn-512.com/browse/DenseNet121
|
| Even if you had the C code available to you, you would have a
| hard time producing the input graph.
|
| Good luck reverse engineering it after GCC has compiled it!
|
| NN-512 has an incredibly flexible code generator. It can
| easily be tweaked to produce completely different code for
| the same convolution, so everyone can apply their own twist
| to defeat the reverse engineers ("the intellectual property
| thieves").
| sudosysgen wrote:
| You're describing every single obfuscation scheme, they all
| get defeated. And you don't need to find the original graph
| either, they may be equivalent ones and that could work
| too.
| WanderPanda wrote:
| Oh looks like something AMD might want to upstream :p
___________________________________________________________________
(page generated 2022-10-09 23:00 UTC)