Pourquoi vouloir toucher au PE. Pour upx tu fais comme ca ete dit avant, ou tu telecherge upx il decrompresse aussi les executables packes avec lui. Si ton dump est fonctionnel et que tu vois pas de str c'est peut etre qu'il y en a pas, ou elles sont encodees, ou bien ton w32dasm ne les detecte pas. Et on ne reverse pas avec les strs, il va falloir penser a changer de methode.
Bah, à moins que je me trompes, OllyDbg utilise sa fonction : _FindStrings pour trouver des stringsdata.
Bien qu'il utilise l'oep, il se sert du BaseOfCode+ImageBase comme addresse mémoire à lire.
Voici OllyDbg qui debugge OllyDbg :
(http://img214.imageshack.us/img214/3531/chillymeyt1.png)
En rentrant dans la fonction, on voit qu'il fait appel à _Readmemory avec comme paramètre : le BaseOfCode+ImageBase
Disasm :0047058A |> 6A 01 PUSH 1 ; /Arg4 = 00000001
0047058C |. 8B55 0C MOV EDX,DWORD PTR SS:[EBP+C] ; |
0047058F |. 52 PUSH EDX ; |Arg3
00470590 |. 56 PUSH ESI ; |Arg2
00470591 |. 8B4D F0 MOV ECX,DWORD PTR SS:[EBP-10] ; |
00470594 |. 51 PUSH ECX ; |Arg1
00470595 |. E8 720DFFFF CALL Copie_de._Readmemory ; \_Readmemory
Stack :00128738 008F8FB0 |Arg1 = 008F8FB0 ASCII "ðº"...
0012873C 00477000 |Arg2 = 00477000 <<<<<<<<<<<BaseOfCode+ImageBase
00128740 00015000 |Arg3 = 00015000 <<<<<<<<<<<VirtualSize of pseudo-.Code_section
00128744 00000001 \Arg4 = 00000001
On peut donc en conclure que OllyDbg cherche les stringsdata avec le BaseOfData. Or l'entrypoint doit se trouver entre BaseOfCode et BaseOfCode+sa Virtual Size.
Dans le cas d'upx, la section .code qui contient le loader se trouve être UPX1. Lorsque tu dump le fichier et reconstruit l'iat, si tu ne changes pas le BaseOfData qui pointe toujours sur UPX1 en UPX0 (qui contient le code unpacked), OllyDbg ne cherchera les stringsdata qu'à partir de UPX1.
C'est pourquoi d'ailleurs qu'il y a des plugins qui ont été fait qui scannent l'entièreté du binaire.
Donc ce n'est donc pas (ou en tout cas pas seulement) une question d'encryption ou de protection.
En parlant de module, si tu ne changes pas de BaseOfData quand tu rentres dans la fenêtre des modules avec OllyDbg et que tu double clique sur notre binaire, tu verra qu'Ollydbg te redirige sur : ImageBase+BaseOfCode donc sur la mauvaise section.
J'éspère que sur la v2, une option sera rajoutée permettant d'analyser direct la section où se trouve l'entrypoint.
M'enfin si je me trompes dites-le moi c'est possible.
++