Zum Inhalt wechseln

Als Gast hast du nur eingeschränkten Zugriff!


Anmelden 

Benutzerkonto erstellen

Du bist nicht angemeldet und hast somit nur einen sehr eingeschränkten Zugriff auf die Features unserer Community.
Um vollen Zugriff zu erlangen musst du dir einen Account erstellen. Der Vorgang sollte nicht länger als 1 Minute dauern.

  • Antworte auf Themen oder erstelle deine eigenen.
  • Schalte dir alle Downloads mit Highspeed & ohne Wartezeit frei.
  • Erhalte Zugriff auf alle Bereiche und entdecke interessante Inhalte.
  • Tausche dich mich anderen Usern in der Shoutbox oder via PN aus.
 

   

Foto

Frage zu einer Ausgabe von ILSpy

- - - - -

  • Bitte melde dich an um zu Antworten
7 Antworten in diesem Thema

#1
kakao1

kakao1

    Noob

  • Members
  • PIPPIP
  • Likes
    1
  • 10 Beiträge
  • 0 Bedankt

Hi,

 

ich bin neu hier im Metier und versuche mich gerade an ILSpy und versuche grob den Code eines einfachen Programmes zu verstehen.

 

Bei folgendem hapert es aber, kann mir jemand sagen, wie ich die Zeile "'The following..." interpretieren kann?

 

Der folgende Ausdruck wird als un/checked-Ausdruck verpackt, so würde ich es verstehen, wieso kommen diese Zeilen?

num2 = 7
' The following expression was wrapped in a unchecked-expression
' The following expression was wrapped in a checked-expression
Dim num9 As Long = CLng((Strings.Asc(Strings.Mid(Me.mstrText, CInt(num8), 1)) - 59))
IL_6B:

genauso wie hier:

' The following expression was wrapped in a checked-statement
Dim num7 As Long = CLng(Math.Round(CDec(Conversion.Int(VBMath.Rnd() * 256F))))
IL_52:
num2 = 5
StringType.MidStmtStr(Me.mstrText, CInt(num4), 1, Conversions.ToString(Strings.Chr(CInt((num6 Xor num7)))))

Grüße

 



#2
kakao1

kakao1

    Noob

  • Members
  • PIPPIP
  • Likes
    1
  • 10 Beiträge
  • 0 Bedankt

241 Aufrufe ohne Antwort, also schließe ich daraus, hier sind keine Anfängerfragen erwünscht, verstanden.



#3
smc2014

smc2014

    Moderator

  • Moderator
  • Likes
    344
  • 576 Beiträge
  • 240 Bedankt
  • Spender
  • Android [root]
  • Windows, Linux

Es dient zu einer Information, diese muss nicht im Code integriert werden.

241 Aufrufe, bedeuten NICHTS! Wenn du mal unten in der Leiste siehst, erkennst Du folgendes:

"Dieses Thema wurde von 17 Mitgliedern gelesen." (stand 25.06.2014 / 21:13uhr)

Also haben folglich 17 Personen es gelesen und du wirst wohl diese Seite sehr oft besucht haben.

 

 

Benutze doch nächstes mal einfach den Push Button. Denn wenn dein Thread "untergekommen" ist, weil viele andere Themen noch waren, kann auch keiner darauf eine Antwort geben. Und wenn jemand dir geantwortet hat, erhälst du eine Benachrichtigung (ausser du hast diese deaktiviert)

 

Danke BR / LG

 

BTW: Um einen Code auszukommentieren , vor der gewünschten Zeile einfach //


Bearbeitet von smc2014, 25 June 2016 - 20:17 Uhr.

  • paulaner, hacked und kakao1 gefällt das

#4
paulaner

paulaner

    Hacker

  • Premium Member
  • Likes
    50
  • 182 Beiträge
  • 13 Bedankt
Respekt smc2014, jemanden nach so einer dreisten Äußerung noch so eine ausführliche und freundliche Antwort zu liefern.

Hat er meiner Meinung nach nicht verdient.

grüße
  • Caruso gefällt das

#5
pdr0

pdr0

    Pentester

  • Premium Member
  • Likes
    86
  • 148 Beiträge
  • 87 Bedankt

241 Aufrufe ohne Antwort, also schließe ich daraus, hier sind keine Anfängerfragen erwünscht, verstanden.

 

TL;DR

Benutz dnspy und komm mal runter, du hast keinen Anspruch auf Hilfe.

 

 

Längere Version ab hier.

 

Zuerst die Microsoft Dokumentation, die du selber hättest googlen können.

 

Checked und Unchecked (C#-Referenz)

Please Login HERE or Register HERE to see this link!

 

 

Warum benutzt man trotzdem unchecked?

"Custom GetHashCode implementations are good examples of scenarios where unchecked can be useful"

Please Login HERE or Register HERE to see this link!

 

 

Guck dir den Code beim folgenden Link an,

Please Login HERE or Register HERE to see this link!

.

public static object DecryptText(string strText, string strPwd)
{
string str = string.Empty;
strPwd = Strings.UCase(strPwd);
if ((uint)Strings.Len(strPwd) > 0U)
{
  int num1 = 1;
  int num2 = Strings.Len(strText);
  int Start = num1;
  while (Start <= num2)
  {
    int num3 = checked(Strings.Asc(Strings.Mid(strText, Start, 1)) - Strings.Asc(Strings.Mid(strPwd, unchecked(Start % Strings.Len(strPwd)) + 1, 1)));
    str = str + Conversions.ToString(Convert.ToChar(Conversions.ToString(num3) + Conversions.ToString((int)byte.MaxValue)));
    checked { ++Start; }
  }
}
else
str = strText;
return (object)str;
}

Besonders die Stelle, die ähnlich zu deiner Zeile ist

int num3 = checked(Strings.Asc(Strings.Mid(strText, Start, 1)) - Strings.Asc(Strings.Mid(strPwd, unchecked(Start % Strings.Len(strPwd)) + 1, 1)));

Strings.Len(strPwd) gibt ein int32 zurück und wird nirgends gechecked im Gegensatz zu "Start". Warum es ein Problem ist, steht in den Link über unchecked.

 

Ich denke, dass es bei dir an Cint liegt. Diese Funktion gibt auch negative Werte zurück.

Please Login HERE or Register HERE to see this link!

MyNumber = CInt(-99.2)   ' Returns -99.

Wenn num8 negativ ist gibt es eine ArgumentException,

Please Login HERE or Register HERE to see this link!

Strings.Mid(Me.mstrText, CInt(num8), 1)


Thanked by 2 Members:
GenDrive , kakao1

#6
kakao1

kakao1

    Noob

  • Members
  • PIPPIP
  • Likes
    1
  • 10 Beiträge
  • 0 Bedankt

Das habe ich nicht gesehen smc, dann entschuldige ich mich für meinen Ton, das hier ist ja auch nur eure Freizeit.

 

Vielen Dank für die ausführliche Antwort pdr0, jetzt wird mir einiges klarer, ich werde das tool ausprobieren

 

Grüße



#7
kakao1

kakao1

    Noob

  • Members
  • PIPPIP
  • Likes
    1
  • 10 Beiträge
  • 0 Bedankt

Hi,

 

ich konnte nun das Passwort aus dem Programm herauslesen, danke nochmal an pdr0 und die Anderen.

 

Nun versuche ich einzelne Sequenzen in C zu schreiben und scheitere derzeit daran die Zufallszahlen der rnd() mit rand() zu generieren, vielleicht hat ja doch noch jemand Lust mir einen Tip zu geben, trotz des etwas schlechten Start meinerseits.

long num7 = (long)Math.Round((double)Conversion.Int(unchecked(VBMath.Rnd() * 256f)));
public static float Rnd()
		{
			return VBMath.Rnd(1f);
		}
public static float Rnd(float Number) //Number ist 1
		{
			ProjectData projectData = ProjectData.GetProjectData();
			int num = projectData.m_rndSeed;  // erster Durchlauf num=2093565
			if ((double)Number != 0.0)
			{
				if ((double)Number < 0.0)
				{
					num = BitConverter.ToInt32(BitConverter.GetBytes(Number), 0);
					long num2 = (long)num;
					num2 &= (long)((ulong)-1);
					num = checked((int)(num2 + (num2 >> 24) & 16777215L));
				}
				num = checked((int)(unchecked((long)num) * 1140671485L + 12820163L & 16777215L));
			}
			projectData.m_rndSeed = num; // num = 11795660
			return (float)num / 16777216f;
		}

ich komme weder auf die erste Zuweisung von 2093565 noch auf den Rückgabewert von 0.703...

 

Hat jemand einen Tip?

 

Eine unschöne Möglichkeit wäre sicherlich die int num = projectData.m_rndSeed Werte in einem Array zu speichern


Bearbeitet von kakao1, 27 December 2016 - 21:55 Uhr.


#8
kakao1

kakao1

    Noob

  • Members
  • PIPPIP
  • Likes
    1
  • 10 Beiträge
  • 0 Bedankt

So kleine Abschlussmeldung falls es jemanden interessiert: so einfach wie ich mir das vorstellte, ging es nicht mit dem Array, das klappte nur mit dem einen Key, das war nicht Sinn der Sache. Der Punkt war, der unbekannte Wert von "projectData.m_rndSeed", nach etwas Recherche habe ich herausgefunden, dass wenn man rnd() ohne Systemzeitparameter startet m_rndSeed immer bei 0x50000 initialisiert wird. Bei jedem Aufruf von rnd() oder random() wird m_rndSeed vom Aufruf davor weitergereicht, verrechnet und wieder abgespeichert quasi static. Dann fix rnd() und randomize() nachgebaut, die Multiplikation von Werten und Xor vom Entwickler des Tools hinzugefügt, das 64mal+Passwort durchlaufen lassen und fertig ist mein erstes reverseengineertes Programm. Für euch sicherlich lächerlich, aber ich fange ja erst an ;)

 

Es hat jetzt nicht von Juni an gedauert, ich habe erst vorgestern dnspy installiert, klasse Tool  !


Bearbeitet von kakao1, 30 December 2016 - 13:20 Uhr.

  • smc2014 gefällt das



  Thema Forum Themenstarter Statistik Letzter Beitrag

Dieses Thema wurde von 56 Mitglied(ern) gelesen


    _)_, 3xc3ll3nt, 3XPL01T, Bloodman, Bot4ng, Caruso, Creo, darknide, dev-0, Dschahid, dvalar, easysurfer, Erikson, eXact, FatalityMods, Framerater, funstyler, gtawelt, h04x, hacked, hanshenkelman, Haxlor, Irhabi, Jackdaniels, JohnR, Kaase, kakao1, kiwitone, Kozuki, leonalexkraus, macinchris, mantwohouse, mettbrot, NichtDiePolizei, nischke, Noki3310, notfound, Onek, PadX18, paulaner, pdr0, peppi200, pi^2, pwcca, rat123, SepaX, Slixer, smc2014, Stanley, Swiper, Terrafaux, vital, wbx32, XCherry, xxas, Zerobyte
Die besten Hacking Tools zum downloaden : Released, Leaked, Cracked. Größte deutschsprachige Hacker Sammlung.