Sponsored Content
Full Discussion: C Brain Teaser
Top Forums Programming C Brain Teaser Post 302221139 by redoubtable on Sunday 3rd of August 2008 02:17:22 PM
Old 08-03-2008
There's a more complex way of doing it.

We could open (argv[0], O_RDONLY), then unlink(argv[0]), and then re-open open(argv[0], O_RDWR).

Like that, you could read the content of your program before it was unlinked ('cause the kernel still holds the reference upon unlink() if the file is open by any process) and write a new content after it was unlinked.

Now, from here you could go to very funny stuff like changing the ELF format on-the-fly (something like changing the .comment section) and then have something on your file that says "if the .comment section has a certain sha1 hash that matches whatever, the program should run, otherwise it won't run". Be aware that someone could strip the comment section very easily lol.

Another way would also be very funny like creating an assembly program that just makes your program exit, then, extracting the hex opcodes (machine-language) of that program using something like objdump and injecting those opcodes on your other program's main function. Of course you would have to know the right offset to mmap() to, etc. With this, you could actually alter the way that your program feeds back after the first execution, because you could also inject write()'s, etc. (a lot more work would be needed)
 

6 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Brain Bench Certification

Hi, Can anybody provide me Pointers to Practice tests or any Material to prepare for Brainbench certification in Unix Shell Scripting? Also how good is this Certification for UNIX programmers. Is it worth it? I'm planning to take this certification in 2 weeks. Kindly let me know all the pros... (0 Replies)
Discussion started by: pavan_emani
0 Replies

2. Shell Programming and Scripting

This might be a programming teaser!

Hi gurus, I have done my best to be as precisely as possible with this. Besides giving the format of file a and file b and the result file I have also given the algorithm as I have figured out. I will try to do this and I hope that some of you could help me to solve this or better yet... (1 Reply)
Discussion started by: ljankok
1 Replies

3. Programming

Brain Teaser Extended

Hi Gurus, To the Brain Teaser, if I add another condition, say the executable should not be altered, how the program should be altered? (no perl please, purely C). I forgot to mention this condition my staff had mentioned. ( forgot then and got now :D ) The program executed the first time... (4 Replies)
Discussion started by: vrk1219
4 Replies

4. What is on Your Mind?

The Human Brain project

A global group of scientists are spending the next ten years and a billion dollars to try and develop a computer simulation of the brain: https://www.humanbrainproject.eu/ I always found it fascinating that the brain can understand itself. This almost sounds like in a few years the computer... (0 Replies)
Discussion started by: figaro
0 Replies

5. Shell Programming and Scripting

sed regexp teaser

G'day, Here's a teaser for a sed guru, which I surely am not one, as even my basic sed skills are rusted from years of not practising ... lol Ok ... we have a string of digits such as: 632413741610252847552619172459483022433027602515212950543016701812771409213148672112 we want it split... (9 Replies)
Discussion started by: naderra
9 Replies

6. What is on Your Mind?

Cyber Dystopia Teaser (720 HD)

Working on a new cybersecurity, dystopian world series and made a short 2 min teaser today. Cyber Dystopia (720 HD) https://www.youtube.com/watch?v=g9Ca07J_YC8 If anyone has any ideas for the story, please write out some story lines in the comments and join the production team! (1 Reply)
Discussion started by: Neo
1 Replies
mcs(1)								   User Commands							    mcs(1)

NAME
mcs - manipulate the comment section of an object file SYNOPSIS
mcs [-cdpVz] [-a string] [-n name] file... DESCRIPTION
The mcs command is used to manipulate a section, by default the .comment section, in an ELF object file. It is used to add to, delete, print, and compress the contents of a section in an ELF object file, and print only the contents of a section in a COFF object file. mcs cannot add, delete, or compress the contents of a section that is contained within a segment. If the input file is an archive (see ar.h(3HEAD)), the archive is treated as a set of individual files. For example, if the -a option is specified, the string is appended to the comment section of each ELF object file in the archive; if the archive member is not an ELF object file, then it is left unchanged. mcs must be given one or more of the options described below. It applies, in order, each of the specified options to each file. OPTIONS
The following options are supported: -a string Appends string to the comment section of the ELF object files. If string contains embedded blanks, it must be enclosed in quotation marks. -c Compresses the contents of the comment section of the ELF object files. All duplicate entries are removed. The ordering of the remaining entries is not disturbed. -d Deletes the contents of the comment section from the ELF object files. The section header for the comment section is also removed. -n name Specifies the name of the comment section to access if other than .comment. By default, mcs deals with the section named .comment. This option can be used to specify another section. mcs can take multiple -n options to allow for specification of multiple section comments. -p Prints the contents of the comment section on the standard output. Each section printed is tagged by the name of the file from which it was extracted, using the format file[member_name]: for archive files and file: for other files. -V Prints on standard error the version number of mcs. -z Replaces any SHT_PROGBITS sections with zeros while retaining the original attributes of the sections. EXAMPLES
Example 1: Printing a file's comment section The following entry example% mcs -p elf.file prints the comment section of the file elf.file. Example 2: Appending a string to a comment section The following entry example% mcs -a xyz elf.file appends string xyz to elf.file's comment section. FILES
/tmp/mcs* temporary files ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Availability |SUNWbtool | +-----------------------------+-----------------------------+ |Interface Stability |Stable | +-----------------------------+-----------------------------+ SEE ALSO
ar(1), as(1), ld(1), ar.h(3HEAD), elf(3ELF), tmpnam(3C), a.out(4), attributes(5) NOTES
When mcs deletes a section using the -d option, it tries to bind together sections of type SHT_REL and target sections pointed to by the sh_info section header field. If one is to be deleted, mcs attempts to delete the other of the pair. By using the -z option, it is possible to make an object file by removing the contents of SHT_PROGBITS sections while retaining the object file's original structure as an ELF file. The need for use of the -z option is limited. However, the option can be used to deliver an object file when the contents of SHT_PROGBITS sections are not relevant. SunOS 5.10 1 Apr 2004 mcs(1)
All times are GMT -4. The time now is 11:18 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy