Nothing better to discuss such things than here.
Last period, i became more curious about RATs programming and how RATs works, and to understand this better, i want to code a simple one, just want to have two PCs connected to each other and do some lame stuff.
What i concluded about RATs basics:
RAT consists of client and server applications that allows a remote user to control a remote machine via sockets. The server is placed in the target machine, and the client on the user machine.
in socket programming, a server is usually linked to the bind(), listen() and accept() socket functions. and the client side is the one who connect()s to the server.
While in RATs, the roles are reversed, the client uses the bind(), listen() and accept() socket functions and waits for incoming connection from the server side. and the server should links to the client machine using connect()
and that's because the server on the remote machine knows my the client's IP address but the client don't
HOW?!
Everybody worked with RATs before, The first problem we had faced is the static IP address, everyone knows that his IP address changes everytime he reset his router. So basicly how can a server and a client connects with each other while no one of them doesn't know the other IP address. In this part, DNS services comes to hand, we can make and IP address linked to a domain name using no-ip (for example) and use the no-ip program to assign my IP address to the domain name everytime the IP changes.
this way, we can make the server side know the client's IP address and accesses it using it's static domain name.