{"id":1010,"date":"2008-09-22T11:33:45","date_gmt":"2008-09-22T11:33:45","guid":{"rendered":"https:\/\/www.darknet.org.uk\/?p=1010"},"modified":"2017-09-22T14:25:27","modified_gmt":"2017-09-22T06:25:27","slug":"modern-exploits-do-you-still-need-to-learn-assembly-language-asm","status":"publish","type":"post","link":"https:\/\/www.darknet.org.uk\/2008\/09\/modern-exploits-do-you-still-need-to-learn-assembly-language-asm\/","title":{"rendered":"Modern Exploits – Do You Still Need To Learn Assembly Language (ASM)"},"content":{"rendered":"

This is a fairly interesting subject I think as a lot of people still ask me if they are entering the security field if they still need to learn Assembly Language<\/a> or not?<\/p>\n

\"Assembly<\/p>\n

For those that aren’t what it is, it’s pretty much the lowest level programming languages computers understand without resorting to simply 1’s and 0’s.<\/p>\n

An assembly language is a low-level language for programming computers. It implements a symbolic representation of the numeric machine codes and other constants needed to program a particular CPU architecture. This representation is usually defined by the hardware manufacturer, and is based on abbreviations (called mnemonics) that help the programmer remember individual instructions, registers, etc. An assembly language is thus specific to a certain physical or virtual computer architecture (as opposed to most high-level languages, which are usually portable).<\/p><\/blockquote>\n

The mnemonics looks like MOV JMP<\/code> and PSH<\/code>.<\/p>\n

In straight forward terms the answer is yes<\/strong>, especially if you want to operate on a more advanced level. If you wish to write exploits you need assembly knowledge, there is plenty of great shellcode around but to get your exploit to the point where you can execute the shellcode you need assembly knowledge. Metasploit<\/a> is a great resource for the shellcode and to shovel in your exploit, but to understand the inner executions and workings of any binary you need to understand assembly.<\/p>\n

You might be able to fuzz out an overflow in some software using a pre-written python fuzzer<\/a>, but what are you going to do then – you need to at least understand the stack\/heap and EIP\/ESP etc.<\/p>\n

Even if you don’t plan to be that hardcore learning Assembly really won’t hurt at all, a great place to start is the PC Assembly Language book by Paul Carter<\/a>.<\/p>\n