Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Tue, 21 May 2013 21:46:17 +0200
From: Dániel Bali <balijanosdaniel@...il.com>
To: john-dev@...ts.openwall.com
Subject: Re: AMD GCN ISA development

Hello!

2013/5/21 Solar Designer <solar@...nwall.com>
>
>
> Why don't we use a hack, at least initially: simply generate a large
> enough (inner) ELF for a dummy kernel, and be replacing its contents?
> Since our actual code size will need to be smaller in all cases, we'll
> simply pad it with zeroes or whatever.  Would this work?
>

This was a great idea, thanks!

I created a long kernel (turns out it's optimized pretty well, so I had to
generate random OpenCL code that uses the input so it won't be predictable
and it won't be optimized out). The GCN part ended up 2184 bytes long, but
this is something we can change.

Then I pasted the original binary to the place of the newly generated one
and put NOPs at the end. It now works just the way the original binary
worked but we can add/change arbitrary code as long as its under 2184 bytes
long. Here is the new binary:

https://dl.dropboxusercontent.com/u/16881651/sample_crafted.bin

The inner elf starts at 0x18301. Inside the inner elf the GCN code section
starts at 0x4d36. (So globally it starts at 0x1d037)

I will now try to figure out realhet's code. I might need to refresh my
Pascal skills a bit.

Regards,
Daniel

Content of type "text/html" skipped

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.