Author Topic: Hacking is binary code and nobody knows what they are talking about!!!  (Read 3141 times)

The mostly used of the "utilities" is hexadecimal. What's easier to write/read? 1010 1111 or AF?


Binary is not inherently difficult or easy. Binary is numbers. Computers don't speak words, they speak numbers. Every program uses "binary code" including Blockland. Every website uses binary code. Everything on the computer uses binary code, but people suck at understanding binary code. So there's many many utilities that exist purely to make it easier for humans to write binary code. The most familiar of which are programming languages. They're essentially translators that turn code into binary code.

Exactly. Although what I mean is that guy just said "binary code" as if that's how you do everything. Binary code is very difficult on it's own, especially if you don't know what you're doing.

Exactly. Although what I mean is that guy just said "binary code" as if that's how you do everything. Binary code is very difficult on it's own, especially if you don't know what you're doing.

Even if you did know what you're doing, try reading this without using a binary converter:
0101110 01101111 01110010 00100000 0100100 0110011 0110000 0110000 01101101 01100001 01101001 01101110 00100000 00100000 00100000 00100000 01101100 01100100 01111001

No, what I mean is actually programming something. Not just translating it.

No, what I mean is actually programming something. Not just translating it.

I doubt there's a programming language where you program like that. The closest I could think of is Machine Language and Assembly.

Even if you did know what you're doing, try reading this without using a binary converter:
0101110 01101111 01110010 00100000 0100100 0110011 0110000 0110000 01101101 01100001 01101001 01101110 00100000 00100000 00100000 00100000 01101100 01100100 01111001
Binary code does not refer to it solely in binary form. 0101110 and 0x2E (46 for normal people) are the exact same thing, that could be represented as 0x2E6F7220243330306D61696E202 020206C6479 or even ".or $300main    ldy" and still be considered "binary code" assuming it fit the definition in the first place.

I doubt there's a programming language where you program like that. The closest I could think of is Machine Language and Assembly.
Machine language is in binary. I already posted a summary of how it works here.

Machine language is in binary. I already posted a summary of how it works here.

Thank the informatic engineers that low-level language was invented. I'd kill myself if I had to program in Machine. I'm happy with C.

I'm a low level guy, so I love my assembly. Sometimes I need to view executable files in a hex reader to determine exact offsets and such though, plus I wrote a CPU emulator a little while ago.

I'm a low level guy, so I love my assembly. Sometimes I need to view executable files in a hex reader to determine exact offsets and such though, plus I wrote a CPU emulator a little while ago.

Teach me how to read hex! All I can edit are strings since all I understand is the ASCII the editor shows. Although I do know a few things. (Mainly the beginning and end of a string. xP)

im hacking all of you now!

01110101 00100000 01110010 00100000 01100010 01100101 01101001 01101110 00100000 01101000 01100001 01101011 01100100 00100000 01101100 01100101 01101100 00001101 00001010 00001101 00001010 01100001 01110010 01100111 00100001 00100001 00100001 00001101 00001010 01101000 01110100 01110100 01110000 00111010 00101111 00101111 01101001 00101110 01101001 01101101 01100111 01110101 01110010 00101110 01100011 01101111 01101101 00101111 01001110 01001001 01001100 00110111 01101110 00110000 01101010 00101110 01110000 01101110 01100111
« Last Edit: March 07, 2014, 05:04:38 PM by Crispy_ »

Define "read hex." Once again, hex is just a representation of a number. 0x00 is zero, 0x09 is nine, and instead of ten incrementing the first column, the 9 increments into an A. A->B, B->C, C->D, D->E, E->F. If you were to increase 0x0F, then you would finally increment the first column so that it would read 0x10. I'm guessing you knew that already, though.

There's a million different protocols that can be read using hex that are all quite different. For example, a network packet starts with a preamble, which is an 8 byte identification number that tells the computer a packet is being received. Then there's a 6 byte destination address, this would be a computer's own IP address assuming the packet has been received, then a 6 byte source address which is the IP address of the computer that sent it, a two byte number that tells how long the data transmission is going to be, then the actual data (minimum 46 bytes, maximum 1500), then finally a 4 byte CRC of the data, so that the computer can verify that it has read the data correctly. So a packet could look something like..
Code: [Select]
4500 0048 35E3 0000 4006 9034 CAE8 0F66
CAE8 0F62 F7F0 0016 8520 7612 1672 89E4
8018 4470 4060 0000 0101 080A 0003 BF65
0000 95FE 0000 000A 0EEF BE30 A72A 41FL
7BEL 2F9B 3CCD B5B0

Then there's machine code protocol, which is an operation code (OP code) followed by the arguments for that OP code. I gave the example before of push, which is 0x06 followed by a 4 byte (32 bit) address on x86 platforms or a 8 byte (64 bit) address on x86-64 platforms. There are a couple of OP codes that take no arguments, like 0x00 which simply causes the computer to pause and do nothing, called "nop" (pronounced 'nope', stands for 'no operation').

There's tons of other protocols, and honestly programmers make them up as they go. Even I have made at least 20 protocols for various things, I don't want to know how many protocols people like Linus Torvalds have created.

Have you guys ever gotten into Logic Gates?

Have you guys ever gotten into Logic Gates?

I have. They're easier to do in a simulation program than using transistors in RL.

EDIT: Programs edited in hex editors are in machine language, right?
I noticed that 0x20 is the beggining of a string and 0x00 or 0x0D is the ending. The 0x00 is the null character, that's clear but I'm not sure why sometimes 0x00 appears and sometimes 0x0D appears.
« Last Edit: March 08, 2014, 09:40:43 AM by Pie Crust »

01000010011001010010000001110 0110111010101110010011001
01001000000111010001101111001 0000001100100011100100110
10010110111001101011001000000 1111001011011110111010101
11001000100000010011110111011 0011000010110110001110100
01101001011011100110010100101 110