Live data from Hacker News

Show HN: Protecting Your Software Assets Using OpenGL

stealthy.io

1–10 of 21 posts

Re: Show HN: Protecting Your Software Assets Using OpenGL

#2
How often do game assets get stolen? From my perspective copy-cats emulate the style and the gameplay, but never outright steal assets; and players who do piracy copy the game wholesale, so that encryption does nothing there. All this kind of encryption does is mess with players who fancy customizing things.

Re: Show HN: Protecting Your Software Assets Using OpenGL

#3
post #2

How often do game assets get stolen? From my perspective copy-cats emulate the style and the gameplay, but never outright steal assets; and players who do piracy copy the game wholesale, so that encryption does nothing there. All this kind of encryption does is mess with players who fancy customizing things.

From what I understand when I read the blog, they're trying to demonstrate that you can use encryption/decryption on the GPU to create some form of DRM unique to your application. Their previous blog cites they are into researching some form of copy-protection systems.

As a once-upon-a-time iOS game dev, I can see it being used to handle In-App purchases where your game will only progress after you have purchased something and you get a key to decrypt the next level stuff. I can see it being used in that way. That's why I posted it here. It seemed interesting.

Re: Show HN: Protecting Your Software Assets Using OpenGL

#4
And what exactly is preventing me from injecting my custom libGL.so that hooks onto the `glDraw…` calls, and downloads the current contents of the bound textures using `glGetTexImage`?

Also OpenGL debugging tools do exist and they work by hooking OpenGL and using the OpenGL accessor functions to show you the contents of every OpenGL object.

Re: Show HN: Protecting Your Software Assets Using OpenGL

#5

And what exactly is preventing me from injecting my custom libGL.so that hooks onto the `glDraw…` calls, and downloads the current contents of the bound textures using `glGetTexImage`? Also OpenGL debugging tools do exist and they work by hooking OpenGL and using the OpenGL accessor functions to show you the contents of every OpenGL object.

Like this (and this is not done to harm anyone) - http://www.wadeb.com/eq/

Re: Show HN: Protecting Your Software Assets Using OpenGL

#7
post #5

And what exactly is preventing me from injecting my custom libGL.so that hooks onto the `glDraw…` calls, and downloads the current contents of the bound textures using `glGetTexImage`? Also OpenGL debugging tools do exist and they work by hooking OpenGL and using the OpenGL accessor functions to show you the contents of every OpenGL object.

Like this (and this is not done to harm anyone) - http://www.wadeb.com/eq/

Kind of, but more rather like this: https://github.com/mazzoo/ogldump

Actually you'd not even need to inject a libGL.so at all. You could as well just modify the PLT/GOT entries for the glDraw… functions to a dumper function and then jmp to the actual glDraw… call. This could be done using the system debugging APIs.

Re: Show HN: Protecting Your Software Assets Using OpenGL

#8

I think I can hook the opengl driver and get the shader source code and the encryption key. and redo the decryption on cpu.

You don't have to go so far. Just inject a little bit of code into the game process that calls a dumper function just before (or after, it doesn't really matter) calls to `glDraw…` to dump out all the data of the currently bound buffer objects and textures. glGetTexImage, glGetBufferData are your friends.

Re: Show HN: Protecting Your Software Assets Using OpenGL

#9
post #5

Earlier quoted context omitted.

Like this (and this is not done to harm anyone) - http://www.wadeb.com/eq/

Kind of, but more rather like this: https://github.com/mazzoo/ogldump Actually you'd not even need to inject a libGL.so at all. You could as well just modify the PLT/GOT entries for the glDraw… functions to a dumper function and then jmp to the actual glDraw… call. This could be done using the system debugging APIs.

Or this one too (there are plenty - and I think Valve released some tools too). This one has been pretty handy - https://github.com/p3/regal

Re: Show HN: Protecting Your Software Assets Using OpenGL

#10

I think I can hook the opengl driver and get the shader source code and the encryption key. and redo the decryption on cpu.

You don't have to go so far. Just inject a little bit of code into the game process that calls a dumper function just before (or after, it doesn't really matter) calls to `glDraw…` to dump out all the data of the currently bound buffer objects and textures. glGetTexImage, glGetBufferData are your friends.

ya. this article doesn't make too much sense to me.
Post reply on HN