grugq
May 20th, 2001, 09:18
[This is a repost of the strainer text itself. Thanks to Carpathia for salvaging it from his cache. The deadline for the strainer is july 31st. All submissions of completed assignments should be sent to hcunix_at_lokmail_dot_net, you will not get a reply unless you receive credit. No querys will be answered, but amusing questions might get posted and ridiculed :-) ]
A strainer is supposed to winnow the wheat from the chaff, it should
enable those with prospects to advance while keeping the riff-raff
out. This strainer is no different in that respect but the similarities
to previous strainers end there. The typical +HCU strainer has been
to crack (not reverse, no one ever turned in src code to replicate the
fucntionality of the target) a win32 application. This is a reverse
engineer's strainer, if you fancy yourself a reverse engineer then you
will enjoy, and be challenged by, this strainer.
After talking this over with Mammon_, we feel that it is important to
present a variety of challenges to allow each entrant the oppurtunity
to excell in one arena. That said, a certain amount of knowledge
about everything is required to be a successful Reverse Engineer, and
this strainer will demand proficiency in a variety of areas.
The Strainer:
Aquire 3 credits via any of the following:
1. Write an ELF binary encrypter. (1c - 2c)
* This program should be run over a binary and produce an
encrypted binary. When run this encrypted binary will
perform identically to the original binary, save for the
need to supply a password.
* This is for the Linux 2.2.x x86 platform only.
* If you can create a program which does not require Linux,
does not use assembly language and does not require an
external program to run, then this counts as two (2) credits.
2. Reverse Engineer this program. (1c)
* Supply src code which, when compiled, replicates the function-
ality of the target and when disassembled produces output
identical to that of the target. In short, reproduce the src
from the binary.
* Write a paper on how you reverse engineered the target.
Include any tools that you wrote (src form).
* URL: http://grugq.hcunix.org/kgm
3. Write a replacement for ptrace(2). (1c - 2c)
* This must be implemented as a LKM. It should have a man page
describing its use and a sample application which makes use
of your implementation.
* If this is superior to the standard ptrace(2) implementation,
i.e. provides better functionality, the this counts as two (2)
credits.
4. There is no number 4.
5. Write a CPU module for the bastard. (2c)
* This CPU module can be for any CPU that is not x86. This
means you can write for SPARC, StrongARM, Motorola, etc. etc.
* If this assignment is completed and fully functional, it
counts as two (2) credits.
6. Write a process dumper. (1c)
* This should either attach to a given PID and dump the process
into a valid ELF format, or execute the target program and
then dump it into a valid ELF format.
7. Write an object code re-linker. (1c)
* This should be able to import additional objcode into a given
binary. This should be portable (i.e. non-x86 specific) and
can use the libbfd library.
All assignments must be turned in with a paper describing the work as
well as src code to any and all tools which you wrote to complete the
work. All src code remains copyright the author, but must be released
open source (i.e. pick a license which allows others to use and adapt
your code and release under that. GPL, Perl Artistic, BSD, etc. etc.).
In addition to the src code you must write a man page for the tool,
this is not needed for quick hacks you wrote while working on something.
The complete passing assignments will be posted on the internet following
the end of the strainer.
Any information you need to complete these assignments can be found
on the internet. If you are having problems with something you have
two choices, find a solution or give up.
A strainer is supposed to winnow the wheat from the chaff, it should
enable those with prospects to advance while keeping the riff-raff
out. This strainer is no different in that respect but the similarities
to previous strainers end there. The typical +HCU strainer has been
to crack (not reverse, no one ever turned in src code to replicate the
fucntionality of the target) a win32 application. This is a reverse
engineer's strainer, if you fancy yourself a reverse engineer then you
will enjoy, and be challenged by, this strainer.
After talking this over with Mammon_, we feel that it is important to
present a variety of challenges to allow each entrant the oppurtunity
to excell in one arena. That said, a certain amount of knowledge
about everything is required to be a successful Reverse Engineer, and
this strainer will demand proficiency in a variety of areas.
The Strainer:
Aquire 3 credits via any of the following:
1. Write an ELF binary encrypter. (1c - 2c)
* This program should be run over a binary and produce an
encrypted binary. When run this encrypted binary will
perform identically to the original binary, save for the
need to supply a password.
* This is for the Linux 2.2.x x86 platform only.
* If you can create a program which does not require Linux,
does not use assembly language and does not require an
external program to run, then this counts as two (2) credits.
2. Reverse Engineer this program. (1c)
* Supply src code which, when compiled, replicates the function-
ality of the target and when disassembled produces output
identical to that of the target. In short, reproduce the src
from the binary.
* Write a paper on how you reverse engineered the target.
Include any tools that you wrote (src form).
* URL: http://grugq.hcunix.org/kgm
3. Write a replacement for ptrace(2). (1c - 2c)
* This must be implemented as a LKM. It should have a man page
describing its use and a sample application which makes use
of your implementation.
* If this is superior to the standard ptrace(2) implementation,
i.e. provides better functionality, the this counts as two (2)
credits.
4. There is no number 4.
5. Write a CPU module for the bastard. (2c)
* This CPU module can be for any CPU that is not x86. This
means you can write for SPARC, StrongARM, Motorola, etc. etc.
* If this assignment is completed and fully functional, it
counts as two (2) credits.
6. Write a process dumper. (1c)
* This should either attach to a given PID and dump the process
into a valid ELF format, or execute the target program and
then dump it into a valid ELF format.
7. Write an object code re-linker. (1c)
* This should be able to import additional objcode into a given
binary. This should be portable (i.e. non-x86 specific) and
can use the libbfd library.
All assignments must be turned in with a paper describing the work as
well as src code to any and all tools which you wrote to complete the
work. All src code remains copyright the author, but must be released
open source (i.e. pick a license which allows others to use and adapt
your code and release under that. GPL, Perl Artistic, BSD, etc. etc.).
In addition to the src code you must write a man page for the tool,
this is not needed for quick hacks you wrote while working on something.
The complete passing assignments will be posted on the internet following
the end of the strainer.
Any information you need to complete these assignments can be found
on the internet. If you are having problems with something you have
two choices, find a solution or give up.