SRL Archive - Research & Development Lounge

Injection


Spartan 117

2013-03-17 13:17:22

I know simba did support reflction back before the cluster-flutterrer. Now that injection seems pretty stable (i.e. powerbot has some amazing flawless scripts), will SRL ever include injection?

I know the everything injection can do color can do too but injection is just way more simple for less knowledgable scripters(like myself) to make decent scripts with.

rj

2013-03-17 13:18:32

We would probably have reflection but IDK if they are looking into this or not. I looked at some old reflection scripts they actually look harder

Olly

2013-03-17 13:27:37

From: RJJ95
We would probably have injecting but IDK if they are looking into this or not. I looked at some old reflection scripts they actually look harder


Lol… you really shouldn't comment if you know nothing about it. :p

And on topic no, i would not like to see it i like having a challenge :)

Also @Wizzup has some nice views on reflection.

rj

2013-03-17 13:28:59

From: Ollybest
Lol… you really shouldn't comment if you know nothing about it. :p

And on topic no, i would not like to see it i like having a challenge :)

Also @Wizzup has some nice views on reflection.

Just realized i meant to say reflection lol
From: RJJ95
I looked at some old reflection scripts they actually look harder


my bad

Spartan 117

2013-03-17 13:42:14

From: Ollybest
Lol… you really shouldn't comment if you know nothing about it. :p

And on topic no, i would not like to see it i like having a challenge :)

Also @Wizzup has some nice views on reflection.



Well what are his views of reflection? And i'm talking about injection not reflection so his views might be different.

I see where you like a challenge, but I feel like it is our job as a community to release the best scripts possible, so why not give injection a shot?

I personally have never felt confident enough in one of my scripts to release them publicly. Maybe with injection I would.

Wizzup?

2013-03-17 14:04:17

Simba on itself (and its predecessor) have never ``included'' Reflection or Injection. Reflection was added through a plugin. You're free to create a plugin that does ``Injection'' (just like SMART did Reflection), but it's not something that will (ever) be in Simba itself.

NKN

2013-03-17 14:13:01

From: grahambr

so why not give injection a shot?


Because making all the hooks not break are annoying.
Figuring out classes named x, f, a, u, fu, fa is not a easy task, it takes time. You'd have to have someone dedicated. I only managed to hook 3 - 4 classes myself. </3

rj

2013-03-17 14:17:03

From: NKN
Because making all the hooks not break are annoying.
Figuring out classes named x, f, a, u, fu, fa is not a easy task, it takes time. You'd have to have someone dedicated. I only managed to hook 3 - 4 classes myself. </3


wait so you have to guess their class names?

litoris

2013-03-17 14:32:12

Biased poll options…
If you consider doing a task, then injection can do it much much better, because it can see more than what human eye can see- it knows locations of mainscreen objects simply by their id, and can let you walk with extreme accuracy. However, it has its risks and it is illegal (apparently not for 07scape), not to mention that it is detectable.
Is color good enough? For a good scripter, yes. Nobody gets banned for using Simba (literally no bans since the botnuke)(NKN disagrees, possible I guess) and the developers do not hack the users for their pixels. If we do get reflection, it will be nice to use for things that are harder with color (ie. finding the tripwire in lletya for a grenwall hunter) but color will prevail no matter what.

Le Jingle

2013-03-17 14:37:36

I'm fine with using color; never interested in injection, but wouldn't oppose it for learning opportunities.
I personally feel safer using color, granted I make a decent script with color. Again, would only use injection to learn, would probably not use/make injection scripts, personally.
-Lj

rj

2013-03-17 14:50:44

I would pretty much use it for walking or clicking objects that are hard to detect

NKN

2013-03-17 14:57:08

From: litoris
Biased poll options…
If you consider doing a task, then injection can do it much much better, because it can see more than what human eye can see- it knows locations of mainscreen objects simply by their id, and can let you walk with extreme accuracy. However, it has its risks and it is illegal, not to mention that it is detectable.
Is color good enough? For a good scripter, yes. Nobody gets banned for using Simba (literally no bans since the botnuke) and the developers do not hack the users for their pixels. If we do get reflection, it will be nice to use for things that are harder with color (ie. finding the tripwire in lletya for a grenwall hunter) but color will prevail no matter what.

Not illegal for 07 scape, code isn't encrypter
People have been banned using Simba

wthomas

2013-03-17 15:33:52

Add reflection, only include methods that return current map tile. ty.
Everyone wins, we get flawless walking(only thing we cant do atm really) and still use color for everything else :)

Echo_

2013-03-17 20:20:49

Most of the people that were knowledgeable with the client either left or just lurk the forums now (pyroryan, Method, Drags111, etc).

And RJJ95, reflection scripts were really easy. There was a point in time where scripts only really used color for failsafes and running while hooks were being updated. However there were issues with memory leaks and such.

rj

2013-03-17 20:25:42

From: Echo_
Most of the people that were knowledgeable with the client either left or just lurk the forums now (pyroryan, Method, Drags111, etc).

And RJJ95, reflection scripts were really easy. There was a point in time where scripts only really used color for failsafes and running while hooks were being updated. However there were issues with memory leaks and such.


Looked hard to me

Richard

2013-03-17 20:28:55

From: litoris
Biased poll options…
If you consider doing a task, then injection can do it much much better, because it can see more than what human eye can see- it knows locations of mainscreen objects simply by their id, and can let you walk with extreme accuracy. However, it has its risks and it is illegal (apparently not for 07scape), not to mention that it is detectable.
Is color good enough? For a good scripter, yes. Nobody gets banned for using Simba (literally no bans since the botnuke)(NKN disagrees, possible I guess) and the developers do not hack the users for their pixels. If we do get reflection, it will be nice to use for things that are harder with color (ie. finding the tripwire in lletya for a grenwall hunter) but color will prevail no matter what.


Reflection was never illegal. The reason powerbot and other injection bots were illegal is because they distributed modified versions of the client. (naive knowledge here on in) IIRC reflection just got the hooks from the JVM, rather than actually injecting modified code into the client. AFAIK SMART remained unaltered.

rj

2013-03-17 20:30:45

From: Richard
Reflection was never illegal. The reason powerbot and other injection bots were illegal is because they distributed modified versions of the client. (naive knowledge here on in) IIRC reflection just got the hooks from the JVM, rather than actually injecting modified code into the client. AFAIK SMART remained unaltered.


Couldn't they use their own models? I remember custom oak trees on powerbot one time during christmas, but didn't see them without the powerbot client

Richard

2013-03-17 20:35:44

From: RJJ95
Couldn't they use their own models? I remember custom oak trees on powerbot one time during christmas, but didn't see them without the powerbot client


That would be actually intercepting the graphics information and altering, something a lot of people having been doing with OpenGL

rj

2013-03-17 20:39:15

From: Richard
That would be actually intercepting the graphics information and altering, something a lot of people having been doing with OpenGL


Nvm :o, butI remeber I used my own client for RSPS's and I would cheat by replacing the model with a common item such as a strength amulate with a blank model so when I wore it I would show up invisible :d

n3ss3s

2013-03-17 21:03:34

Well what are his views of reflection? And i'm talking about injection not reflection so his views might be different.


For the scripter, whether its injection or reflection doesn't make a difference. Either way, yes, Simba can use reflection with the right SMART version if you can provide the hooks.

DannyRS

2013-03-17 21:27:10

From: RJJ95
wait so you have to guess their class names?


Jagex ob-something (I always forget the spelling, you tried to do it once) their code in the applet, so you have to reverse-engineer it and find what everything is, I've got very little knowledge on how injection and reflection work, but I'm with Wizzup on this one,

If injection is reliable and legal, I don't see why not as a plugin, reflection is a no-go as they have said they are going to implement their "current bot technologies" meaning encryption, making it a waste of time to start now,

Theres little that can't be done in color alone, it just takes a smart approach and the time :) colors also alot more fun and challenging for a programmer, IMO you will learn alot more here than simply how to "click object by ID" at PB or elsewhere

n3ss3s

2013-03-17 22:04:06

If injection is reliable and legal, I don't see why not as a plugin, reflection is a no-go as they have said they are going to implement their "current bot technologies" meaning encryption, making it a waste of time to start now,


… No

Injection: The bot uses a client that has been injected with accessors, e.g if in some class the field kl represents animation id, the accessor getAnimation() (or whatever) will return kl and the bot can call that method.
Reflection: The bot doesn't use an injected client, and uses reflection to set the field accessible and reads it.

For both you'll need an updater, it's not any easier to make an updater for injection than reflection, for injection you also need to go the extra mile of injecting the accessors / interfaces rather than just dumping the fields.

DannyRS

2013-03-17 22:31:00

From: n3ss3s
… No

Injection: The bot uses a client that has been injected with accessors, e.g if in some class the field kl represents animation id, the accessor getAnimation() (or whatever) will return kl and the bot can call that method.
Reflection: The bot doesn't use an injected client, and uses reflection to set the field accessible and reads it.

For both you'll need an updater, it's not any easier to make an updater for injection than reflection, for injection you also need to go the extra mile of injecting the accessors / interfaces rather than just dumping the fields.


Something about reflection makes it illegal once they update the client to what it's like now tho right? Because of US copyright laws or something, I have no idea why that would be true for reflection and not injection, is it just the country the developer resides in? So do the PB developers have to updte their client weekly or something atm?

Lord Waffles

2013-03-17 23:43:54

I originally voted no, but after reading the debate I feel like adding it as a possibility or not wouldn't hurt anything. For those who want to auto a task that is relatively hard reflection would be great to have, i'm sure using reflection to help solve randoms would also be a lot easier. For those afraid of being banned they could choose to just not run scripts that use it…it is as simple as that.

Hey, what do I know anyway…i'm just now getting into the world of developing bots ;)

Echo_

2013-03-18 02:23:33

From: RJJ95
Nvm :o, butI remeber I used my own client for RSPS's and I would cheat by replacing the model with a common item such as a strength amulate with a blank model so when I wore it I would show up invisible :d


Then it would only be invisible to you, not any of the other players.

Also if you don't understand how reflection works: http://docs.oracle.com/javase/tutorial/reflect/index.html

rj

2013-03-18 05:31:33

From: Echo_
Then it would only be invisible to you, not any of the other players.

Also if you don't understand how reflection works: http://docs.oracle.com/javase/tutorial/reflect/index.html


My white dot was still visible I was still clickable you just couldn't see me :p Have you ever seen the cheat clients that make people invisible? It's like that.

Also people make reflection cheat clients to cheat on servers and force spawn items (incase they don't have failsafes) such as sending a item to the floor,to your inventory, to the trade screen many possibilities read up on it here: http://www.moparscape.org/smf/index.php?topic=551310.0

I could only get it to work for a limited number of servers mostly crappy ones because I don't know much java and I could spawn items on one that had litterely no failsafes :p

NKN

2013-03-18 07:09:25

From: RJJ95
My white dot was still visible I was still clickable you just couldn't see me :p Have you ever seen the cheat clients that make people invisible? It's like that.

Also people make reflection cheat clients to cheat on servers and force spawn items (incase they don't have failsafes) such as sending a item to the floor,to your inventory, to the trade screen many possibilities read up on it here: http://www.moparscape.org/smf/index.php?topic=551310.0

I could only get it to work for a limited number of servers mostly crappy ones because I don't know much java and I could spawn items on one that had litterely no failsafes :p



package com.nkn.impl;

import com.nkn.generic.AbstractAnalyser;
import org.objectweb.asm.Opcodes;
import org.objectweb.asm.tree.*;

import java.util.ListIterator;

public class PlayerAnalyser extends AbstractAnalyser {
@Override
protected boolean canRun(ClassNode node) {
int inum = 0, strnum = 0;
ListIterator<FieldNode> fnIt = node.fields.listIterator();
while(fnIt.hasNext()){
FieldNode fn = fnIt.next();
if((fn.access & Opcodes.ACC_STATIC)==0){
if(fn.desc.equals("Ljava/lang/String;"))
strnum++;
if(fn.desc.equals("I"))
inum++;
}
}
return inum == 15 && strnum == 1;
}

@Override
protected String analyse(ClassNode node) {
System.out.print("\nFound Player Class at: "+node.name);
String playerName = "";
node.interfaces.add("com/nkn/interfaces/PlayerInterface");
ListIterator<FieldNode> fnIt = node.fields.listIterator();
while(fnIt.hasNext()){
FieldNode fn = fnIt.next();

if((fn.access & Opcodes.ACC_STATIC)==0){

if(fn.desc.equals("Ljava/lang/String;")){
System.out.print("Name is at: "+fn.name+"\n");
//InjectUtils.addGetter(node,fn,"getPlayerName");
MethodNode getter = new MethodNode(Opcodes.ACC_PUBLIC, "getPlayerName", "()Ljava/lang/String;", null, null);
getter.instructions.add(new VarInsnNode(Opcodes.ALOAD, 0));
getter.instructions.add(new FieldInsnNode(Opcodes.GETFIELD, node.name, fn.name, fn.desc));
getter.instructions.add(new InsnNode(Opcodes.ARETURN));
int size = getter.instructions.size();
getter.visitMaxs(size, size);
getter.visitEnd();
node.methods.add(getter);
System.out.print("Added getter at:" + getter.name+"\n");

}


}
}

ListIterator<MethodNode> mnIt = node.methods.listIterator();
methodIterator:while(mnIt.hasNext()){
MethodNode mn = mnIt.next();
if(mn.desc.startsWith("(L")&&mn.desc.endsWith(";I)V")){
ListIterator<AbstractInsnNode> ainIt = mn.instructions.iterator();
while(ainIt.hasNext()){
AbstractInsnNode ain = ainIt.next();
if(ain instanceof FieldInsnNode){
String Level = ((FieldInsnNode) ain).name;
System.out.println("USER IS AT: "+Level);
MethodNode getter = new MethodNode(Opcodes.ACC_PUBLIC, "getCombatLevel", "()I", null, null);
getter.instructions.add(new VarInsnNode(Opcodes.ALOAD, 0));
getter.instructions.add(new FieldInsnNode(Opcodes.GETFIELD, node.name, ((FieldInsnNode) ain).name, ((FieldInsnNode) ain).desc));
getter.instructions.add(new InsnNode(Opcodes.IRETURN));
int size = getter.instructions.size();
getter.visitMaxs(size, size);
getter.visitEnd();
node.methods.add(getter);
System.out.print("Added getter at:" + getter.name+"\n");
break methodIterator;
}
}
}

}
return node.name;
}

}
That's one of my accessors for the player class. Haven't updated the hook tho.

DannyRS

2013-03-18 08:04:31

From: RJJ95
My white dot was still visible I was still clickable you just couldn't see me :p Have you ever seen the cheat clients that make people invisible? It's like that.

Also people make reflection cheat clients to cheat on servers and force spawn items (incase they don't have failsafes) such as sending a item to the floor,to your inventory, to the trade screen many possibilities read up on it here: http://www.moparscape.org/smf/index.php?topic=551310.0

I could only get it to work for a limited number of servers mostly crappy ones because I don't know much java and I could spawn items on one that had litterely no failsafes :p


What Echo means is that if you make your model invisible in the local client, everyone looking at you (everyone else on the server) can still see you ;) you just can't see yourself, some servers with bad security means you can force spawn items, like you could in a really early version of RSC before the developers saw that they needed to overcome that, I've got no idea how the whole packet hacking stuff works

Echo_

2013-03-18 14:59:36

From: DannyRS
What Echo means is that if you make your model invisible in the local client, everyone looking at you (everyone else on the server) can still see you ;) you just can't see yourself, some servers with bad security means you can force spawn items, like you could in a really early version of RSC before the developers saw that they needed to overcome that, I've got no idea how the whole packet hacking stuff works


Exactly, what you did was client sided. RSBot did the same thing one Christmas, they had the client trick the cache into loading the model for Santa Claus instead of a spirit tree near the GE. It was funny for people that didn't understand that it was RSBot that did it, because they were sitting next to the spirit tree and talking about how funny Santa Claus looked.

tristen8878

2013-03-18 15:17:05

From: Echo_
Also if you don't understand how reflection works: http://docs.oracle.com/javase/tutorial/reflect/index.html


Thanks for the link this has helped me understand the difference between reflection and injection.

Vezq

2013-03-18 15:27:22

Only reason i don't like injection is that most of the people getting banned for botting atm are because of bots that use injection. Can someone tell me if this is true?

n3ss3s

2013-03-18 15:42:42

From: Vezq
Only reason i don't like injection is that most of the people getting banned for botting atm are because of bots that use injection. Can someone tell me if this is true?


It's not because of using injection but the volume of people that often use a single script

Neodymium

2013-03-18 19:30:22

From: n3ss3s
… No

Injection: The bot uses a client that has been injected with accessors, e.g if in some class the field kl represents animation id, the accessor getAnimation() (or whatever) will return kl and the bot can call that method.
Reflection: The bot doesn't use an injected client, and uses reflection to set the field accessible and reads it.

For both you'll need an updater, it's not any easier to make an updater for injection than reflection, for injection you also need to go the extra mile of injecting the accessors / interfaces rather than just dumping the fields.

Ahh, thanks. I knew what Reflection was, but I assumed Injection was the process of injecting bytecode into certain classes – injecting and editing bytecode I've done.

Vezq

2013-03-18 19:32:36

From: n3ss3s
It's not because of using injection but the volume of people that often use a single script


I read some people are getting banned for just having rsbot the client open in a botwatch area?

NKN

2013-03-18 19:54:06

From: Vezq
I read some people are getting banned for just having rsbot the client open in a botwatch area?


Means their IP's are flagged, not the client itself.
From: Neodymium
Ahh, thanks. I knew what Reflection was, but I assumed Injection was the process of injecting bytecode into certain classes – injecting and editing bytecode I've done.

You need bytecode skills to figure out what those classes are. Can't find out unless you can read it. ;) (Why I stopped making my client, I couldn't figure out how to find multipliers.)

speedster

2013-03-19 05:53:21

I like Simba how it is now, without reflection or injection. Simba should be only color based, independent of whatever Jagex does to it's client.

pija

2013-03-19 21:01:57

From: DannyRS
Jagex ob-something (I always forget the spelling, you tried to do it once) their code in the applet, so you have to reverse-engineer it and find what everything is, I've got very little knowledge on how injection and reflection work, but I'm with Wizzup on this one,

If injection is reliable and legal, I don't see why not as a plugin, reflection is a no-go as they have said they are going to implement their "current bot technologies" meaning encryption, making it a waste of time to start now,

Theres little that can't be done in color alone, it just takes a smart approach and the time :) colors also alot more fun and challenging for a programmer, IMO you will learn alot more here than simply how to "click object by ID" at PB or elsewhere


Obfucsation.

Even if you don't obfuscate code, you will still not be able to determine the identifiers. The identifier chosen for a method, function, class, variable, will lie nowhere in the bytecode.

NKN

2013-03-19 21:25:31

From: pija
Obfucsation.

Even if you don't obfuscate code, you will still not be able to determine the identifiers. The identifier chosen for a method, function, class, variable, will lie nowhere in the bytecode.

Not 100% true.
They just don't name it as an identifier. It's still there, you just have to know what to look for.

rj

2013-03-19 21:29:13

Polls are tied up we need someone to break it :p

xxpoopyxx

2013-03-19 21:29:53

From: Wizzup?
Simba on itself (and its predecessor) have never ``included'' Reflection or Injection. Reflection was added through a plugin. You're free to create a plugin that does ``Injection'' (just like SMART did Reflection), but it's not something that will (ever) be in Simba itself.


I am currently developing 'AutoChat' it is a chat responder for anti ban i would for you to look at my thread and tell me what you think about
http://villavu.com/forum/showthread.php?t=98903

Thanks!

YoHoJo

2013-03-19 21:39:30

Why would people vote no?
If you don't want it, just don't use it….?
Why NOT have an extra feature?

rj

2013-03-19 21:40:05

From: YoHoJo
Why would people vote no?
If you don't want it, just don't use it….?
Why NOT have an extra feature?


I was thinking the same thing but they might be afraid of to much dev time being poured into it..

YoHoJo

2013-03-19 21:41:05

From: RJJ95
I was thinking the same thing but they might be afraid of to much dev time being poured into it..


If they don't want to do it, they don't have to.
We're open source and stuff, let the people who have the time/care to do it actually do it then, so once again, why vote no? :X I don't get it.

rj

2013-03-19 21:45:10

From: YoHoJo
If they don't want to do it, they don't have to.
We're open source and stuff, let the people who have the time/care to do it actually do it then, so once again, why vote no? :X I don't get it.


I'd rather have reflection because the same sounds cooler… and also we could put this picture to good use:


Justin

2013-03-19 22:23:11

I'm quite happy with Color :)

Voted no :)

Hazzah

2013-03-20 08:50:17

I don't bot, so neither?

pija

2013-03-24 04:01:54

From: NKN
Not 100% true.
They just don't name it as an identifier. It's still there, you just have to know what to look for.


The identifier IS the name chosen for the variable. The variable is there, are you implying the identifier is left in the code after compiling?

NKN

2013-03-24 11:08:14

From: pija
The identifier IS the name chosen for the variable. The variable is there, are you implying the identifier is left in the code after compiling?

If you decompile a class file, variable names are still there.
Just not the original ones.

DannyRS

2013-03-24 11:32:14

Tbh if I knew how to do it (could probably learn), and it was legal, I'd put the time in

samerdl

2013-03-25 16:11:44

I wouldn't mind an extra, it would actually make simba run better scripts.

But who am i to say? am just a random person

Zorgatone

2013-03-25 21:00:13

I'd like reflection back just to walk better on 07scape and clicking some objects that you can't see :S

Petite One

2013-04-03 08:30:11

Injection or reflection should be used, in my opinion, to perform tasks that are otherwise much harder or impossible to carry out with color alone. It's use in Simba must be minimal though, I do not think that creating a source similar to PowerBot would entail any advantages.

dzpliu

2013-04-04 07:11:27

is injection detected easily? like the moment you use injection, jagex can detect you?

zer0hax0r

2013-04-05 09:43:11

From: dzpliu
is injection detected easily? like the moment you use injection, jagex can detect you?


Yea, injection is easily detectable. That's where reflection comes in and takes the cake. :P

NKN

2013-04-05 17:03:43

From: zer0hax0r
Yea, injection is easily detectable. That's where reflection comes in and takes the cake. :P

It's not instant detectable.
If it was, all Pbot users would be banned.
It's only detectable if you do it wrong.

Brandon

2013-04-05 18:58:08

From: NKN
It's not instant detectable.
If it was, all Pbot users would be banned.
It's only detectable if you do it wrong.



It's detectable if you don't hide it.
Jagex is either just lazy or don't know what they're doing.
Either that, or they'd be in some legal troubles for doing some methods of detection.
If it can't be done on the Java side, they can simply put it in a dll.

Detecting Injection is just as hard as injecting. You write code to detect it and someone comes and patches that code. You have to write again..
It's a back and forth race. Eventually one side will give in. Jagex is a large company. I'm fairly certain they should be able to detect it. VAC certainly does. But they constantly have to update their security and checks.

hamster31

2013-05-04 11:55:05

IMO, I would not mind a plugin for it but the whole idea of "We are the hunted for over seven years." on the main page will change. Again as everyone said, if you want the plugin, make it. Its fair and simple. I wouldn't mind using it, but at this moment I enjoy using color. It gives me a sense of pride that I had to write something in Simba and find work arounds to all the issues before submitting my application. I used it as a chance to learn something more. Injection makes it easier for people to write scripts. I use Simba for multiple different things rather than just Runescape.
From: Brandon
It's detectable if you don't hide it.
Jagex is either just lazy or don't know what they're doing.
Either that, or they'd be in some legal troubles for doing some methods of detection.
If it can't be done on the Java side, they can simply put it in a dll.

Detecting Injection is just as hard as injecting. You write code to detect it and someone comes and patches that code. You have to write again..
It's a back and forth race. Eventually one side will give in. Jagex is a large company. I'm fairly certain they should be able to detect it. VAC certainly does. But they constantly have to update their security and checks.


Thats the issue, If someone gets banned using a script in Simba that uses Injection, they blame the client. I do believe that it is as hard to detect as it is to inject but I honestly believe that they wont. The amount of memberships they receive from people who bot is mind boggling. They throw in a bot nuke to control the expansion of it but I dont think that its impossible for them to detect it.

StickToTheScript

2013-05-05 10:05:28

You know… I think a plugin would be kinda cool. Lol. I'd use it.

Flight

2013-05-05 11:15:11

I'd just like an accurate way of determining tiles & location as well as all random solvers. Everything else I just prefer to use color.

Hoodz

2013-05-05 12:49:31

From: Flight
I'd just like an accurate way of determining tiles & location as well as all random solvers. Everything else I just prefer to use color.


I was thinking the exact same thing!

billymyo1

2013-05-08 07:29:37

Amazing post. informative post for me. thanks for this post.
getfrank.com.au/laughs/funny-jokes

Brandon

2013-05-08 08:17:12

From: billymyo1
Amazing post. informative post for me. thanks for this post.
getfrank.com.au/laughs/funny-jokes



Is this a spam-bot? :S

Flight

2013-05-08 08:59:18

From: Brandon
Is this a spam-bot? :S


Yes. Unfortunately too as I was looking forward to this thread getting some attention. :(

Haxz

2013-05-08 09:20:51

From: Flight
I'd just like an accurate way of determining tiles & location as well as all random solvers. Everything else I just prefer to use color.


Exactly this.

But are coding with reflection/injection different from pascal?

Flight

2013-05-08 09:35:54

From: Haxz
Exactly this.

But are coding with reflection/injection different from pascal?


They're methods reading and/or modifying .class files, I believe. We would be writing scripts as normal with Simba, in Pascal, if SMART could once again use reflection. The only difference is easier and perfect accuracy in scripts, such as finding objects/items/NPCs/players and determining tile coordintes and animations, and so on…

Haxz

2013-05-08 09:54:30

From: Flight
They're methods reading and/or modifying .class files, I believe. We would be writing scripts as normal with Simba, in Pascal, if SMART could once again use reflection. The only difference is easier and perfect accuracy in scripts, such as finding objects/items/NPCs/players and determining tile coordintes and animations, and so on…


That would be great! With reflection, I believe randoms will be a piece of cake. Would like to use reliable tiles detection and walking, Simba has limitations in having a reliable walking method IMO.

Supporting the comeback of Reflection.

Fox

2013-05-08 09:55:21

I don't think simba needs injection or even reflection. The way they have color set up it's more reliable with not watch. It's also become one of the most advanced bots ever made.

Flight

2013-05-08 10:19:03

From: Frostie
I don't think simba needs injection or even reflection. The way they have color set up it's more reliable with not watch. It's also become one of the most advanced bots ever made.


No they're not needed but they would provide us with tools to make scripts much more accurate and stable. It's not the method of gathering information from the client that will get you banned (via botwatch), it's the quality of the script and the random solvers. Also, SMART is what would be using reflection/inject, not Simba.

Shatterhand

2013-05-08 13:27:50

Anyone trying to revive old SMART versions?

EngageTheRage

2013-05-08 13:45:42

although i have only been here a short while, i have really enjoyed color detection. it has provided me with lots of problems and has definitely helped my overall programming improve. i have no idea what reflection/injection are like in terms of ease, but i use this site for learning efficient scripting not to actually play runescape so personally i am quite happy using the more difficult (some people said reflection was a lot easier) :) having said that, it would be nice to learn more about reflection/injection also simply from an educational point of view :)

Flight

2013-05-08 21:58:07

From: Shatterhand
Anyone trying to revive old SMART versions?


I believe it'd be simpler to retain the current SMART (8.0+) and just add reflection.

I personally couldn't care less about reflection in EoC RS, walking is done near perfectly with SPS and ObjectDTMs and randoms have been removed from the game; the hard parts are over and anything else we want to do in RS via color is very possible now. I only have interest in reflection for use in OSR where these obstacles are still present.

rj

2013-05-08 22:02:34

From: Flight
I believe it'd be simpler to retain the current SMART (8.0+) and just add reflection.

I personally couldn't care less about reflection in EoC RS, walking is done near perfectly with SPS and ObjectDTMs and randoms have been removed from the game; the hard parts are over and anything else we want to do in RS via color is very possible now. I only have interest in reflection for use in OSR where these obstacles are still present.


I don't think there's enough people interested…

NKN

2013-05-10 06:38:53

From: Flight
I believe it'd be simpler to retain the current SMART (8.0+) and just add reflection.

I personally couldn't care less about reflection in EoC RS, walking is done near perfectly with SPS and ObjectDTMs and randoms have been removed from the game; the hard parts are over and anything else we want to do in RS via color is very possible now. I only have interest in reflection for use in OSR where these obstacles are still present.

Would it use Injection or Reflection, though? Injection isn't too hard to get all the hooks and make an updater for, it's just implementing it in. I would do it, but I don't really feel like breaking SMART lol. I might fool around with it later, and try and get a hook or two working.

That is, if it's injection, if he's reflection, I'm useless.

Flight

2013-05-10 06:54:24

From: NKN
Would it use Injection or Reflection, though? Injection isn't too hard to get all the hooks and make an updater for, it's just implementing it in. I would do it, but I don't really feel like breaking SMART lol. I might fool around with it later, and try and get a hook or two working.

That is, if it's injection, if he's reflection, I'm useless.


So you wouldn't know how to add injection to SMART? I think it SMART were to use injection/reflection it should be a separate version, strictly for OSR. But that's just my opinion.

NKN

2013-05-10 06:58:42

From: Flight
So you wouldn't know how to add injection to SMART? I think it SMART were to use injection/reflection it should be a separate version, strictly for OSR. But that's just my opinion.


I haven't really looked into it. I'll give it a shot soon I guess. Hope it goes well, lolz.

Olly

2013-05-10 13:09:42

https://github.com/BenLand100/SMART/commits/reflection

Could only guess that Ben ran outta time or got bored :p

Flight

2013-05-10 13:51:23

From: Ollybest
https://github.com/BenLand100/SMART/commits/reflection

Could only guess that Ben ran outta time or got bored :p


Ah nice I didn't know about that. I did some digging around and found a couple of the current reflection hooks for OSR and I'm looking over the old SRL-Reflection library on how to use them. I'll continue in the morning. Thanks for the link, Ollybest.

rj

2013-05-10 16:00:06

From: Flight
Ah nice I didn't know about that. I did some digging around and found a couple of the current reflection hooks for OSR and I'm looking over the old SRL-Reflection library on how to use them. I'll continue in the morning. Thanks for the link, Ollybest.


Do you plan on making full on reflection for simba or just hooking the tiles? (or maybe some interfaces and NPC's for randoms)

Flight

2013-05-10 22:43:39

From: Officer Barbrady
Do you plan on making full on reflection for simba or just hooking the tiles? (or maybe some interfaces and NPC's for randoms)


I'm just trying to understand it and get anything to work. :/ I'll worry about that later.

On a related note, I had to add return types to the reflection-related functions in SmartRemote.H. @BenLand100: Is there a reason why none of these functions returned anything? I changed them up to this, can you tell me if these are correct? (I edited these in the style of the reflection functions in the old SMART)


(char*)"exp_getFieldObject", (char*)"function SmartGetFieldObject(objref: integer; path: string): integer;",
(char*)"exp_isPathValid", (char*)"function SmartIsPathValid(objref: integer; path: string): boolean;",
(char*)"exp_getFieldBoolean", (char*)"function SmartGetFieldBoolean(objref: integer; path: string): boolean;",
(char*)"exp_getFieldLongH", (char*)"function SmartGetFieldLongH(objref: integer; path: string): integer;",
(char*)"exp_getFieldLongL", (char*)"function SmartGetFieldLongL(objref: integer; path: string): integer;",
(char*)"exp_getFieldInt", (char*)"function SmartGetFieldInt(objref: integer; path: string): integer;",
(char*)"exp_getFieldShort", (char*)"function SmartGetFieldShort(objref: integer; path: string): integer;",
(char*)"exp_getFieldFloat", (char*)"function SmartGetFieldFloat(objref: integer; path: string): extended;",
(char*)"exp_getFieldDouble", (char*)"function SmartGetFieldDouble(objref: integer; path: string): extended;",
(char*)"exp_getFieldByte", (char*)"function SmartGetFieldByte(objref: integer; path: string): string;",

I believe I was either wrong with those or wrong actually using the function as I get an error "Error: Could not call proc at line…". I tried these 3, perhaps you could point out where I'm going wrong at:

SmartGetFieldInt(-1, 'hw.client');
SmartGetFieldInt(0, 'hw.client');
SmartGetFieldInt(1, 'hw.client');

This is using your SMART 8.1 with the reflection backbone you added about a month ago, loaded in Oldschool RS. I believe that hook is correct but even if not it would be unrelated to my error.


Edit:
Ok now I have all of the hooks for the current OSR client revision. I did a lot of digging through some other client that hosted the most recent hooks on their site; they sure went through a lot of trouble to keep these hidden…

samerdl

2013-05-11 05:22:00

Wow if you can make it work - and we can get reflection in smart, then that would be AWESOME.

I've looked around topics before reflection broke-down, just how exactly did you guys make it work with Pascal? that part i don't understand.

Like FindobjEX(Idnumber), thats so weird - how does it work? and how can we help bring it to life?

cool thing it will be a plugin that people can choose to use or not, so it won't breach any jagex terms of service

Brandon

2013-05-11 13:53:44

From: Flight
I'm just trying to understand it and get anything to work. :/ I'll worry about that later.
"Error: Could not call proc at line…"



None of those new functions are exported. You try to use them, you'll get access violation or could not call proc. You need to export them and add them to smart's def file for the remote:

https://github.com/BenLand100/SMART/blob/7ba9beeab9ccb45d09b9f0758e60c15ecc8eedcf/src/libsmartremote.def

Notice it exports none of the ref functions. You'll have to add all the exp____ref functions from smartremote.h

Flight

2013-05-11 21:23:54

From: Brandon
None of those new functions are exported. You try to use them, you'll get access violation or could not call proc. You need to export them and add them to smart's def file for the remote:

https://github.com/BenLand100/SMART/blob/7ba9beeab9ccb45d09b9f0758e60c15ecc8eedcf/src/libsmartremote.def

Notice it exports none of the ref functions. You'll have to add all the exp____ref functions from smartremote.h


Awesome, thank you Brandon I'm going to try that this morning. :)

Edit:
Well at least the function ran this time. Doing so crashed my SMART but I suppose it's progress…

Edit2:
Ok so after trying multiple SMART functions with the same result I believe I'll put this on hold for now. With very little information from the SMART crash it's just not enough to go off of for tracking down the root of the problem. I'll simply wait for now until Ben has furthered his client or maybe Brandon has some input on the matter.

Vinyl Scratch

2013-05-12 10:57:48

I wish my SMART were working, I'd try to figure it out.

If I do get it working, could you PM me the hooks you found, Flight?

Shatterhand

2013-05-12 11:01:41

It would be nice if you would share what you got so far, Flight. I would happily test things, play around with them. :)

Flight

2013-05-12 11:36:29

I wouldn't want to go around Ben on this, we don't even know if his reflection additions to SMART are intended for public use. @BenLand100: If you happen to pop online let me know what you think of this, if it's okay with you to post what I have so far.

pyroryan

2013-05-13 10:03:34

I'd be willing to help on a limited scale with RS 2k7 as long as reflection's use remains largely limited to functions that are difficult to implement in color (i.e. reflection should be a complement to color, not the other way around as it was in the past). I've extended this offer to Flight privately as well.

xtrapsp

2013-05-13 10:11:48

From: pyroryan
I'd be willing to help on a limited scale with RS 2k7 as long as reflection's use remains largely limited to functions that are difficult to implement in color (i.e. reflection should be a complement to color, not the other way around as it was in the past). I've extended this offer to Flight privately as well.


Welcome back :)

Flight

2013-05-13 11:47:46

From: pyroryan
I'd be willing to help on a limited scale with RS 2k7 as long as reflection's use remains largely limited to functions that are difficult to implement in color (i.e. reflection should be a complement to color, not the other way around as it was in the past). I've extended this offer to Flight privately as well.


Again, thank you for all the help so far. To add on to this I'd like to focus on hooks for our player only (skills/XP/animation/health/tile/compass angle) and of course anything related to tile-walking, although I believe this can be done with finding our players current Grid X/Y and a bit of math; I'd have to check out the old SRL-Reflection to see which hooks they used and so on.

Haxz

2013-05-13 12:09:34

Just so you know, if you need testers, I'd be willing to do the job for you. This could possibly enhance the quality and reliability of Simba scripts significantly.

Olly

2013-05-13 12:29:34

tiles/walking + real map angle is all that we really need.

StickToTheScript

2013-05-13 12:56:35

Just like Haxz said, I will be willing to volunteer my time to do testing. I would love to help creating the plug-in, but I have never been involved with something of the sorts, nor do I think I contain the knowledge. But i will test.

Vinyl Scratch

2013-05-13 15:21:11

From: StickToTheScript
Just like Haxz said, I will be willing to volunteer my time to do testing. I would love to help creating the plug-in, but I have never been involved with something of the sorts, nor do I think I contain the knowledge. But i will test.


This is a great way to learn, is it not?

StickToTheScript

2013-05-13 15:26:05

From: Vinyl Scratch
This is a great way to learn, is it not?


I was originally thinking that. I planned on looking through it and seeing how stuff was done and I even planned on asking questions. But I still would love to try it out. Testing is something I find entertaining! :p

rj

2013-05-13 15:42:43

I would all like to test by writing a few scripts using animation hooks Sweet :D

williammake

2013-05-14 13:28:55

I know simba did support reflction back before the cluster-flutterrer. Now that injection seems pretty stable (i.e. powerbot has some amazing flawless scripts), will SRL ever include injection?

acow

2013-05-14 13:37:21

no :(
Reflection/Injection puts the scripts at a higher risk of auto detection, previous bot nukes and jagex's current determination to remove bots should be a clear indication that safety should be our primary concern. I personally would much rather monitor safe color only bots.

If injection was used to support what the color is observing to add confidence, sure, but color imo should always be the primary determinant of what the bot does. Especially as jagex is known to fuck around with item ids and adding in invisible objects and all that stuff. I'm a newbie, but my 2 cents is a no :p Especially in regards to random solvers.
+ jagex will most likely be specifically targetting them soon, due to such clients as tribot.

Brandon

2013-05-14 14:33:35

From: Tuk
no :(
Reflection/Injection puts the scripts at a higher risk of auto detection, previous bot nukes and jagex's current determination to remove bots should be a clear indication that safety should be our primary concern. I personally would much rather monitor safe color only bots.

If injection was used to support what the color is observing to add confidence, sure, but color imo should always be the primary determinant of what the bot does. Especially as jagex is known to fuck around with item ids and adding in invisible objects and all that stuff. I'm a newbie, but my 2 cents is a no :p Especially in regards to random solvers.
+ jagex will most likely be specifically targetting them soon, due to such clients as tribot.


Ahh don't worry.. You can trust me when I say that "Reflection" in Pascal-Script is NOT that great. Its great but not as great as you'd think it would be. Its not like the reflection PB used to have.

Lags!
Model Recognition is Slow!
Tile clicking is NOT too accurate because you need to get the height right.
Anything too far (roughly 52 tiles) will take more than 20 seconds to find..

The only way Reflection could possibly overcome these is to make it a plugin.. Anything done on the Pascal side for reflection will be pretty slow.

Basic things are a ton faster than colour though. Like finding items in your bank, ensuring that an item is what it is.. Color requires tolerance and constant changing of DTM's to find an item.



Also, if you think about it.. Reflection gives the near exact position of an object. With the current MouseOffset stuff, you're going to have to reset the mouse offset things before clicking every reflection object and set it back for color clicking.

rj

2013-05-14 15:40:52

From: Tuk
no :(
Reflection/Injection puts the scripts at a higher risk of auto detection, previous bot nukes and jagex's current determination to remove bots should be a clear indication that safety should be our primary concern. I personally would much rather monitor safe color only bots.

If injection was used to support what the color is observing to add confidence, sure, but color imo should always be the primary determinant of what the bot does. Especially as jagex is known to fuck around with item ids and adding in invisible objects and all that stuff. I'm a newbie, but my 2 cents is a no :p Especially in regards to random solvers.
+ jagex will most likely be specifically targetting them soon, due to such clients as tribot.


Do you even know what your talking about? Since when has jagex added a auto-reflection client detection system? Second off, chaning the ID's LIVE IN GAME MAKES NO SENSE WHAT SO EVER. Sorry about caps lol but it's just the truth.

acow

2013-05-14 20:32:34

From: Officer Barbrady
Do you even know what your talking about? Since when has jagex added a auto-reflection client detection system? Second off, chaning the ID's LIVE IN GAME MAKES NO SENSE WHAT SO EVER. Sorry about caps lol but it's just the truth.


From: Tuk
I'm a newbie


I only know what I've been told =]

Flight

2013-05-14 21:05:21

From: Brandon
Ahh don't worry.. You can trust me when I say that "Reflection" in Pascal-Script is NOT that great. Its great but not as great as you'd think it would be. Its not like the reflection PB used to have.

Lags!
Model Recognition is Slow!
Tile clicking is NOT too accurate because you need to get the height right.
Anything too far (roughly 52 tiles) will take more than 20 seconds to find..

The only way Reflection could possibly overcome these is to make it a plugin.. Anything done on the Pascal side for reflection will be pretty slow.

Basic things are a ton faster than colour though. Like finding items in your bank, ensuring that an item is what it is.. Color requires tolerance and constant changing of DTM's to find an item.



Also, if you think about it.. Reflection gives the near exact position of an object. With the current MouseOffset stuff, you're going to have to reset the mouse offset things before clicking every reflection object and set it back for color clicking.


Huh? The most 'lag' I recall with SRL's previous reflection was nothing more than a couple hundred milliseconds, and we never had any plugin dedicated to reflection. I remember our reflection included communicated directly with SMART and the only problems we had then were memory leaks (which most of which were patched up with wrappers in reflection "v2").

Also, the MouseOffset? Are you referring to RS's navigation bar? If that's the case then it's not a problem as this topic is related specifically to Reflection/Injection in SMART for Oldschool RS. If not, what offset are you talking about?

luxrath

2013-05-17 02:47:08

What makes simba attractive to me that it is NOT an injection bot. Injection bots always get caught, or the scripter/bot makers steals account info. I have even heard of the bots being made to automatically dump their gathered resources/bank in to the script writers account (via a bot of is own).

Seriously, dont make Simba in to rsbot 2.0: extra shitty edition

NKN

2013-05-17 07:04:55

From: luxrath
What makes simba attractive to me that it is NOT an injection bot. Injection bots always get caught, or the scripter/bot makers steals account info. I have even heard of the bots being made to automatically dump their gathered resources/bank in to the script writers account (via a bot of is own).

Seriously, dont make Simba in to rsbot 2.0: extra shitty edition

It's not Injection.
it's a reflection compliment. Only going to use for walking and such, get those nice 1,000 hour proggys like Ashaman

Flight

2013-05-17 08:01:20

From: NKN
It's not Injection.
it's a reflection compliment. Only going to use for walking and such, get those nice 1,000 hour proggys like Ashaman


Aye indeed. Should we follow through on the reflection it will be quite limited, only for what's necessary. As NKN said the main goal is for accurate walking, but we'll probably use it to determine aspects of our in-game player, like health & compass angle / pitch.

Obviously using reflection is optional.

Shatterhand

2013-05-17 08:12:44

From: luxrath
What makes simba attractive to me that it is NOT an injection bot. Injection bots always get caught, or the scripter/bot makers steals account info. I have even heard of the bots being made to automatically dump their gathered resources/bank in to the script writers account (via a bot of is own).

Seriously, dont make Simba in to rsbot 2.0: extra shitty edition

A color simba script could do this too. The difference between Simba and other bots is - open source. You can have a look at the code before running it.

Kevin

2013-05-17 12:52:21

From: luxrath
What makes simba attractive to me that it is NOT an injection bot. Injection bots always get caught, or the scripter/bot makers steals account info. I have even heard of the bots being made to automatically dump their gathered resources/bank in to the script writers account (via a bot of is own).

Seriously, dont make Simba in to rsbot 2.0: extra shitty edition


Shatter is right, there is no reason a current simba script can't do all this to you as well. The huge difference is how we're open-source and because of that, you can read the code and figure out if that's about to happen to you.

luxrath

2013-05-17 13:55:38

From: Kevin
Shatter is right, there is no reason a current simba script can't do all this to you as well. The huge difference is how we're open-source and because of that, you can read the code and figure out if that's about to happen to you.


True true, and most leachers (or at least me and my friends do) skim through and search for telltale signs of malicious code (one from another site even had a "opentrade" procedure at the top, not even trying :v), and watch the script operate for 10-15 minutes attended before letting it go unattended.

A big difference that you cant really deny between color and injection is that injection bots have an absolutely atrocious ban rate. And if you do reflection, as previously stated, Jagex will change the hooks in no time.

I still maintain that color is the way forward, and development should focus on refining colorbotting and making it more reliable. That and antiban.

Kevin

2013-05-17 14:09:50

From: luxrath
A big difference that you cant really deny between color and injection is that injection bots have an absolutely atrocious ban rate. And if you do reflection, as previously stated, Jagex will change the hooks in no time.

I still maintain that color is the way forward, and development should focus on refining colorbotting and making it more reliable. That and antiban.


I agree that other botting techniques tend to have higher ban rates… However, that's true for several reasons not entirely dependent on the botting technique.
1)Simba isn't as popular. You don't start your fight against bots by picking on the little guys, you knock out the big targets first and move your way down.
2)We have better antiban. By a longshot. It's crazy and there's no reason these other bots don't have it, but they don't. They rarely even have failsafes. I've watched Powerbot's "amazing" USlayer script and it's terrible. Seriously, there are almost no failsafes, it makes weird inhuman decisions all the time, it gets stuck in infinite loops, and it has no sense of breaks or messing around like real people do. And that's supposed to be one of their better scripts. I can barely believe their ban rates aren't even higher! (This is probably the biggest reason for our safety).
3)Injection does some weird things occasionally that just don't quite happen the same as what a real player even is capable of doing - but that doesn't affect reflection or color bots.

Jagex can easily change the hooks to stop reflection techniques. But we can also have automatic hook updaters and we won't even have to worry about Jagex trying to stop us with that.

All that said… We are a color community/bot. We will focus on color techniques, refining and reliability. It's where we will go simply because of who we are. But even with all that in mind, the 07 client is atrocious. Color does not and can not do nearly the same same things as far as walking is concerned. Any other aspect and I think color can handle it, but walking puts us at such a tremendous disadvantage, I support reflection for it. Noone is proposing an entire switch over to reflection, we just want reflection to cover the things color simply isn't quite capable of and even then leave it up to the individual developers for what they wish to do.

Haxz

2013-05-17 15:13:29

From: Kevin
I agree that other botting techniques tend to have higher ban rates… However, that's true for several reasons not entirely dependent on the botting technique.
1)Simba isn't as popular. You don't start your fight against bots by picking on the little guys, you knock out the big targets first and move your way down.
2)We have better antiban. By a longshot. It's crazy and there's no reason these other bots don't have it, but they don't. They rarely even have failsafes. I've watched Powerbot's "amazing" USlayer script and it's terrible. Seriously, there are almost no failsafes, it makes weird inhuman decisions all the time, it gets stuck in infinite loops, and it has no sense of breaks or messing around like real people do. And that's supposed to be one of their better scripts. I can barely believe their ban rates aren't even higher! (This is probably the biggest reason for our safety).
3)Injection does some weird things occasionally that just don't quite happen the same as what a real player even is capable of doing - but that doesn't affect reflection or color bots.

Jagex can easily change the hooks to stop reflection techniques. But we can also have automatic hook updaters and we won't even have to worry about Jagex trying to stop us with that.

All that said… We are a color community/bot. We will focus on color techniques, refining and reliability. It's where we will go simply because of who we are. But even with all that in mind, the 07 client is atrocious. Color does not and can not do nearly the same same things as far as walking is concerned. Any other aspect and I think color can handle it, but walking puts us at such a tremendous disadvantage, I support reflection for it. Noone is proposing an entire switch over to reflection, we just want reflection to cover the things color simply isn't quite capable of and even then leave it up to the individual developers for what they wish to do.


This is exactly what I want.

If you start trying to script for 07 scape, you will be die-ing for Reflection to walk for you.

Flight and the others that are implementing the Reflection on Smart should give us an update from time to time. I am very excited and have very high expectations of this being a success, came back to the thread to see if there's an update every day lol. :p

Flight

2013-05-17 20:59:48

For the sake of not quoting large blocks of text I'll just say this: luxrath, you make great points and I'm fully in agreement with you for keeping a strong sense of security not matter what you're using, even Simba/SMART/SRL/scripts. I have absolute faith in all of the above but even then I encourage all users to look into these things, at least to get a fair understanding of them enough to know that they're safe.

And Kevin you explained it just right, nicely put mate.

It's not so much the client/bot that will get you banned, it's the scripts themselves, as Kevin pointed out. We're superior to the others because we've been doing this before they even knew RS existed. For years and years SRL has changed parallel with RS, we know what is safe and what's not, we can mimic an average player down to the finest details that you simply will never find in any other bot. We're smart about how stay under the radar and this is reflected in our includes and scripts. So it's not the bot that makes you detectable, it's how you use it.

@Haxz : We're at a stand-still at the moment as SMART, from what I can tell, does not yet have reflection fully implanted. I can't go much further myself so I'm waiting to see where Ben goes with this, if he continues or not. There's also always Brandon's work on his custom SMART that we could always work with. But while it's out of my control to move forward with reflection I'll still continue to work more with our available color-based walking methods, like SPS. At this point we can only advance in progress, we can never lose knowledge we have now so might as well try to make what we have better; keep building.

rj

2013-05-17 21:05:56

From: Flight
For the sake of not quoting large blocks of text I'll just say this: luxrath, you make great points and I'm fully in agreement with you for keeping a strong sense of security not matter what you're using, even Simba/SMART/SRL/scripts. I have absolute faith in all of the above but even then I encourage all users to look into these things, at least to get a fair understanding of them enough to know that they're safe.

And Kevin you explained it just right, nicely put mate.

It's not so much the client/bot that will get you banned, it's the scripts themselves, as Kevin pointed out. We're superior to the others because we've been doing this before they even knew RS existed. For years and years SRL has changed parallel with RS, we know what is safe and what's not, we can mimic an average player down to the finest details that you simply will never find in any other bot. We're smart about how stay under the radar and this is reflected in our includes and scripts. So it's not the bot that makes you detectable, it's how you use it.

@Haxz : We're at a stand-still at the moment as SMART, from what I can tell, does not yet have reflection fully implanted. I can't go much further myself so I'm waiting to see where Ben goes with this, if he continues or not. There's also always Brandon's work on his custom SMART that we could always work with. But while it's out of my control to move forward with reflection I'll still continue to work more with our available color-based walking methods, like SPS. At this point we can only advance in progress, we can never lose knowledge we have now so might as well try to make what we have better; keep building.


From: flight
this is reflected in our includes and scripts.


I sure how it's reflected wink wink :)

Haxz

2013-05-17 21:45:06

From: Flight
For the sake of not quoting large blocks of text I'll just say this: luxrath, you make great points and I'm fully in agreement with you for keeping a strong sense of security not matter what you're using, even Simba/SMART/SRL/scripts. I have absolute faith in all of the above but even then I encourage all users to look into these things, at least to get a fair understanding of them enough to know that they're safe.

And Kevin you explained it just right, nicely put mate.

It's not so much the client/bot that will get you banned, it's the scripts themselves, as Kevin pointed out. We're superior to the others because we've been doing this before they even knew RS existed. For years and years SRL has changed parallel with RS, we know what is safe and what's not, we can mimic an average player down to the finest details that you simply will never find in any other bot. We're smart about how stay under the radar and this is reflected in our includes and scripts. So it's not the bot that makes you detectable, it's how you use it.

@Haxz : We're at a stand-still at the moment as SMART, from what I can tell, does not yet have reflection fully implanted. I can't go much further myself so I'm waiting to see where Ben goes with this, if he continues or not. There's also always Brandon's work on his custom SMART that we could always work with. But while it's out of my control to move forward with reflection I'll still continue to work more with our available color-based walking methods, like SPS. At this point we can only advance in progress, we can never lose knowledge we have now so might as well try to make what we have better; keep building.


Sad to hear. Hope Ben will come back soon. Every single one of my script idea failed due to walking :(

Mat

2013-05-25 14:22:22

Hey long time since I've been here :D
Reflection is a useful thing, back when TRiBot for 07 was just starting out all it had was Colour and tiles walking it made scripts relatively easier to code. So for simba Rs07 I think it'll be a good improvement and give great reliability.
If your not a fan just don't use scripts that have it. (Although I can see most of them will turn to it.)

Mat

Itankbots

2013-05-25 17:13:34

Ive never had trouble walking before, Only reason I would use reflection is for looting items that are in the same color background as the item.

rj

2013-05-25 17:40:21

From: Itankbots
Ive never had trouble walking before, Only reason I would use reflection is for looting items that are in the same color background as the item.


You have never had trouble walking in osr…? (1-3 clicks doesn't count) :p

BenLand100

2013-06-05 18:31:26

From: Flight
I'm just trying to understand it and get anything to work. :/ I'll worry about that later.

On a related note, I had to add return types to the reflection-related functions in SmartRemote.H. @BenLand100: Is there a reason why none of these functions returned anything? I changed them up to this, can you tell me if these are correct? (I edited these in the style of the reflection functions in the old SMART)


(char*)"exp_getFieldObject", (char*)"function SmartGetFieldObject(objref: integer; path: string): integer;",
(char*)"exp_isPathValid", (char*)"function SmartIsPathValid(objref: integer; path: string): boolean;",
(char*)"exp_getFieldBoolean", (char*)"function SmartGetFieldBoolean(objref: integer; path: string): boolean;",
(char*)"exp_getFieldLongH", (char*)"function SmartGetFieldLongH(objref: integer; path: string): integer;",
(char*)"exp_getFieldLongL", (char*)"function SmartGetFieldLongL(objref: integer; path: string): integer;",
(char*)"exp_getFieldInt", (char*)"function SmartGetFieldInt(objref: integer; path: string): integer;",
(char*)"exp_getFieldShort", (char*)"function SmartGetFieldShort(objref: integer; path: string): integer;",
(char*)"exp_getFieldFloat", (char*)"function SmartGetFieldFloat(objref: integer; path: string): extended;",
(char*)"exp_getFieldDouble", (char*)"function SmartGetFieldDouble(objref: integer; path: string): extended;",
(char*)"exp_getFieldByte", (char*)"function SmartGetFieldByte(objref: integer; path: string): string;",

I believe I was either wrong with those or wrong actually using the function as I get an error "Error: Could not call proc at line…". I tried these 3, perhaps you could point out where I'm going wrong at:

SmartGetFieldInt(-1, 'hw.client');
SmartGetFieldInt(0, 'hw.client');
SmartGetFieldInt(1, 'hw.client');

This is using your SMART 8.1 with the reflection backbone you added about a month ago, loaded in Oldschool RS. I believe that hook is correct but even if not it would be unrelated to my error.


Edit:
Ok now I have all of the hooks for the current OSR client revision. I did a lot of digging through some other client that hosted the most recent hooks on their site; they sure went through a lot of trouble to keep these hidden…


You're right about the function arguments and Brandon was right about adding them to the exports. What happened was I got bored on a 5 hour flight to California and did some dev work on adding reflection back in, but then the flight was basically over and I never had a large chunk of time to devote to it again. Really, I think the hard parts are "done" but the kinks need to be worked out. The access violation you got was probably related to me fucking up how I passed arguments over the shared memory or something along those lines. I may, at some point, have a chance too look at it again, but I wouldn't hold your breath. If you can fix the reflection problems and submit a pull request, I'll probably accept it, unless the code is just terrible. I don't see how it could be though, since I basically did the framing and just the details need to be worked out.

E: The process goes like this
1) Simba invokes the native exp_* method in the plugin
2) Arguments get coppied into the shared memory
3) The ID of the function is sent over a socket to the SMART process (callClient invoked)
4) The SMART process copies the arguments out of the shared memory
5) The function with the given ID is invoked in the SMART process
6) The actual work is done (I *believe* this part is fine, should be the same as older versions)
7) SMART process function returns, result coppied into shared memory (usually on top of the old arguments)
8) Function ID is sent back over socket to Simba process (callClient returns)
9) Native exp_* method copies the result out of the shared memory and returns to Simba

Needless to say, there are a million things that could go wrong. I would initially suspect problems related to shared memory / function ID mismatches. On top of that, I didn't check *any* of the code I comitted to github yet because it's not at a testable stage, really.

p.s. if you need to bug me for details, it's easy enough to catch me on IRC

Brandon

2013-06-05 23:25:14

:O Ben you're alive! :D Yeah I'll upload to git or send a pull or something in a sec (in reply to that other thread I got tagged in).




@Flight; No those exports aren't correct. I know Ben said that and he's right but to be exact, there is a size difference and it matters "somewhat". For example, if I exported a GLHook proc as extended instead of single, it would crash the program or return weird results and at times it'd return nothing (Happened already :( )..

The reason is because of the difference in size/bytes..

Ex:

C++ Float = PS Single.
C++ Double = PS Double. 8bytes.
C++ string/char* = PS string/PChar.
C++ does not have extended type which in pascal is 10 bytes..

char is not exported as string.. Those are different.

A string is a POINTER to an array of chars. A char in C++ is a char in Pascal script. Both as 1 byte in size and have the same range.


You can see the difference:

PS: http://www.den4b.com/wiki/ReNamer:Pascal_Script:Types
CPP: http://msdn.microsoft.com/en-us/library/s3f49ktz(v=vs.80).aspx

My Cpp Table (half-way on the page): http://brandon-t.github.io/ArtOfCPlusPlus/Cpp02.html


All in all:



extern "C" void* exp_getFieldObject(void* obj, char* path);
extern "C" bool exp_isPathValid(void* obj, char* path);
extern "C" bool exp_getFieldBoolean(void* obj, char* path);
extern "C" unsigned int exp_getFieldLongH(void* obj, char* path);
extern "C" unsigned int exp_getFieldLongL(void* obj, char* path);
extern "C" int exp_getFieldInt(void* obj, char* path);
extern "C" int exp_getFieldShort(void* obj, char* path);
extern "C" double exp_getFieldFloat(void* obj, char* path);
extern "C" double exp_getFieldDouble(void* obj, char* path);
extern "C" char exp_getFieldByte(void* obj, char* path);

(char*)"exp_getFieldObject", (char*)"function SmartGetFieldObject(objref: integer; path: string): Integer;",
(char*)"exp_isPathValid", (char*)"function SmartIsPathValid(objref: integer; path: string): boolean;",
(char*)"exp_getFieldBoolean", (char*)"function SmartGetFieldBoolean(objref: integer; path: string): boolean;",
(char*)"exp_getFieldLongH", (char*)"function SmartGetFieldLongH(objref: integer; path: string): Cardinal;",
(char*)"exp_getFieldLongL", (char*)"function SmartGetFieldLongL(objref: integer; path: string): Cardinal;",
(char*)"exp_getFieldInt", (char*)"function SmartGetFieldInt(objref: integer; path: string): Integer;",
(char*)"exp_getFieldShort", (char*)"function SmartGetFieldShort(objref: integer; path: string): Integer;",
(char*)"exp_getFieldFloat", (char*)"function SmartGetFieldFloat(objref: integer; path: string): Double;",
(char*)"exp_getFieldDouble", (char*)"function SmartGetFieldDouble(objref: integer; path: string): Double;",
(char*)"exp_getFieldByte", (char*)"function SmartGetFieldByte(objref: integer; path: string): char;"


EXPORTS
GetPluginABIVersion
GetFunctionCount
GetFunctionInfo
exp_clickMouse
exp_clickMousePlus
exp_getDebugArray
exp_getImageArray
exp_getMousePos
exp_getRefresh
exp_holdKey
exp_holdMouse
exp_holdMousePlus
exp_isActive
exp_isBlocking
exp_isKeyDown
exp_moveMouse
exp_releaseKey
exp_releaseMouse
exp_releaseMousePlus
exp_isMouseButtonHeld
exp_sendKeys
exp_setDebug
exp_setTransparentColor
exp_setGraphics
exp_setRefresh
exp_windMouse
exp_setEnabled
exp_pairClient
exp_killClient
exp_getCurrent
exp_spawnClient
exp_getClients
exp_clientID
exp_getFieldObject
exp_isPathValid
exp_getFieldBoolean
exp_getFieldLongH
exp_getFieldLongL
exp_getFieldInt
exp_getFieldShort
exp_getFieldFloat
exp_getFieldDouble
exp_getFieldByte
EIOS_RequestTarget=EIOS_RequestTarget@4
EIOS_ReleaseTarget=EIOS_ReleaseTarget@4
EIOS_GetTargetDimensions=EIOS_GetTargetDimensions@12
EIOS_GetImageBuffer=EIOS_GetImageBuffer@4
EIOS_UpdateImageBuffer=EIOS_UpdateImageBuffer@4
EIOS_GetMousePosition=EIOS_GetMousePosition@12
EIOS_MoveMouse=EIOS_MoveMouse@12
EIOS_HoldMouse=EIOS_HoldMouse@16
EIOS_ReleaseMouse=EIOS_ReleaseMouse@16
EIOS_IsMouseHeld=EIOS_IsMouseHeld@8
EIOS_SendString=EIOS_SendString@16
EIOS_HoldKey=EIOS_HoldKey@8
EIOS_ReleaseKey=EIOS_ReleaseKey@8
EIOS_IsKeyHeld=EIOS_IsKeyHeld@8


Works for me :l

Flight

2013-06-06 01:32:59

Thank you for the advice Brandon, that makes sense and it's nice to know that it was a mistake I made. I'll add them to your client and see how far I can get this afternoon.