Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

326
Visualizações
¿Equivalente a VirtualProtectEx/CreateRemoteThread en Linux?

Me preguntaba si había una versión equivalente, ya sea en una biblioteca o como una llamada al sistema, de las API de Windows que permiten que un proceso interactúe con el espacio de otro proceso, lo que significaría modificar el flujo de ese segundo proceso. Esto es para inyectar un .so en un proceso en ejecución sin eliminarlo.

¡Gracias!

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

tal vez eche un vistazo aquí: CreateRemoteThread en Linux

No conozco una forma más sencilla que la descrita allí. En Windows, tiene esta elegante API como VirtualProtectEx. En Linux, estaría escribiendo un .so que, por ejemplo, ejecuta pthread_create en una __attribute__((constructor)) . Entonces cargarías eso .so a través del mecanismo LD_PRELOAD.

Lo mejor después de CreateRemoteThread sería manipular el subproceso principal del proceso con la API de ptrace. Pero esto implicaría

  1. sosteniendo un hilo
  2. Guardando su contexto
  3. Establecer argumentos para pthread_create
  4. Establezca IP en pthread_create y ejecute
  5. Restaurar el contexto antiguo.

Creo que manipular los derechos de acceso a la memoria también implicaría llamar a mprotect desde un contexto de proceso. Como ya se mencionó anteriormente, la forma más sencilla de hacerlo no sería usar ptrace sino usar un objeto compartido precompilado.

over 4 years ago · Santiago Trujillo Relatório

0

En Linux, existe un mecanismo estándar para inyectar su código en un programa. Básicamente, define una variable de entorno LD_PRELOAD que especifica una biblioteca .so que se carga antes que todos los demás archivos .so. Las funciones en ese .so reemplazarán las versiones estándar de las funciones. No hay necesidad de modificar el código ensamblador de las funciones manualmente para insertar ganchos en su propio código como en Windows.

Aquí hay un buen tutorial: https://rafalcieslak.wordpress.com/2013/04/02/dynamic-linker-tricks-using-ld_preload-to-cheat-inject-features-and-investigate-programs/

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda