Quote:
Originally posted by Etain+Jun 27 2006, 13:21--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>QUOTE (Etain @ Jun 27 2006, 13:21)</td></tr><tr><td id='QUOTE'>
Quote:
Originally posted by -tester@Jul 18 2006, 00:24
<!--QuoteBegin--Gera
|
Quote:
@Jul 13 2006, 19:04
lol, seems like Etain dissapeared =P
|
doesnt matter people can just decompile this and as its .net convert it to what ever langueage they are most comfortable with (j#, c#, vb)
|
No respect for work done by other equal no more update of program.
If u r that good in decompiling, go decompile the game instead.
PROJECT CLOSE
[/b][/quote]
ermm I hope you didnt close this cause of what i said, I previously posted telling you to obfuscate your program but you didnt and you hadnt provided any updates for a while, dont use me as a scapegoat.
I told you to obfuscate your app because of the way .NET works, if you dont know the EXE isnt truely compiled until it is FIRST RUN ON THE CLIENT MACHINE making the framework extremely flexible but at the same time making non-obfuscated EXE very easy to DECOMPILE NOT DISASSEMBLE, you wouldn't be able to decompile the game although you could disassemble it.
Again if you think i was being disrespectful I apologise to you, but I asure you I wasnt I was trying to help you and get you to secure your source.
Example of how easy it is to decompile, this took me about 30 second to get this proceedure, its not perfect but it is a good start for a programmer, and as its .Net I can decompile to any language, Hopefully you appreciate what I am saying when you see this, as I said it wasnt a respect thing I had told you to obfuscate it and when it seemed like you had left I merely replied to say anyone can continue this because you didnt obfuscate it.
in j#
Code:
private void castSkill(String skill, boolean self)
{
java.lang.Throwable throwable;
if(skill == null)
{
return;
}
String txt = com.ms.vjsharp.lang.<VerifierFix>.genCastToString(this.mc.p.skillLvl.get(skill));
if(txt == null)
{
return;
}
try
{
int i1 = 0;
Object obj = this.mc.lock;
com.ms.vjsharp.lang.<CorArrayWrapper>.Enter(obj);
try
{
i1 = ((int)(System.Int32)(new java.util.Date().getTime())) - this.mc.td;
int i2 = ((int)(System.Int32)(this.mc.lastCast + ((long)(System.Int64)(300))));
if(i2 > i1)
{
i1 = i2;
}
this.mc.lastCast = ((long)(System.Int64)(i1));
}
finally
{
System.Threading.Monitor.Exit(obj);
}
int i3 = 0;
int i4 = 0;
int i5 = 0;
if(self)
{
i3 = this.mc.id;
i4 = this.mc.lx;
i5 = this.mc.ly;
}
else
{
String txt1 = null;
i3 = this.mc.lastTarget;
if(this.mc.id2name.get(String.valueOf(new java.lang.StringBuffer().append(i3).append(""))) != null)
{
txt1 = com.ms.vjsharp.lang.<VerifierFix>.genCastToString(this.mc.id2pos.get(String.valueOf(new java.lang.StringBuffer().append(i3).append(""))));
}
else
{
txt1 = com.ms.vjsharp.lang.<VerifierFix>.genCastToString(this.mc.mob2pos.get(String.valueOf(new java.lang.StringBuffer().append(i3).append(""))));
}
if(txt1 != null)
{
int i6 = com.ms.vjsharp.lang.StringImpl.indexOf(txt1, " ");
i4 = java.lang.Integer.parseInt(com.ms.vjsharp.lang.StringImpl.substring(txt1, 0, i6));
i5 = java.lang.Integer.parseInt(com.ms.vjsharp.lang.StringImpl.substring(txt1, i6 + 1));
}
}
if(((i3 != 0) && (i4 != 0)) && (i5 != 0))
{
pCore.QOProxy.sendMapPacketToServer(this.mc, pCore.QOProxy.skill(this.mc.id, i3, i4, i5, java.lang.Integer.parseInt(skill), java.lang.Byte.parseByte(txt), i1), true);
}
}
catch (System.Exception )
{
pCore.QOProxy.alert(this.mc, "Error casting.");
pCore.QOProxy.UI.msg(String.valueOf(new java.lang.StringBuffer().append(this.mc.id).append(" - Error in Castor Thread")));
}
}
private void postAction()
{
/* Evaluation version. */
}
/** @attribute JavaThrownExceptions("1;java/lang/CloneNotSupportedException;"/** @attribute JavaFlags(4227077)*/
public override Object MemberwiseClone()
{
com.ms.vjsharp.lang.ObjectImpl.clone(this);
return super.MemberwiseClone();
}
in VB.Net
Code:
Private Sub castSkill(ByVal skill As String, ByVal self As Boolean)
Dim throwable As Throwable
If skill Is Nothing Then
Return
End If
Dim txt As String = <VerifierFix>.genCastToString(Me.mc.p.skillLvl.[get](skill))
If txt Is Nothing Then
Return
End If
Try
Dim i1 As Integer = 0
Dim obj As Object = Me.mc.lock
<CorArrayWrapper>.Enter(obj)
Try
i1 = CType(New Date.getTime,Integer) - Me.mc.td
Dim i2 As Integer = CType(Me.mc.lastCast + CType(300,Long),Integer)
If i2 > i1 Then
i1 = i2
End If
Me.mc.lastCast = CType(i1,Long)
Finally
Monitor.[Exit](obj)
End Try
Dim i3 As Integer = 0
Dim i4 As Integer = 0
Dim i5 As Integer = 0
If self Then
i3 = Me.mc.id
i4 = Me.mc.lx
i5 = Me.mc.ly
Else
Dim txt1 As String = Nothing
i3 = Me.mc.lastTarget
If Not Me.mc.id2name.[get](New StringBuffer.append(i3).append("").ToString) Is Nothing Then
txt1 = <VerifierFix>.genCastToString(Me.mc.id2pos.[get](New StringBuffer.append(i3).append("").ToString))
Else
txt1 = <VerifierFix>.genCastToString(Me.mc.mob2pos.[get](New StringBuffer.append(i3).append("").ToString))
End If
If Not txt1 Is Nothing Then
Dim i6 As Integer = StringImpl.indexOf(txt1, " ")
i4 = Integer.parseInt(StringImpl.substring(txt1, 0, i6))
i5 = Integer.parseInt(StringImpl.substring(txt1, i6 + 1))
End If
End If
If ((i3 <> 0) AndAlso (i4 <> 0)) AndAlso (i5 <> 0) Then
QOProxy.sendMapPacketToServer(Me.mc, QOProxy.skill(Me.mc.id, i3, i4, i5, Integer.parseInt(skill), Byte.parseByte(txt), i1), true)
End If
Catch
QOProxy.alert(Me.mc, "Error casting.")
QOProxy.UI.msg(New StringBuffer.append(Me.mc.id).append(" - Error in Castor Thread").ToString)
End Try
End Sub
Private Sub postAction()
'Evaluation version.
End Sub
<JavaThrownExceptions("1;java/lang/CloneNotSupportedException;"), _
JavaFlags(4227077)> _
Public Overrides Function MemberwiseClone() As Object
ObjectImpl.clone(Me)
Return MyBase.MemberwiseClone
End Function
in C#
Code:
public class castor : java.lang.Thread
{
private MapConnection mc;
private string defSkill;
private string offSkill;
private int cond;
public castor(MapConnection m, string skill, int postCond, string oSkill) : base()
{
this.mc = m;
this.defSkill = skill;
this.offSkill = oSkill;
this.cond = postCond;
}
public override void run()
{
// Evaluation version.
}
private void castSkill(string skill, bool self)
{
Throwable throwable;
if (skill == null)
{
return;
}
string txt = <VerifierFix>.genCastToString(this.mc.p.skillLvl.@get(skill));
if (txt == null)
{
return;
}
try
{
int i1 = 0;
object obj = this.mc.@lock;
<CorArrayWrapper>.Enter(obj);
try
{
i1 = ((int)(new Date().getTime())) - this.mc.td;
int i2 = ((int)(this.mc.lastCast + ((long)(300))));
if (i2 > i1)
{
i1 = i2;
}
this.mc.lastCast = ((long)(i1));
}
finally
{
Monitor.Exit(obj);
}
int i3 = 0;
int i4 = 0;
int i5 = 0;
if (self)
{
i3 = this.mc.id;
i4 = this.mc.lx;
i5 = this.mc.ly;
}
else
{
string txt1 = null;
i3 = this.mc.lastTarget;
txt1 = this.mc.id2name.@get(new StringBuffer().append(i3).append("").ToString()) != null ? <VerifierFix>.genCastToString(this.mc.id2pos.@get(new StringBuffer().append(i3).append("").ToString())) : <VerifierFix>.genCastToString(this.mc.mob2pos.@get(new StringBuffer().append(i3).append("").ToString()));
if (txt1 != null)
{
int i6 = StringImpl.indexOf(txt1, " ");
i4 = Integer.parseInt(StringImpl.substring(txt1, 0, i6));
i5 = Integer.parseInt(StringImpl.substring(txt1, i6 + 1));
}
}
if (((i3 != 0) && (i4 != 0)) && (i5 != 0))
{
QOProxy.sendMapPacketToServer(this.mc, QOProxy.skill(this.mc.id, i3, i4, i5, Integer.parseInt(skill), java.lang.Byte.parseByte(txt), i1), true);
}
}
catch
{
QOProxy.alert(this.mc, "Error casting.");
QOProxy.UI.msg(new StringBuffer().append(this.mc.id).append(" - Error in Castor Thread").ToString());
}
}
private void postAction()
{
// Evaluation version.
}
[JavaThrownExceptions("1;java/lang/CloneNotSupportedException;")]
[JavaFlags(4227077)]
public override object MemberwiseClone()
{
ObjectImpl.clone(this);
return base.MemberwiseClone();
}
Delphi??
Code:
procedure castor.castSkill (skill : String; self : Boolean);
var
txt: String;
sbt: ShortInt;
i: Integer;
i1: Integer;
i2: Integer;
i3: Integer;
i4: Integer;
i5: Integer;
txt1: String;
i6: Integer;
exception: Exception;
obj: System.Object;
throwable: Throwable;
begin
if (skill = nil) then
begin
exit;
end;
txt := <VerifierFix>.genCastToString(Self.mc.p.skillLvl.get(skill));
if (txt = nil) then
begin
exit;
end;
try
sbt := Byte.parseByte(txt);
i := Integer.parseInt(skill);
i1 := 0;
obj := Self.mc.lock;
<CorArrayWrapper>.Enter(obj);
try
i1 := Integer(Date.Create.getTime) - Self.mc.td;
i2 := Integer(Self.mc.lastCast + Int64(300));
if (i2 > i1) then
begin
i1 := i2;
end;
Self.mc.lastCast := Int64(i1);
finally
Monitor.Exit(obj);
end;
i3 := 0;
i4 := 0;
i5 := 0;
if (self) then
begin
i3 := Self.mc.id;
i4 := Self.mc.lx;
i5 := Self.mc.ly;
end
else
begin
txt1 := nil;
i3 := Self.mc.lastTarget;
if (Self.mc.id2name.get(StringBuffer.Create.append(i3).append('').ToString) <> nil) then
begin
txt1 := <VerifierFix>.genCastToString(Self.mc.id2pos.get(StringBuffer.Create.append(i3).append('').ToString));
end
else
begin
txt1 := <VerifierFix>.genCastToString(Self.mc.mob2pos.get(StringBuffer.Create.append(i3).append('').ToString));
end;
if (txt1 <> nil) then
begin
i6 := StringImpl.indexOf(txt1, ' ');
i4 := Integer.parseInt(StringImpl.substring(txt1, 0, i6));
i5 := Integer.parseInt(StringImpl.substring(txt1, i6 + 1));
end;
end;
if (((i3 <> 0) and (i4 <> 0)) and (i5 <> 0)) then
begin
QOProxy.sendMapPacketToServer(Self.mc, QOProxy.skill(Self.mc.id, i3, i4, i5, i, sbt, i1), true);
end;
except
on System.Exception do
begin
exception := Exception(throwable);
QOProxy.alert(Self.mc, 'Error casting.');
QOProxy.UI.msg(StringBuffer.Create.append(Self.mc.id).append(' - Error in Castor Thread').ToString);
end;
end;
end;
C++
Code:
inline System.Void castor::castSkill(System.String * skill, System.Boolean self)
{
java::lang::Throwable throwable;
if ((skill == 0))
{
return;
}
System.String txt = com::ms::vjsharp::lang::<VerifierFix>::genCastToString(this->mc->p->skillLvl->get(skill));
if ((txt == 0))
{
return;
}
try
{
System.Int32 i1 = 0;
System.Object obj = this->mc->lock;
com::ms::vjsharp::lang::<CorArrayWrapper>::Enter(obj);
try
{
i1 = ((*__try_cast<__box System.Int32 * >(new java::util::Date()->getTime())) - this->mc->td);
System.Int32 i2 = (System.Int32)(this->mc->lastCast + (System.Int64)300);
if ((i2 > i1))
{
i1 = i2;
}
this->mc->lastCast = (System.Int64)i1;
}
__finally
{
System.Threading.Monitor::Exit(obj);
}
System.Int32 i3 = 0;
System.Int32 i4 = 0;
System.Int32 i5 = 0;
if ((self != false))
{
i3 = this->mc->id;
i4 = this->mc->lx;
i5 = this->mc->ly;
}
else
{
System.String txt1 = 0;
i3 = this->mc->lastTarget;
if ((this->mc->id2name->get(new java::lang::StringBuffer()->append(i3)->append(S"")->ToString()) != 0))
{
txt1 = com::ms::vjsharp::lang::<VerifierFix>::genCastToString(this->mc->id2pos->get(new java::lang::StringBuffer()->append(i3)->append(S"")->ToString()));
}
else
{
txt1 = com::ms::vjsharp::lang::<VerifierFix>::genCastToString(this->mc->mob2pos->get(new java::lang::StringBuffer()->append(i3)->append(S"")->ToString()));
}
if ((txt1 != 0))
{
System.Int32 i6 = com::ms::vjsharp::lang::StringImpl::indexOf(txt1, S" ");
i4 = java::lang::Integer::parseInt(com::ms::vjsharp::lang::StringImpl::substring(txt1, 0, i6));
i5 = java::lang::Integer::parseInt(com::ms::vjsharp::lang::StringImpl::substring(txt1, (i6 + 1)));
}
}
if ((((i3 != 0)
&& (i4 != 0))
&& (i5 != 0)))
{
:QOProxy::sendMapPacketToServer(this->mc, :QOProxy::skill(this->mc->id, i3, i4, i5, java::lang::Integer::parseInt(skill), java::lang::Byte::parseByte(txt), i1), true);
}
}
catch (System.Exception *)
{
:QOProxy::alert(this->mc, S"Error casting.");
:QOProxy::UI->msg(new java::lang::StringBuffer()->append(this->mc->id)->append(S" - Error in Castor Thread")->ToString());
}