salut :D
je veux acceder à la table des importations d'un processus,pour avoir les noms des fonctions importées par ce processus en java.
voilà mon programme j'ai essayé d'acceder au fichier exécutable PE,
es que quelqu'un peu m'aider:
import java.io.*;
import java.lang.*;
import java.io.RandomAccessFile;
import java.util.*;
public class ImportTable {
public static void main(String args[]) throws IOException {
long offset=60;//apres 60 octets se trouve rvaHeaderPE
int rvaHeaderPE;
int rvaimportsymbols;
int adr;
String nomfunction="";
boolean arret=false;
int l=0;
Boolean stop=false;
int j=0;
boolean stopp=false;
int UnThank;
char car;
int i=0;
RandomAccessFile fis=new RandomAccessFile("C://windows//system32//smss.exe","r");
fis.getFilePointer();
fis.seek(offset);
rvaHeaderPE=fis.read();
System.out.println(rvaHeaderPE);//pour tester
fis.seek(rvaHeaderPE+194);
adr=fis.read();
System.out.println(adr);//pour tester
fis.seek(adr);
rvaimportsymbols = fis.read();
System.out.println(rvaimportsymbols );//pour tester
fis.seek(rvaimportsymbols);
while(arret==false){
int characteristics= fis.read();
int originalFirstThunk=fis.read();
int TimeDateStamp=fis.read();
int ForwarderChain=fis.read();
int name=fis.read();
int FirstThunk=fis.read();
if ((characteristics==0)&&(originalFirstThunk==0)&&(TimeDateStamp==0)&&(ForwarderChain==0)&&(name==0)&&(FirstThunk==0))
arret=true;
else{
fis.seek(FirstThunk);
UnThank=fis.read();
stop=false;
while(stop==false){
String val=Integer.toHexString(UnThank);
if ( (val.charAt(1)) =='1' ){
fis.seek(UnThank+ 8 );
while(stopp==false){
fis.seek(UnThank+ 8 +l);
car=fis.readChar();
if (car ==0)
stopp=true;
else{
nomfunction=nomfunction+car;
l=l+1;}}
j=j+1;
fis.seek(UnThank+j*4);
}
stop=true;
}
}
i=i+1;
fis.seek(rvaimportsymbols+48 );
}
}