Προς το περιεχόμενο

erwthsh sxetika me .exe


DungeonaS

Προτεινόμενες αναρτήσεις

Δημοσ.

Ναι, αν πρόκειται για κλασσικό EXE αρχείο, το οποίο δεν είναι προστατευμένο βέβαια, αρκεί να γνωρίζεις Assembly (για τον επεξεργαστή που γράφτηκε η εφαρμογή βέβαια -πχ. Intel x86 Assembly) και να έχεις μεγάλη όρεξη και διάθεση για ψάξιμο -σε αυτή την περίπτωση ψάξε για το IDA Disassembler (μόνο dis-assembler) ή το OllyDbg ή στην χειρότερη περίπτωση το WinDebugger (WinDeb 8.9) -disassemblers και debuggers ταυτόχρονα.

 

Παλαιότερα θα σου πρότεινα και το SoftICE, ένα πανίσχυρο System Level Debugger/Disassembler αλλά αυτό συγχωρέθηκε πια..

 

Αν το λογισμικό τώρα είναι γραμμένο σε Delphi ή C/C++ Builder, ισχύουν τα παραπάνω, όμως σε συμβουλεύω να ψάξεις για το DeDe Debugger (κάπως γερασμένο) ή το PE Explorer τα οποία έχουν έναν debugger προσαρμοσμένο (VCL profiler/disassembler) ώστε να αναλύει καλύτερα τα προγράμματα αυτών των εργαλείων -και εδώ όμως η Assembly είναι απαραίτητη.

 

Αν το λογισμικό είναι γραμμένο σε κάποια έκδοση της Visual BASIC από την 6 και κάτω, ψάξε για Visual BASIC disassembler ή debugger όλο και κάτι θα βρεις -και εδώ η Assembly είναι απαραίτητη βέβαια (για VB 5+).

 

Αν τώρα το εκτελέσιμο είναι γραμμένο σε .NET (C#, VB .NET) ψάξε για το Reflector .NET, σε αυτή την περίπτωση και αν το πρόγραμμα δεν είναι προστατευμένο, θα δεις κατευθείαν τον κώδικα του, στην γλώσσα που γράφτηκε ή που σε εξυπηρετεί (εδώ δεν χρειάζεσαι γνώσεις Assembly!).

 

Τα ίδια με το .NET ισχύουν και για τα προγράμματα που είναι γραμμένα σε Java -οπότε δες για Java Decompiler κτλ.

 

Αυτά.

Δημοσ.

Mιας και ψάχνω παρόμοιο ας το ρωτήσω εδωπέρα...

 

Γίνεται απο ένα .exe ή απο τον source code να δω την γλώσσα μηχανής του προγραμμάτος (δηλαδή να το δω σε 0 και 1)....

Δημοσ.

Αν και είναι πρακτικά αδύνατον να καταλάβεις κάτι γραμμένο σε binary, έγραψα ένα προγραμματάκι σε C που του δίνεις ένα αρχείο και σου δείχνει τον κώδικα σε binary. Source:

>
#include <windows.h>
#include <stdio.h>
#include <math.h>

char* toBin(int);

int main() {
FILE *fInp;
char *tmpfile=new char,*path=new char;
printf("File path:\n");
scanf("%s",path);
fInp=fopen(path,"rb");
if (!fInp) {
	printf("Couldn't open file\n");
	getchar();
	getchar();
	return 0;
}
sprintf(tmpfile,"%s\\tmptext.txt",getenv("TEMP"));
FILE *fTemp=fopen(tmpfile,"w+");
int dHex=getc(fInp);
while (dHex!=EOF) {
	fprintf(fTemp,"%s ",toBin(dHex));
	dHex=getc(fInp);
}
fclose(fInp);
fclose(fTemp);
system(tmpfile);
return 1;
}

inline char* toBin(int dHex) {
int dHexTmp=dHex;
char* ret=new char[9];
for (int i=7;i>=0;i--) {
	ret[i]=dHexTmp%2?'1':'0';
	dHexTmp=(int)floor((int)(dHexTmp/2));
}
ret[8]='\0';
return ret;
}

Δεν έχω και πολλά να κάνω στις 3 τη νύχτα...

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...