shellcoder | Create shellcode from executable or assembly code | Hacking library

 by   gnebbia Perl Version: Current License: GPL-3.0

kandi X-RAY | shellcoder Summary

kandi X-RAY | shellcoder Summary

shellcoder is a Perl library typically used in Security, Hacking applications. shellcoder has no bugs, it has no vulnerabilities, it has a Strong Copyleft License and it has low support. You can download it from GitHub.

shellcoder is a perl application which creates c source shellcodes starting from assembly sources or executables, it can create both windows and gnu/linux shellcodes and is compatible with both 32 and 64 bit.
Support
    Quality
      Security
        License
          Reuse

            kandi-support Support

              shellcoder has a low active ecosystem.
              It has 11 star(s) with 10 fork(s). There are 3 watchers for this library.
              OutlinedDot
              It had no major release in the last 6 months.
              shellcoder has no issues reported. There are no pull requests.
              It has a neutral sentiment in the developer community.
              The latest version of shellcoder is current.

            kandi-Quality Quality

              shellcoder has no bugs reported.

            kandi-Security Security

              shellcoder has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.

            kandi-License License

              shellcoder is licensed under the GPL-3.0 License. This license is Strong Copyleft.
              Strong Copyleft licenses enforce sharing, and you can use them when creating open source projects.

            kandi-Reuse Reuse

              shellcoder releases are not available. You will need to build from source code and install.
              Installation instructions are available. Examples and code snippets are not available.

            Top functions reviewed by kandi - BETA

            kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
            Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of shellcoder
            Get all kandi verified functions for this library.

            shellcoder Key Features

            No Key Features are available at this moment for shellcoder.

            shellcoder Examples and Code Snippets

            No Code Snippets are available at this moment for shellcoder.

            Community Discussions

            QUESTION

            Section vs. segment?
            Asked 2020-May-03 at 23:59

            I have already read this post and I understand that segments contain runtime information and encapsulate sections, which contain linking information. But, I am still confused on why these terms are being used seemingly interchangeably in these two books.

            "The Shellcoder's Handbook"

            Next, information is loaded from the program’s executable file to the newly created address space. There are three types of segments: .text, .bss, and .data. The .text segment is mapped as read-only, whereas .data and .bss are writable. The .bss and .data segments are reserved for global variables. The .data segment contains static initialized data, and the .bss segment contains uninitialized data. The final segment, .text, holds the program instructions.

            "Professional Assembly Language"

            The text section is required in all assembly language programs. It is where the instruction codes are declared within the executable program. The data and bss sections are optional, but often used within a program. The data section declares data elements that are declared with an initial value. These data elements are used as variables within the assembly language program. The bss section declares data elements that are instantiated with a zero (or null) value. These data elements are most often used as buffer areas within the assembly language program.

            ...

            ANSWER

            Answered 2020-May-03 at 23:59

            In the context of ELF, they are two different related things.

            • Segments are described in the program header. Loosely, each segment descibes a chunk of the file to be loaded into memory when an executable is run.

            • Sections are described in the section header. Loosely, each section describes a chunk of data relevant to the program.

            So both sections and segments are chunks of the file, desbribed as an offset and size (though in both cases the size may be 0, in which case the offset is ignored). Any given ELF file might have only segments, or only sections, or both segments and sections. In order to be executable it must have segments to load. In order to be linkable, it must have sections describing what is where. So a dynmaically linked executable will always have both.

            In general, segments do not overlap each other and sections do not overlap each other, but sections may decribe data that is part (or all) of a segment. That is not a strict requirement of the format, but it would be strange to violate. It would also be very strange for a section to decribe data in two different segments. There are also (generally) sections that are not part of any segment.

            Source https://stackoverflow.com/questions/61582715

            QUESTION

            Relative vs Physical addresses in C++
            Asked 2020-Apr-20 at 15:49

            I recently started learning about memory management and I read about relative addresses and physical addresses, and a question appeared in my mind:

            When I print a variable's address, is it showing the relative (virtual) address or the physical address in where the variable located in the memory?

            And another question regarding memory management:

            Why does this code produce the same stack pointer value for each run (from Shellcoder's Handbook, page 28)? Does any program that I run produce this address?

            ...

            ANSWER

            Answered 2020-Apr-20 at 15:49

            When I print a variable's address, is it showing the relative ( virtual ) address or the physical address in where the variable located in the memory ?

            The counterpart to a relative address is an absolute address. That has nothing to do with the destinction between virtual and physical addresses.

            On most common modern operating systems, such as Windows, Linux and MacOS, unless you are writing a driver, you will never encounter physical addresses. These are handled internally by the operating system. You will only be working with virtual addresses.

            Why does this code produces the same stack pointer value for each run ( from shellcoder's handbook , page 28) ?

            On most modern operating systems, every process has its own virtual memory address space. The executable is loaded to its preferred base address in that virtual address space, if possible, otherwise it is loaded at another address (relocated). The preferred base address of an executable file is normally stored in its header. Depending on the operating system and CPU, the heap is probably created at a higher address, since the heap normally grows upward (towards higher addresses). Because the stack normally grows downward (towards lower addresses), it will likely be created below the load address of the executable and grow towards the address 0.

            Since the preferred load address is the same every time you run the executable, it is likely that the virtual memory addresses are the same. However, this may change if address layout space randomization is used. Also, just because the virtual memory addresses are the same does not mean that the physical memory address are the same, too.

            Does any program that I will run produce this address ?

            Depending on your operating system, you can set the preferred base address in which your program is loaded into virtual memory in the linker settings. Many programs may still have the same base address as your program, probably because both of you are were using the same linker with default settings.

            The virtual addresses are only per program? Let's say I have 2 programs: program1 and program2. Can program2 access program1's memory?

            It is not possible for program2 to access program1's memory directly, because they have separate virtual memory address spaces. However, it is possible for one program to ask the operating system for permission to access another process's access space. The operating system will normally grant this permission, provided that the program has sufficient priviledges. On Windows, this is can be accomplished for example with the function WriteProcessMemory. Linux offers similar functionality by using ptrace and writing to /proc/[pid]/mem. See this link for further information.

            Source https://stackoverflow.com/questions/60154817

            QUESTION

            Simple shellcode not working
            Asked 2018-May-21 at 19:38

            I have the following code which is supposed to drop a shell, however, after I run the code nothing appears to happen. Here is the code that I have. This was taken from the shellcoder's handbook.

            `

            ...

            ANSWER

            Answered 2018-May-20 at 07:12

            There are couple of things that could go wrong here:

            • The store of the shell code address is optimized away because it is derived from a stack variable, and nothing reads from the stack afterwards.
            • The store is optimized away because it is out of bounds.
            • The offset calculation from the local variable is wrong, so the shellcode address does not overwrite the return address. (This is what happens when I compile your example.)
            • The execution is redirect, but the shellcode does not run because it is located in the non-executable .data segment. (That would cause the process to terminate with a signal, though).

            Source https://stackoverflow.com/questions/50429199

            QUESTION

            Cant exploit overflow in simple program (chapter2 shellcoder's handbook)
            Asked 2018-Apr-24 at 08:06

            I am reading The shellcoder's Handbook and im currently at chapter 2 where i have a simple program to exploit by overflowing the expected input and then issuing a new location for the ret instruction so that the function return_input can be executed twice !

            Here is the simple program made in C

            ...

            ANSWER

            Answered 2018-Apr-24 at 08:06
            1. gets read terminating byte in and replaced it with NULL byte and thus your desired ret was broken with that NULL byte.
            2. The offset you saw in disassembly codes is NOT the real address, you compiled the program with PIE flag set so the real address may look like 0x55555????58a, that's why gdb didn't allow you to insert a break point because you might try to do b *0x58a or something. Compile with -no-pie would make life easier.

            Source https://stackoverflow.com/questions/49983236

            QUESTION

            x86 Assembly: Data in the Text Section
            Asked 2017-Sep-13 at 20:56

            I don't quite understand how variables can be stored in the text section and how they can be manipulated. Shouldn't all variables be in the .data section and aren't all part of the .text section read-only? How does this code work then?

            [Code taken from Shellcoder's Handbook]

            ...

            ANSWER

            Answered 2017-Sep-13 at 20:56

            Well, the data & code are just bytes. Only how you interpret them makes them what they are. Code can be interpreted as data and vice versa. In most case it will produce the something that's invalid but anyway it's possible.

            Attributes of the section are dependant on the linker and most of them by default make the .text section RO, but it doesn't mean it can't be changed.

            The whole example is a clever way to obtain the address of /bin/sh just by using the call. Basically the call places on the stack the address of the next instruction (next bytes) and in this case it will be the address of this string so pop esi will get that address from the stack and use it.

            Source https://stackoverflow.com/questions/46203110

            QUESTION

            Inconsistent assembly instructions in shellcoders handbook
            Asked 2017-May-05 at 18:17

            Two years later and I'm back at it. Trying to tackle the shellcoders handbook again, but I continue to find inconsistencies. The book provides the following function:

            ...

            ANSWER

            Answered 2017-May-05 at 16:30

            But several things just feel wrong

            Yes, they are. It isn't unusual for a book to have typographical errors. Usually, you should look for a published list of errata when you see something that makes you scratch your head. The publisher's website is a good place to look, as is the author's. I don't know what the book's exact title is, so I can't search for it myself, but you should be able to find it easily.

            Of course, it may not be that simple. Books by less-reputable publishers often won't make an errata list available, and less-popular books often don't have enough readers to have caught the errors. You can do your part by locating the author's email address and notifying them of the errors you've found. Or, if you aren't sure whether they're errors, asking the author to clarify. (You don't want to expect the author to provide a personal tutorial for you, but specific questions about things published in their books are always fair game.)

            lea 0xffffffd8(%ebp), %edi, it is my understanding that the first part means multiply the base pointer by 0xffffffd8, that seems incorrect

            In this case, it is your understanding of what the code does that's incorrect. I blame this demented AT&T syntax. The translation to Intel syntax is:

            Source https://stackoverflow.com/questions/43808000

            Community Discussions, Code Snippets contain sources that include Stack Exchange Network

            Vulnerabilities

            No vulnerabilities reported

            Install shellcoder

            In order to install shellcoder, few dependencies are required, once we have access to a cpan (or cpanm) we do:.

            Support

            For any new features, suggestions and bugs create an issue on GitHub. If you have any questions check and ask questions on community page Stack Overflow .
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries
            CLONE
          • HTTPS

            https://github.com/gnebbia/shellcoder.git

          • CLI

            gh repo clone gnebbia/shellcoder

          • sshUrl

            git@github.com:gnebbia/shellcoder.git

          • Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link

            Explore Related Topics

            Consider Popular Hacking Libraries

            wifiphisher

            by wifiphisher

            routersploit

            by threat9

            XSStrike

            by s0md3v

            pwntools

            by Gallopsled

            Atmosphere

            by Atmosphere-NX

            Try Top Libraries by gnebbia

            kb

            by gnebbiaPython

            pdlist

            by gnebbiaPython

            halive

            by gnebbiaPython

            nmap_tutorial

            by gnebbiaHTML

            gnu_linux_appunti

            by gnebbiaHTML