SRL Archive - S.M.A.R.T.

Question about SMART from a returning jr. member


warlord94

2014-12-26 21:42:59

Hey guys,

I've technically been here since 2007 but was only actually actively trying to learn about developing scripts from 2007-2008. It blows my mind that I learned anything at all about scripting being so young back then. Anyway, I'm older now and can learn much easier now. The biggest change I noticed returning to the community was SMART. How exactly does SMART not get detected by Jagex? Jagex can know specifically what client is running their game, they've confirmed this with RSBot and OSBuddy. I'm assuming it has to do with UserAgent but wanted to be 100% sure.

KeepBotting

2014-12-26 21:51:39

From the way I understand it, SMART's undetectability is due to the fact that it doesn't modify the game client like RSBot or OSBot do. It just loads the official client inside a JVM so it has its own mouse, and passes pixels.

Jagex could detect SMART if they really wanted to, the most obvious way being the window title. We know for sure that Jagex can grab the title of the window that their game is loaded in, that's how they caught bots circa 2011.

Another way would be the way Simba fakes mouse and key events, but I don't pretend to understand that.

I'd chalk Simba's undetectability up to two things, 1) our interaction method, color and 2) the size of our community, smaller than prominent bots like RSBot.

We're just not a huge problem to Jagex.
We blend in, silently, invisibly. We don't disrupt normal gameplay or have an adverse effect on the economy.
We are the hunted for over seven years.

Incurable

2014-12-26 22:21:47

From: KeepBotting
From the way I understand it, SMART's undetectability is due to the fact that it doesn't modify the game client like RSBot or OSBot do.


Both SMART and Simba, but especially SMART, are easily detectdd by Jagex, the only reason they don't ban the whole lot of us for using it is that they just don't care. Everything here is free, we don't rape the economy and we have a userbase so tiny that banning us would be a waste of time. It has nothing to do with detectability.

Cyanempire

2014-12-26 22:26:52

No visible gold farming scripts in public
and no payment system for scripts were
not really a threat like other sites.

warlord94

2014-12-26 22:33:02

Got it, thanks everyone.

So basically, there's not much merit in using Simba in a browser as opposed to just using SMART since Jagex wouldn't care to ban people seen using SMART anyway?

KeepBotting

2014-12-26 22:34:15

From: warlord94
Got it, thanks everyone.

So basically, there's not much merit in using Simba in a browser as opposed to just using SMART since Jagex wouldn't care to ban people seen using SMART anyway?


I don't believe there's a single reason to not use SMART.

Harrier

2014-12-27 04:17:09

From: KeepBotting
the most obvious way being the window title. We know for sure that Jagex can grab the title of the window that their game is loaded in, that's how they caught bots circa 2011.

2011? They were doing this in july 2013 lol

the bank

2014-12-31 08:54:15

Alright I guess its time for the Java lesson of the day for you folks.

First of all, SMART is simply a loader that loads an applet running the official runescape client. The parameters are loaded through parsing the HTML from the official runescape site for whatever server you're connecting to (this server is picked at random at the start of every SMART instance, just like on the official site). These parameters include things like width, height, the gamepack to load, and many more.

So then, how is it that we can minimize? Simple, you're comparing apples and oranges. Simba/SCAR itself is not Java based in anyway, hence the fact scripts are written in Pascal/Delphi. This means that previously, the only option for users was to actually control the computer's mouse to make actions in the game. As soon as you start using a Java based loader like SMART, it opens up a world of possibilities. To understand how you can send mouse moves and clicks while minimized you must first understand how Java understands these events.

A java applet does not simply link to your computer mouse to determine when its clicked. Instead, when you move your mouse or click it on a java application (like runescape) it sends action events to that JVM which are then translated into the actual events. SMART works while minimized by taking the already existent Simba mouse functions and instead of doing anything with them, it simply sends that event to the JVM. So, instead of moveMouse(50, 50) moving the mouse to point 50,50 it creates and sends an event to the JVM AS IF it had, even though it never had. This feature is impossible to detect, it is literally impossible to determine if the event was made by a human or sent by another Java app, it all looks the same on the other side and the applet still responds as if you had.

Which brings us to the point of detectability. Is SMART detectable? In short, no, it is not. AS LONG as the parameters are properly loaded there is no way to distinguish between the offical applet and SMART. I will now debunk a few ridiculous myths found in this thread.

1) It is impossible to read the window title of SMART or any other bot that I know of ever existing for that matter. The applet is a container running inside of a separate java application. Think of variable-scope in an OOP situation. Jagex can read anything from the applet and BELOW, but not ABOVE. SMART is the top running variable in that scenario, therefore Jagex can not actually access any information or even detect the existence of that top running layer.

2) Jagex don't care? Of course they fucking care. It doesn't matter if you're not gold farming or RWT….if you macro they want to ban you. Simple as that. If you think you're safe in your ignorance simply because tou don't think they care about you, you are WRONG. Hence the need, even in a non-client-evasive community like this, to practice SAFE BOTTING!

3) Jagex can detect which client is loading their game. The funny part is, this is TRUE. But not in the way you think. Every update over 100 gamepacks are released and you are assigned a specific gamepack based on your IP. The problem you have here, is people seem to get confused between CLIENT and LOADER. The CLIENT is the actually running jar file of the RS instance. Your LOADER is what actually loads the client, be it the official rs loader on their web page or SMART or any number of other publicly available loaders. If you use a CLIENT outside of your own, they can detect it and ban you. This is why bots which rely on updating just a single gamepack (like RSBot) are so easily detectable. Smart on the other hands parses which gamepack belongs to you from the parameters discussed earlier and loads an unmodified client. In summery, Jagex CAN'T detect a third party loader AS LONG AS it parses the parameters discussed earlier properly and loads the OFFICIAL client. Jagex CAN detect running a modified client OR running a client which does not belong to your "client-lease" (which SMART does neither).

TL;DR: You can't get banned specifically for using SMART as it is not detectable. Hence the purpose of its inception. If they could, you would be banned, you are not above it.

Brandon

2015-01-01 01:46:00

From: the bank
I will now debunk a few ridiculous myths found in this thread.

1) It is impossible to read the window title of SMART or any other bot that I know of ever existing for that matter. The applet is a container running inside of a separate java application. Think of variable-scope in an OOP situation. Jagex can read anything from the applet and BELOW, but not ABOVE. SMART is the top running variable in that scenario, therefore Jagex can not actually access any information or even detect the existence of that top running layer.


In summery, Jagex CAN'T detect a third party loader AS LONG AS it parses the parameters discussed earlier properly and loads the OFFICIAL client. Jagex CAN detect running a modified client OR running a client which does not belong to your "client-lease" (which SMART does neither).

TL;DR: You can't get banned specifically for using SMART as it is not detectable. Hence the purpose of its inception. If they could, you would be banned, you are not above it.



No disrespect to you at all. I learned from a few of your posts on Mopar once upon a time.

However, how do you plan to "bust" the following "myth buster"?

Smart:
.
.
.
.
.
ALL browsers show sun.plugin2.main.client.PluginEmbeddedFrame[frame0,0,0,500x500,layout=java.awt.BorderLayout,title=,resizable,normal]:
.
.
.
.
.
.
.
.
.
.
.
.

Firefox, Chrome, IE.. all show the same thing.. PluginEmbeddedFrame. None of which is SMART or RSBot..

I respect you, but you should probably test things before saying them? I don't know.. :S Btw, have a look at WinAPI for virtual mouse detection.


Here's the code for the test applet (change the codebase if needed):



{$DEFINE SMART}
{$I GLX/Misc/Smart.Simba}

{*
Parameters for loading the custom applet from disk.
Use your own "Java x86" location.
*}

//SmartSpawnClient('C:/Program Files (x86)/Java/jre1.8.0_25/bin/java.exe', Replace(PluginPath, '\', '/', [rfReplaceAll]), 'file:///C:/Users/USER_NAME_HERE/Desktop/', 'AppletTest.html', W, H, '', '', '-XX:MinHeapFreeRatio=20 -XX:MaxHeapFreeRatio=30', '');

var
T: TSmart;
begin
T.Create(500, 500, ['']);
end.


<html>
<head>
<title>Test Applet</title>
<style>
body {background-color:lightgrey}
</style>
</head>
<body>
<div>
<applet code="applettest.MyApplet.class" codebase="applet_code_base" archive="AppletTest.jar" width="500" height="500">
Please Install Java.
</applet>
</div>
</body>
</html>



package applettest;

import java.applet.Applet;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.awt.image.BufferedImage;
import java.lang.reflect.InvocationTargetException;
import javax.swing.JFrame;

/**
*
* @author Brandon
*/
public class MyApplet extends Applet implements MouseMotionListener {

private int w, h, r;
private Graphics gfx;
private BufferedImage img;


@Override
public void init() {
try {
EventQueue.invokeAndWait(this::initComponents);
} catch (InterruptedException | InvocationTargetException e) {
e.printStackTrace();
}
}

private Color getComplement(Color c) {
return new Color(255 - c.getRed(), 255 - c.getGreen(), 255 - c.getBlue());
}

private void initComponents() {
this.setLayout(new BorderLayout(0, 0));

r = 10;
w = getSize().width;
h = getSize().height;

if (w == 0 || h == 0) {
w = 500;
h = 500;
}

img = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
gfx = img.getGraphics();

addMouseMotionListener(this);
}

@Override
public void update(Graphics g) {
g.drawImage(img, 0, 0, this);
}

@Override
public void paint(Graphics g) {
update(g);
}

@Override
public void mouseDragged(MouseEvent e) {
int x = e.getX();
int y = e.getY();
gfx.setColor(Color.red); //getComplement(this.getComponent(0).getBackground())
gfx.fillOval(x - (r / 2), y - (r / 2), r, r);
repaint();
e.consume();
}

@Override
public void mouseMoved(MouseEvent e) {
Container p = this.getParent();

while (p != null && p.getParent() != null) {
p = p.getParent();
}


if (p != null && p instanceof JFrame || p instanceof Frame) {
System.out.println("Mouse: " + e.getComponent());
//System.out.println(((Frame)p).getTitle()); //prints the TITLE of the top owner of the applet.
System.out.println(p);
}
}
}


This is not a scare tactic. It's not meant to harm or insight fear or help Jagex mess you guys up.. It's just proof of concept that a "title" on a parent window AND its window/container class can be read regardless of hierarchy level.

You can change the title of SMART if you wish. Window "title" and/or mouse detection is a stupid way to ban anyway.. but it could catch some off-guard I guess? I don't know.. TOO many are paranoid about what Jagex will and will not do. You will NEVER know tbh.. So why worry -_-

Olly

2015-01-01 01:54:49

uh-oh ! Nothing like a Brandon post! :)

the bank

2015-01-01 14:00:55

@Brandon Well shit, I stand corrected. I didn't realize that blatant fact even though it was standing right infront of me. My apologies for relaying incorrect information in that regard.