Jump to content
CSm1n

[ASM] Noob

Recommended Posts

Salutare! Lucrez la un programel si m-am lovit de o problema de care nu pot sa ii dau de cap si ma gandeam ca as putea primi o mana de ajutor de aici.

Am un executabil fara cod sursa care la un moment dat executa opcode:

mov edx,[plm.exe+4CCE6C]

Ce vreau eu sa fac este sa reproduc instructiunea asta intr-un dll pe care il incarc in executabilul mai sus mentionat.

Cunostintele mele (care sunt sub nivelul marii) in materie de ASM m-au ajutat sa rescriu niste bucatele din memoria executabilului astfel incat sa faca jmp la mine in dll intr-o functie naked, dar mai departe trebuie sa scriu la mine in functi acel opcode si chiar nu am idee cum.

 

Base address e constanta, asa ca stiu care este adresa finala (0x400000+0x4CCE6C = 0x8CCE6C)

 

Am incercat:

// varianta 1:
__asm {
    mov edx, [0x8CCE6C]
}

// varianta 2:
__asm {
    mov edx, dword ptr[0x8CCE6C]
}

Dar cand am verificat codul in debugger, compilerul a eliminat dereferentierea(cred ca asa se numesc acele paranteze patrate din jurul adresei), iar instructiunea finala arata asa in ambele cazuri:

mov edx, plm.exe+4CCE6C

 

Daca se poate, imi puteti explica ce fac eu gresit?

 

------------------------------

 

// EDIT: Am reusit sa fac o smecherie, si anume dau push la eax pe stack, scriu in eax adresa, fac acea mutare si apoi dau pop la eax de pe stack:

__asm {
    push eax
    mov eax, 0x8CCE6C
    mov edx, [eax]
    pop eax
}

Totusi, ce e gresit in primele mele 2 exemple si nu este nicio metoda sa execut acea instructiune fara sa folosesc un register in plus?

Edited by CSm1n
  • Upvote 2
Link to comment
Share on other sites

@Usr6Metoda 1 am incercat-o deja, am mentionat asta in prima postare. La a 2-a metoda se elimina dereferentierea ca la celelalte, si anume debuggerul arata:

push plm.exe+4CCE6C
pop edx

Asa ca in edx imi incarca adresa in loc sa imi incarce continutul adresei.

 

Ar putea fi vinovat compilatorul? Folosesc VS2015, dar inclin sa cred ca nu poate sa fie o problema atat de mare intr-un un produs M$...

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...