SpaceHoll0w Postado Janeiro 18, 2022 em 11:13 Compartilhar Postado Janeiro 18, 2022 em 11:13 queria saber oque ele faz, to com essa duvida em asm..... Não acho algo que consegue me ajudar Citar Link para o comentário Compartilhar em outros sites More sharing options...
Fernando Mercês Postado Janeiro 18, 2022 em 13:38 Compartilhar Postado Janeiro 18, 2022 em 13:38 Opa, a instrução não tá completa aí.. falta o segundo argumento do MOV, mas é o seguinte: A sintaxe Intel, que é essa que você usou o exemplo, funciona assim: instrução argumento1, argumento2, argumento3... No caso do MOV, que é uma instrução de cópia de dados e por isso possui dois argumentos, o destino vem primeiro e a origem depois. Então é: mov destino, origem Então no seu exemplo: mov dword ptr ds:[eax + 0x30] Ou seja, você colocou só o destino, por isso a instrução tá incompleta, mas tudo bem, talvez sua dúvida seja no destino mesmo. Esse destino aí diz o seguinte: Copie uma DWORD (palavra dupla, ou seja, 32-bits/4 bytes) para o endereço apontado pelo registrador EAX, mas some 0x30 (48 em decimal) a este endereço antes. Ou seja, suponha que tenhamos o valor 0x950000 no registrador EAX e a instrução completa seja: mov dword ptr ds:[eax + 0x30], 0xffffffff Após executar essa instrução, o valor 0xffffffff será copiado para o endereço 0x950030 (que é o tal EAX + 0x30). O ds vem de data segment e já dá a dica que este é um segmento de dados. No caso de executáveis de Windows, provavelmente este endereço estará na seção .data, já que está sendo usado para escrita (o valor é copiado para lá) e esta seção em geral possui permissão de escrita quando mapeada em memória. Abraço, Fernando Citar Link para o comentário Compartilhar em outros sites More sharing options...
SpaceHoll0w Postado Janeiro 18, 2022 em 14:17 Autor Compartilhar Postado Janeiro 18, 2022 em 14:17 (editado) pior falta o "eax, " ? "mov eax, dword ptr ds:[eax + 0x30]" faz? Editado Janeiro 18, 2022 em 14:25 por SpaceHoll0w Citar Link para o comentário Compartilhar em outros sites More sharing options...
SpaceHoll0w Postado Janeiro 18, 2022 em 14:24 Autor Compartilhar Postado Janeiro 18, 2022 em 14:24 46 minutos atrás, Fernando Mercês disse: Opa, a instrução não tá completa aí.. falta o segundo argumento do MOV, mas é o seguinte: A sintaxe Intel, que é essa que você usou o exemplo, funciona assim: instrução argumento1, argumento2, argumento3... No caso do MOV, que é uma instrução de cópia de dados e por isso possui dois argumentos, o destino vem primeiro e a origem depois. Então é: mov destino, origem Então no seu exemplo: mov dword ptr ds:[eax + 0x30] Ou seja, você colocou só o destino, por isso a instrução tá incompleta, mas tudo bem, talvez sua dúvida seja no destino mesmo. Esse destino aí diz o seguinte: Copie uma DWORD (palavra dupla, ou seja, 32-bits/4 bytes) para o endereço apontado pelo registrador EAX, mas some 0x30 (48 em decimal) a este endereço antes. Ou seja, suponha que tenhamos o valor 0x950000 no registrador EAX e a instrução completa seja: mov dword ptr ds:[eax + 0x30], 0xffffffff Após executar essa instrução, o valor 0xffffffff será copiado para o endereço 0x950030 (que é o tal EAX + 0x30). O ds vem de data segment e já dá a dica que este é um segmento de dados. No caso de executáveis de Windows, provavelmente este endereço estará na seção .data, já que está sendo usado para escrita (o valor é copiado para lá) e esta seção em geral possui permissão de escrita quando mapeada em memória. Abraço, Fernando vlw mano! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Fernando Mercês Postado Janeiro 18, 2022 em 15:08 Compartilhar Postado Janeiro 18, 2022 em 15:08 51 minutos atrás, SpaceHoll0w disse: pior falta o "eax, " kkkkk então tudo que eu falei você aplica na origem. E o registrador EAX é o destino, no caso. ? 44 minutos atrás, SpaceHoll0w disse: vlw mano! é nóis! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.