ES2972063T3 - Método para bloquear una aplicación de depurador externo para que no analice un código de programa de software - Google Patents

Método para bloquear una aplicación de depurador externo para que no analice un código de programa de software Download PDF

Info

Publication number
ES2972063T3
ES2972063T3 ES20828030T ES20828030T ES2972063T3 ES 2972063 T3 ES2972063 T3 ES 2972063T3 ES 20828030 T ES20828030 T ES 20828030T ES 20828030 T ES20828030 T ES 20828030T ES 2972063 T3 ES2972063 T3 ES 2972063T3
Authority
ES
Spain
Prior art keywords
application
code
application program
program
computing device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES20828030T
Other languages
English (en)
Inventor
Aki Immonen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Supercell Oy
Original Assignee
Supercell Oy
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Supercell Oy filed Critical Supercell Oy
Application granted granted Critical
Publication of ES2972063T3 publication Critical patent/ES2972063T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/3604Analysis of software for verifying properties of programs
    • G06F11/3612Analysis of software for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/362Debugging of software
    • G06F11/3624Debugging of software by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/362Debugging of software
    • G06F11/3648Debugging of software using additional hardware
    • G06F11/3656Debugging of software using additional hardware using a specific debug interface
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

Se divulga un método para impedir que una aplicación depuradora externa analice el código del programa de software 306 instalado en el dispositivo informático 202.300. El método comprende inicializar un programa de software que comprende un programa de aplicación 308 y una aplicación de depuración interna 310. El programa de software, tras su inicialización, indica a la aplicación de depuración interna que cargue el programa de aplicación en la aplicación de depuración interna. La aplicación de depuración interna está configurada para utilizar los recursos del núcleo 312 de un sistema operativo 204 del dispositivo informático. El método comprende ejecutar una aplicación de depuración interna para establecer uno o más puntos de interrupción en el código del programa de aplicación para definir la ruta de ejecución para el código del programa de aplicación, ejecutar el programa de aplicación según la ruta de ejecución definida para el código del mismo, detener la ejecución del código del programa de aplicación al alcanzar cualquiera de uno o más puntos de interrupción en el mismo, y entregar el control a la aplicación depuradora interna para proporcionar una dirección para que se ejecute la siguiente instrucción en la ruta de ejecución definida para el código del programa de aplicación. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Método para bloquear una aplicación de depurador externo para que no analice un código de programa de software
Campo técnico
La presente descripción se refiere en general a sistemas y métodos para prevenir la piratería de software; y más específicamente, a métodos, sistemas y dispositivos informáticos para bloquear una aplicación de depurador externo para que no analice un código de un programa de software.
Antecedentes
La piratería de software y el acceso no autorizado, la modificación y la explotación de vulnerabilidades de aplicaciones de software, tales como juegos de ordenador, aplicaciones de juegos de consola, aplicaciones de simulación, codificación y prueba de aplicaciones basadas en consolas y similares se han convertido en un problema grave y creciente. La piratería de software puede conducir a pérdidas de ingresos debido a la distribución no autorizada de copias pirateadas de programas de software. Adicionalmente, además de la pérdida de ingresos debido a la distribución de copias pirateadas, la piratería de software también impone la amenaza de exponer secretos valiosos comerciales que pueden estar incorporados en un programa de software en particular. Además, la piratería de software también supone una amenaza a los derechos de propiedad intelectual para los que un individuo y/o una empresa puede haber buscado protección. En particular, una empresa de programas de software puede lograr una ventaja competitiva significativa al tener acceso no autorizado al programa de software de un competidor.
Típicamente, los programas de software consisten en archivos electrónicos o una pieza de código que están organizados de una manera específica para ser compatibles con microprocesadores y sistemas operativos conocidos, haciendo de esta manera que los programas de software sean vulnerables a la modificación por piratas informáticos o crackers. Convencionalmente, existen muchos mecanismos de seguridad de software disponibles que pueden usarse para limitar el acceso no autorizado a programas de software. La mayoría de los mecanismos de seguridad de software son de naturaleza simplista, tal como la introducción de licencias genuinas, contraseñas cifradas o claves para bloquear a usuarios malintencionados. Sin embargo, los piratas informáticos expertos pueden eludir fácilmente estos controles de seguridad usando herramientas ampliamente disponibles tales como “ ProcDump” , que es una herramienta de elevación de memoria, junto con potentes herramientas de depuración. Estas herramientas pueden capturar cualquier contenido de datos desde cualquier ubicación de memoria, independientemente de cuán protegida se pensaba que estaba la memoria, o monitorizar el sistema de archivos y transcribir archivos para acceder a los datos, o duplicar un SO completo, por ejemplo, usando un emulador de circuito integrado. Los piratas informáticos típicamente utilizan estas herramientas para analizar el código de software paso a paso, lo que ayuda al pirata informático a realizar ingeniería inversa, modificar o duplicar el contenido de los programas de software. Además, para superar esto, muchos programas de software emplean mecanismos de seguridad de software, tal como cifrar una porción para obstaculizar la capacidad de los piratas informáticos o crackers de superar las restricciones de licencia de un software, o evitar que un pirata informático comprenda una pieza de código del programa de software. Sin embargo, estos mecanismos de seguridad a menudo también son fácilmente vulnerados por piratas informáticos o crackers expertos.
El documento US 2010/095.281 describe un depurador de función interna para depurar un programa de software (especialmente, software malicioso tal como virus, software espía, software malicioso y similares) en un caso donde el programa de software ha usado métodos antidepuración para impedir la ingeniería inversa mediante análisis dinámico del programa de software. El depurador interno emplea desvíos de flujo de control para emular puntos de interrupción para escapar a la detección mediante los métodos antidepuración usados por el programa de software, permitiendo, por lo tanto, que el depurador de funciones internas realice ingeniería inversa del programa de software.
Por lo tanto, a la luz del análisis anterior, existe la necesidad de superar los inconvenientes mencionados anteriormente con mecanismos de seguridad de software para proteger un programa de software de modificaciones o explotación de vulnerabilidades no autorizadas impidiendo el análisis del código del programa de software.
Resumen
La presente descripción busca proporcionar un método para bloquear una aplicación de depurador externo para que no analice un código de un programa de software instalado en un dispositivo informático. La presente descripción también busca proporcionar un producto de programa informático instalado en un dispositivo informático, al que, cuando se accede mediante un dispositivo de procesamiento asociado con el dispositivo informático, bloquea una aplicación de depurador externo para que o analice un código de un programa de software instalado en un dispositivo informático. La presente descripción también busca proporcionar un producto de programa informático que comprende un programa de aplicación y una aplicación de depurador interno, que cuando se ejecuta, bloquea una aplicación de depurador externo para que no analice un código de un programa de software instalado en un dispositivo informático. La presente descripción también busca proporcionar un dispositivo informático para bloquear una aplicación de depurador externo para que no analice un código de un programa de software instalado en un dispositivo informático.
La presente descripción también busca proporcionar un sistema para bloquear una aplicación de depurador externo para que no analice un código de un programa de aplicación instalado en un dispositivo informático.
La presente descripción busca proporcionar una solución al problema existente de piratería de software y acceso no autorizado, modificación o explotación de vulnerabilidades de un programa de software. Un objetivo de la presente descripción es proporcionar una solución que supere al menos parcialmente los problemas encontrados en la técnica anterior y proporcione un método fiable y eficiente para bloquear una aplicación de depurador externo para que no analice un código de un programa de software instalado en un dispositivo informático.
Las realizaciones de la presente descripción eliminan sustancialmente o al menos abordan parcialmente los problemas mencionados anteriormente en la técnica anterior, y proporcionan un método fiable y eficiente para evitar el análisis de código de un programa de aplicación
Se deducirán otros aspectos, ventajas, características y objetos de la presente descripción a partir de los dibujos y la descripción detallada de las realizaciones ilustrativas interpretadas junto con las reivindicaciones anexas que siguen.
Se apreciará que las características de la presente descripción son susceptibles de unirse en varias combinaciones sin abandonar el ámbito de la presente descripción definido por las reivindicaciones anexas.
Breve descripción de los dibujos
El resumen anterior, así como la siguiente descripción detallada de realizaciones ilustrativas, se comprende mejor al leerlo junto con los dibujos anexos. Para ilustrar la presente descripción, se muestran estructuras ilustrativas de la descripción en los dibujos. Sin embargo, la presente descripción no se limita a métodos e instrumentales específicos descritos en la presente memoria. Además, los expertos en la técnica entenderán que los dibujos no están a escala. En la medida de lo posible, los elementos similares se han indicado con números idénticos.
A continuación se describirán realizaciones de la presente descripción, a modo de ejemplo únicamente, con referencia a los siguientes diagramas, en donde:
la Figura 1 es un diagrama de flujo que representa las etapas de un método para bloquear una aplicación de depurador externo para que no analice un código de un programa de software instalado en un dispositivo informático, según una realización de la presente descripción;
la Figura 2 es un diagrama en bloque de un aparato según una realización de la presente descripción;
la Figura 3 es un diagrama en bloque que representa la operación de un dispositivo informático (tal como el dispositivo informático de la Figura 1), según una realización de la presente descripción; y
la Figura 4 es un diagrama en bloque de un sistema para bloquear una aplicación de depurador externo para que no analice un código de un programa de aplicación instalado en un dispositivo informático, según una realización de la presente descripción.
En los dibujos adjuntos, se emplea un número subrayado para representar un elemento sobre el que se coloca el número subrayado o un elemento al que está adyacente el número subrayado. Un número no subrayado se refiere a un elemento identificado por una línea que vincula el número no subrayado al elemento. Cuando un número no está subrayado y está acompañado por una flecha asociada, el número no subrayado se utiliza para identificar un elemento general al que la flecha apunta.
Descripción detallada de las realizaciones
La siguiente descripción detallada ilustra realizaciones de la presente descripción y formas en las que pueden implementarse. Aunque se han descrito algunos modos de realización de la presente descripción, los expertos en la técnica reconocerán que también son posibles otras realizaciones para llevar a cabo o poner en práctica la presente descripción.
La presente descripción proporciona un método para bloquear una aplicación de depurador externo para que no analice un código de un programa de software instalado en un dispositivo informático mediante la implementación de una aplicación de depurador interno junto con un programa de aplicación durante el tiempo de ejecución. La presente descripción proporciona métodos y sistemas que permiten la ejecución de programas de software de una manera que evita el análisis de un código del programa de aplicación, evitando de esta manera el acceso no autorizado y la modificación del código del programa de aplicación. La presente descripción proporciona métodos y sistemas para bloquear la aplicación de depurador externo integrando un código del programa de aplicación con un código de la aplicación de depurador interno. De forma ventajosa, un método de este tipo previene la piratería de programas de software de una manera económica, que consume menos tiempo y es altamente eficiente. La presente descripción proporciona un método para adjuntar una aplicación de depurador interno integrada con el programa de aplicación que evita que los usuarios adjunten una aplicación de depurador externo con el programa de software, restringiendo de esta manera a los usuarios no autorizados a analizar un código del programa de software.
A lo largo de la presente descripción, la expresión"programa de software"se refiere a una colección o conjunto de instrucciones, también conocido como código, instalado en un dispositivo informático. La colección o conjunto de instrucciones ejecutables por el dispositivo informático u otro sistema digital para configurar el ordenador o el sistema digital para realizar una tarea que es la intención del programa de software. En la presente memoria, la expresión"programa de software"abarca el código del programa de aplicación integrado con el código de la aplicación de depurador interno, de modo que la inicialización del programa de software carga la aplicación de depurador interno seguido de la carga del programa de aplicación en la aplicación de depurador interno. Se apreciará que, la expresión"programa de software"como se usa en la presente memoria se usa para referirse a un paquete de software completo que comprende el programa de aplicación y la aplicación de depurador interno que, cuando se ejecuta en el dispositivo informático, bloquea la conexión de una aplicación de depurador externo al programa de software y, de esta manera, evita el análisis de código del programa de software.
En una o más realizaciones, la expresión"programa de software"está prevista a abarcar tales instrucciones almacenadas en un medio de almacenamiento, tal como RAM, un disco duro, disco óptico, etc., y también está prevista a abarcar el llamado"firmware",es decir, un programa de software almacenado en una ROM o así sucesivamente. Opcionalmente, el programa de software se refiere a una aplicación de software. Tal programa de software está organizado de diversas maneras, por ejemplo, el programa de software incluye componentes de software organizados como bibliotecas, programas basados en Internet almacenados en un servidor remoto o así sucesivamente, código fuente, código interpretativo, código objeto, código directamente ejecutable, y así sucesivamente. Puede apreciarse que el programa de software puede invocar código de nivel de sistema o llamadas a otro software que reside en un servidor u otra ubicación para realizar ciertas funciones. Además, el programa de software puede estar preconfigurado y preintegrado con un sistema operativo, construyendo un dispositivo de software.
A lo largo de la presente descripción, la expresión"programa de aplicación"como se usa en la presente memoria se refiere a una colección o conjunto de instrucciones, también conocido como código, instalado en un dispositivo informático. La expresión"programa de aplicación"se usa ampliamente en la presente memoria, para incluir aplicaciones, núcleos, controladores, manejadores de interrupciones, bibliotecas, escritos por programadores (a quienes también se les conoce como desarrolladores). En otras palabras, la expresión"programa de aplicación"abarca programas informáticos completos y autónomos diseñados para realizar funciones, tareas o actividades específicas, cuando el programa de aplicación se ejecuta en el dispositivo informático. Opcionalmente, el programa de aplicación es un programa de aplicación de juegos. Por ejemplo, el programa de aplicación de juegos puede incluir un número de aplicaciones de juegos de diversos géneros, tales como juegos de carreras, juegos de aventuras, juegos de rompecabezas, juegos de acción, juegos de rol (RPG), juegos de estrategia, juegos de disparos, juegos de simulación y así sucesivamente.
De forma adicional, el programa de aplicación puede almacenarse en un medio de almacenamiento tal como RAM, un disco duro, disco óptico, etc., y también está prevista a abarcar el llamado"firmware",es decir, un software almacenado en una ROM o así sucesivamente. Tales programas de aplicación están organizados de diversas maneras, por ejemplo, el programa de aplicación incluye componentes organizados como bibliotecas, programas basados en Internet almacenados en un servidor remoto o así sucesivamente, código fuente, código interpretativo, código objeto, código directamente ejecutable, y así sucesivamente. Puede apreciarse que, el programa de aplicación puede invocar código de nivel de sistema o llamadas a otro software que reside en un servidor u otra ubicación para realizar ciertas funciones.
Además, el término"código"como se usa en la memoria descriptiva, se refiere a instrucciones de procesador, datos (que incluyen constantes, variables y estructuras de datos), o tanto instrucciones como datos. Se apreciará que, se evita que el código sea analizado por usuarios no autorizados implementando el presente método. Similarmente, tales términos pueden incluir o comprender una manera diseñada para implementar una subrutina, una función, un procedimiento, un método de objeto, el programa de software que se ejecuta en un dispositivo informático, interfaces u objetos, una aplicación ejecutable, un applet, un servlet, código fuente, código objeto o código intermedio, una biblioteca compartida y/o biblioteca de enlace/carga dinámica y/u otra secuencia de instrucciones o grupos de números de instrucciones.
Opcionalmente, el código del programa de aplicación incluye múltiples bloques de código. La expresión"bloque de código"como se usa en la presente memoria, se refiere a un módulo del código ejecutable que está configurado para realizar una tarea específica de una o más tareas previstas del programa de aplicación. Generalmente, el bloque de código está configurado para recibir una entrada, procesar la entrada y devolver un resultado como una salida basada en el procesamiento de la entrada. Cada uno del uno o más bloques de código está asociado con una memoria en el dispositivo informático.
Opcionalmente, los programas de aplicación se desarrollan en entornos operativos adecuados que incluyen, pero sin limitación, entornos Java® y algunos incluyen entornos que utilizan lenguajes tales como C, C, C n.°, Python, lenguaje de programación R, Oracle. Se apreciará que, una persona experta en la técnica entenderá que los métodos y sistemas descritos son aplicables con una amplia diversidad de lenguajes de programación, modelos de programación y programas, así como con esfuerzos técnicos fuera del campo de desarrollo de software, y no están limitados únicamente a programas de aplicaciones de juegos.
Como se ha mencionado anteriormente, el programa de aplicación está instalado en el dispositivo informático. A lo largo de la presente descripción, la expresión"dispositivo informático"como se usa en la presente memoria generalmente se refiere a un dispositivo electrónico asociado con (o usado por) un usuario que puede permitir que el usuario realice tareas específicas asociadas con el programa de aplicación. Además, se pretende que el dispositivo informático se interprete de manera amplia para incluir cualquier dispositivo electrónico que pueda usarse para comunicación de voz y/o datos a través de una red de comunicación inalámbrica. El dispositivo informático puede incluir y no se limita a, teléfonos móviles, teléfonos inteligentes, dispositivos móviles de Internet (MID), tabletas, ordenadores personales ultramóviles (UMPC), tabletófonos, asistentes digitales personales (PDA), tabletas web, ordenadores personales (PC), PC de mano, ordenadores portátiles, ordenadores de escritorio, dispositivos de almacenamiento conectado a red (NAS), pantallas táctiles de gran tamaño con PC integradas y dispositivos de entretenimiento interactivo, tales como consolas de juegos, televisores (TV) y decodificadores de salón (STB), una máquina tragaperras de vídeo, una máquina de póquer de vídeo, un quiosco, un dispositivo personal de casino, y típicamente incluye muchos o todos los elementos descritos anteriormente en relación con el aparato de juego.
Notablemente, la expresión"dispositivo informático"se usa en la presente memoria para referirse a un dispositivo electrónico tal como ordenadores de propósito general en los que está instalado el programa de software, como un paquete que comprende el programa de aplicación y la aplicación de depurador interno. Además, la expresión"dispositivo informático"también se usa para abarcar consolas de juegos tales como Microsoft Xbox™, Nintendo Wii™, Sony PlayStation™ y similares.
Además, el dispositivo informático incluye un dispositivo de procesamiento y una memoria. El dispositivo de procesamiento puede ser uno o más procesadores conocidos, tales como microprocesadores fabricados por Intel™ o AMD™ o con licencia de ARM. El dispositivo de procesamiento puede constituir procesadores de un solo núcleo o de múltiples núcleos que ejecutan procesos paralelos simultáneamente. Por ejemplo, el procesador puede ser un procesador de un solo núcleo configurado con tecnologías de procesamiento virtual. En ciertas realizaciones, el dispositivo de procesamiento puede usar procesadores lógicos para ejecutar y controlar simultáneamente múltiples procesos. El dispositivo de procesamiento puede implementar tecnologías de máquina virtual, u otras tecnologías conocidas para proporcionar la capacidad de ejecutar, controlar, marchar, manipular y almacenar múltiples procesos de software, aplicaciones, programas, etc. En otra realización, el dispositivo de procesamiento puede incluir una disposición de procesador de múltiples núcleos (p. ej., doble, cuádruple núcleo, etc.) configurada para proporcionar funcionalidades de procesamiento paralelo para permitir que el dispositivo informático ejecute múltiples procesos simultáneamente. Un experto en la técnica entendería que se podrían implementar otros tipos de disposiciones de dispositivos de procesamiento que proporcionen las capacidades descritas en la presente memoria. Además, la memoria puede incluir un dispositivo de almacenamiento volátil o no volátil, magnético, de semiconductores, de estado sólido, de cinta, óptico, extraíble, no extraíble u otro tipo de dispositivo de almacenamiento o medio legible por ordenador tangible (es decir, no transitorio) que almacena uno o más programas, tales como aplicación o aplicaciones. En un ejemplo, el dispositivo informático comprende uno o más módulos, especialmente un primer módulo y un segundo módulo para ejecutar el programa de software. Específicamente, el primer módulo está configurado para ejecutar el programa de aplicación y el segundo módulo está configurado para ejecutar la aplicación de depurador interno.
El programa o programas pueden incluir sistemas operativos que realizan funciones de sistema operativo conocidas cuando se ejecutan por uno o más dispositivos de procesamiento. A modo de ejemplo, los sistemas operativos pueden incluir los sistemas operativos Microsoft Windows™, Unix™, Linux™, Android™, Microsoft XP™, AIX™, IBM's i5os y Apple™, sistemas operativos de tipo Asistente Digital Personal (PDA), tales como Microsoft CE™ u otros tipos de sistemas operativos. En consecuencia, las realizaciones descritas pueden operar y funcionar con dispositivos informáticos que ejecutan cualquier tipo de sistema operativo. El dispositivo informático también puede incluir software de comunicación que, cuando es ejecutado por un procesador, proporciona comunicaciones con la red y/o la red local, tal como software de navegador web, tableta o software de interconexión en red de dispositivo portátil inteligente, etc.
A lo largo de la presente descripción, el término"usuarios"se refiere a una persona o un ser humano asociado con un dispositivo informático y está habilitado para ejecutar el programa de aplicación en el dispositivo informático. Notablemente, la expresión"usuarios autorizados"y"usuarios no autorizados"difieren en el sentido de que los usuarios autorizados son programadores o desarrolladores que tienen acceso a analizar el código, es decir, los usuarios autorizados tienen acceso para ver, modificar o eliminar el código del programa de aplicación, mientras que los usuarios no autorizados son usuarios (o jugadores, en caso de aplicaciones de juegos) que no tienen acceso para analizar el código del programa de aplicación.
El método comprende inicializar el programa de software que comprende un programa de aplicación y una aplicación de depurador interno. El programa de software, tras la inicialización del mismo, ordena a la aplicación de depurador interno que cargue el programa de aplicación en la aplicación de depurador interno, y en donde la aplicación de depurador interno está configurada para utilizar recursos de núcleo de un sistema operativo del dispositivo informático.
A lo largo de la presente descripción, la expresión"sistema operativo”como se usa en la presente descripción, se refiere a una capa de software de sistema que planifica hilos (es decir, un flujo de secuencia único dentro de un proceso) y proporciona funciones para hacer que los recursos de sistema operativo estén disponibles para los hilos, incluyendo el acceso a la memoria, el acceso a recursos de entrada/salida (IO) y así sucesivamente. Los sistemas operativos también controlan la asignación y autorización de acceso a los recursos informáticos. Los sistemas operativos llevan a cabo tareas básicas de bajo nivel, tales como recibir entradas desde un teclado, enviar salida a una pantalla, mantener un seguimiento de archivos y directorios en una unidad de disco magnético y controlar dispositivos periféricos tales como unidades de disco e impresoras.
A lo largo de la presente descripción, la expresión “aplicación de depurador interno” como o generalmente conocida como"depuradores”se refiere a un programa informático o una aplicación de software usada para probar y depurar otros programas, que se denominan programas de depuración. Generalmente, las aplicaciones de depurador internas se usan para probar los programas de aplicación e identificar la causa de un problema conocido, o"bug” (error informático),en los programas de aplicación. La prueba de los programas de aplicación se denomina generalmente"depuración”.Notablemente, la aplicación de depurador interno está configurada para ejecutar una instrucción del programa a la vez (denominado"paso a paso”del programa), y para determinar cuál es la siguiente instrucción a ejecutar. Además, la aplicación de depurador interno se usa para examinar y/o modificar las ubicaciones de memoria y registros del ordenador. Las aplicaciones de depurador interno proporcionan al programa información acerca del estado de ejecución del programa de aplicación en ejecución, así como el control del mismo. El estado del programa de aplicación incluye memoria de programa y datos; registros de hardware; pilas de programa; y objetos del sistema operativo tales como colas, objetos de sincronización e información de contabilidad de programa. La aplicación de depurador interno está configurada para controlar la ejecución de los programas de aplicación con operaciones tales como detener (o, como alternativa, iniciar, suspender, terminar, pasar por alto de instrucciones, pasar a ramas, pasar por alto de declaraciones, pasar por llamadas a subrutinas, detenerse en puntos de interrupción (que se analiza en detalle más adelante) y detenerse en los puntos de vigilancia de datos).
Específicamente, cuando la aplicación de depurador interno está conectada al programa de aplicación y el programa de software se está ejecutando, se bloquea la conexión de un depurador externo al programa de software, evitando de esta manera el análisis de código del programa de aplicación. A continuación, en la memoria, la expresión"aplicación de depurador externo”se usa para referirse a una aplicación de depurador que no es parte integral del programa de software y se intenta que se adjunte al programa de aplicación con la intención de analizar el código del programa de software. Además, la"aplicación de depurador externo”es una aplicación de depurador no autorizada que se bloquea al implementar los métodos y sistemas actuales. De hecho, por ejemplo, ejecutar una aplicación de depurador interno bloquea la ejecución de una aplicación de depurador externo en el mismo dispositivo informático. En una realización ilustrativa, un sistema operativo (núcleo y similares) del dispositivo informático está configurado para permitir que únicamente una aplicación de depurador se conecte a un único proceso simultáneamente.
Además, como se ha mencionado anteriormente, la aplicación de depurador interno utiliza los recursos de núcleo del sistema operativo. A lo largo de la presente descripción, los"recursos de núcleo” ,como se usan en la presente memoria, se refieren a un módulo central del sistema operativo asociado con el dispositivo informático. Notablemente, el núcleo es una parte del sistema operativo que se carga en primer lugar y permanece en la memoria. El núcleo es responsable de la gestión de la memoria, la gestión de procesos y tareas y la gestión del disco. El núcleo conecta el hardware de dispositivo al programa de aplicación. Notablemente, el núcleo es un software o parte del sistema operativo y es responsable de proporcionar acceso seguro al hardware del dispositivo informático en nombre de los hilos de ejecución en el programa de aplicación. Además, el núcleo también proporciona acceso a otros componentes del dispositivo informático, incluyendo el acceso a memoria, la capacidad de procesamiento, los recursos de entrada/salida, etc. Los núcleos típicamente también proporcionan abstracción de hardware como un conjunto de instrucciones universales para todos los dispositivos de un determinado tipo, de esta manera, con el objetivo de ocultar la complejidad subyacente a los programas de aplicación y a otros componentes del sistema operativo. De forma ventajosa, los recursos de núcleo proporcionan servicios de núcleo que controlan y median el acceso al hardware del dispositivo informático, implementan y soportan abstracciones fundamentales tales como procesos, hilos, archivos, dispositivos, etc., asignan y planifican recursos de sistema operativo tales como memoria, procesadores, discos, descriptores de archivos, descriptores de procesos, descriptores de hilos y similares, y proporcionan seguridad y protección de los recursos de sistema operativo. Se apreciará que, las funciones y la operación del sistema operativo y los recursos de núcleo como se ha descrito anteriormente en la presente memoria no deberían limitar indebidamente el alcance de las reivindicaciones adjuntas en la presente memoria, el sistema operativo y los recursos de núcleo pueden realizar diversas funciones y operaciones como se puede conocer en la técnica.
Además, el método comprende ordenar a la aplicación de depurador interno que cargue el programa de aplicación en la aplicación de depurador interno. En la presente memoria, el programa de software puede comprender además uno o más archivos por lotes que, tras la inicialización del programa de software, ordenan al programa de aplicación que se cargue en la aplicación de depurador interno. Opcionalmente, el método comprende configurar el programa de aplicación para cargarlo en la aplicación de depurador interno. En la presente memoria, cargar el programa de aplicación en la aplicación de depurador interno implica que el programa de aplicación está configurado para ejecutarse en la aplicación de depurador interno. Se apreciará que, el programa de aplicación está configurado para ejecutarse en la aplicación de depurador interno durante el tiempo de ejecución, evitando de esta manera que la aplicación de depurador externo depure un programa de aplicación particular.
Opcionalmente, el programa de aplicación está configurado para inicializar la aplicación de depurador interno al iniciar el programa de software por un usuario del dispositivo informático. El usuario puede iniciar el programa de software de varias maneras, por ejemplo, haciendo clic en un archivo ejecutable del programa de aplicación, que carga el programa de aplicación en la aplicación de depurador interno. Opcionalmente, la aplicación de depurador interno inicializa la ejecución del código del programa de aplicación. Se apreciará que, el programa de aplicación está configurado para realizar la ejecución únicamente después de la inicialización de la aplicación de depurador interno. Un método de este tipo garantiza que una aplicación de depurador externo no esté conectada al programa de aplicación, eliminando de esta manera las posibilidades de acceso no autorizado para analizar o modificar el código del programa de aplicación. Se puede apreciar que, un código del programa de aplicación está integrado dentro del código del programa de aplicación para constituir el programa de software, de modo que una inicialización del programa de software activará una inicialización de la aplicación de depurador interno, de una manera que el código del programa de aplicación está configurado para ejecutarse en la aplicación de depurador interno.
Además, el método comprende ejecutar la aplicación de depurador interno para establecer uno o más puntos de interrupción en el código del programa de aplicación para definir una ruta de ejecución para el código del programa de aplicación. Notablemente, la aplicación de depurador interno está configurada para introducir uno o más puntos de interrupción en el código del programa de aplicación después de uno o más conjuntos de instrucciones del código del programa de aplicación. En la presente memoria, se usa la expresión"puntos de ruptura"para referirse a una parada o pausa intencional durante la ejecución del programa de aplicación. Notablemente, los puntos de interrupción a menudo se insertan para determinar si una ejecución del programa de aplicación está funcionando como se esperaba. Los puntos de interrupción se usan para interrumpir un programa de aplicación en ejecución inmediatamente después de que se encuentra un punto de interrupción. Notablemente, los puntos de interrupción se insertan en diferentes instrucciones en el código del programa de aplicación y, en correspondencia, se definen nuevas rutas de ejecución según los puntos de interrupción insertados. Como se mencionó anteriormente, el programa de aplicación está configurado para cargarse en la aplicación de depurador interno. En un ejemplo, la ejecución de la aplicación de depurador interno es un proceso padre y la ejecución del programa de aplicación es un proceso hijo, y la ruta de ejecución se puede definir para definirla en consecuencia.
Opcionalmente, se establecen uno o más puntos de interrupción para incluir instrucciones para pasar de un bloque de código después de su ejecución a otro bloque de código. En la presente memoria, las instrucciones pueden incluir direcciones de memoria de la memoria asociada con el dispositivo informático. La dirección de memoria se obtiene del código de la aplicación de depurador interno y, en consecuencia, pasa a la ejecución de otro bloque de código. Opcionalmente, el uno o más puntos de interrupción se establecen al final de uno o más bloques de código predeterminados en el código del programa de aplicación. Opcionalmente, el uno o más puntos de interrupción se establecen basándose en la frecuencia de ejecución de uno o más bloques de código en el código del programa de aplicación. Opcionalmente, el uno o más puntos de interrupción se establecen aleatoriamente al final de uno o más bloques de código en el código del programa de aplicación.
Además, el método comprende ejecutar el programa de aplicación según la ruta de ejecución definida para su código. En la presente memoria, la expresión"ruta de ejecución"se refiere a una ruta que debe seguir el conjunto de instrucciones ejecutables para acceder a archivos ejecutables de ubicación única especificada en la memoria del dispositivo informático. Notablemente, la ruta de ejecución se define antes de la ejecución y después de adquirir los recursos de núcleo del sistema operativo del dispositivo informático. Se apreciará que, la ruta de ejecución se redefine cuando se insertan puntos de interrupción para instrucciones que siguen a un punto de interrupción particular. Además, el método comprende detener la ejecución del código del programa de aplicación tras alcanzar cualquiera del uno o más puntos de interrupción en el mismo. En la presente memoria, cuando se encuentra un punto de interrupción, se suspende la ejecución del código del programa de aplicación en una primera ruta de ejecución y se inicia la ejecución del código del programa de aplicación en una segunda ruta de ejecución. Además, el método comprende entregar el control a la aplicación de depurador interno para proporcionar una dirección para que se ejecute la siguiente instrucción en la ruta de ejecución definida para el código del programa de aplicación. En la presente memoria, después de detener la ejecución del programa de aplicación en la primera ruta de ejecución, el control se transfiere a la aplicación de depurador interno a través de una segunda ruta de ejecución. El código de la aplicación de depurador interno proporciona la dirección para que se ejecute la siguiente instrucción según una tercera ruta de ejecución para el código del programa de aplicación.
En un caso, cuando se establece el uno o más puntos de interrupción al final de uno o más bloques de código predeterminados en el código del programa de aplicación, los puntos de interrupción se insertan después del final de la última instrucción ejecutable de un primer bloque de código, de modo que se almacena una dirección de memoria de la primera instrucción ejecutable de un segundo bloque de código a ejecutar en un código de la aplicación de depurador interno. En la presente memoria, cuando se encuentra un punto de interrupción correspondiente, la ejecución del programa de aplicación se detiene después de la ejecución de la última instrucción ejecutable del primer bloque de código, y se transfiere un control a la aplicación de depurador interno. Además, la dirección de memoria de la primera instrucción ejecutable del otro bloque de código a ejecutar se obtiene del código de la aplicación de depurador interno. Se apreciará que, un método de este tipo garantiza que los usuarios no autorizados no tengan acceso a todo el código de la aplicación. En una situación, cuando un usuario puede obtener acceso a una parte particular de código del programa de aplicación, la ejecución del programa de aplicación se detendrá cuando se encuentre un punto de interrupción, y la dirección para la siguiente instrucción no esté disponible para los usuarios no autorizados, evitando de esta manera la piratería de software del programa de software.
En un caso, cuando se establece el uno o más puntos de interrupción basándose en una frecuencia de ejecución de uno o más bloques de código en el código del programa de aplicación, los puntos de interrupción se insertan periódicamente después o antes de los bloques de código que se usan más frecuentemente en el programa de aplicación, tal como en el caso de programas de aplicación de juegos. Los puntos de interrupción se insertan de manera similar a la mencionada anteriormente, accediendo a la memoria del dispositivo informático. En la presente memoria, un caso de este tipo cuando los puntos de interrupción son anteriores a los bloques de código usados frecuentemente garantiza la seguridad de los bloques de código que tienen un alto riesgo de acceso por usuarios no autorizados.
En un caso, cuando se establece el uno o más puntos de interrupción aleatoriamente al final de uno o más bloques de código en el código del programa de aplicación, los puntos de interrupción se insertan aleatoriamente después o antes de cualquiera de los bloques de código. En la presente memoria, los puntos de interrupción se pueden insertar dinámicamente en una o más posiciones, de modo que las posiciones de los puntos de interrupción se cambian aleatoriamente cada vez que se inicializa el programa de software. Se apreciará que, el método para insertar puntos de interrupción es el mismo que se ha analizado anteriormente, sin embargo, los puntos de interrupción se establecen dinámicamente.
La presente descripción proporciona además un sistema para bloquear una aplicación de depurador externo para que no analice un código de un programa de aplicación instalado en un dispositivo informático. El sistema comprende un servidor de depuración acoplado comunicativamente al dispositivo informático. A lo largo de la presente descripción, el término “servidor”como se usa en"servidor de depuración”se refiere a una estructura y/o módulo que incluye componentes programables y/o no programables configurados para almacenar, procesar y/o compartir información relacionada con depuración remota. Opcionalmente, el servidor incluye cualquier disposición de entidades computacionales físicas o virtuales que pueden mejorar la información para realizar diversas tareas computacionales, tales como la depuración remota. Además, se debe apreciar que el servidor puede ser tanto un único servidor de hardware como/o una pluralidad de servidores de hardware que operan en una arquitectura paralela o distribuida. En un ejemplo, el servidor puede incluir componentes tales como memoria, un procesador, un adaptador de red y similares, para almacenar, procesar y/o compartir información con otros componentes informáticos, tal como el dispositivo informático.
Notablemente, el dispositivo informático está acoplado comunicativamente al servidor de depuración a través de una red de comunicación. En un entorno de red ilustrativo, un número dispositivos informáticos están conectados al servidor de depuración, y el servidor de depuración está configurado para proporcionar servicios de depuración remota a cada uno de los dispositivos informáticos conectados a través de la red de comunicación. Como se ha mencionado anteriormente, el programa de aplicación está instalado en el dispositivo informático y está configurado para acceder al servidor de depuración cuando el programa de aplicación se inicializa en los dispositivos informáticos. Se apreciará que, el programa de aplicación está configurado para ejecutarse en el dispositivo informático únicamente cuando el dispositivo informático está en conexión con el servidor de depuración, bloqueando de esta manera el depurador externo para que no analice el código del programa de aplicación.
En la presente memoria, la red de comunicación puede ser una colección de redes individuales, interconectadas entre sí y que funcionan como una única red grande. Tales redes individuales pueden ser cableadas, inalámbricas o una combinación de las mismas. Los ejemplos de tales redes individuales incluyen, aunque no de forma limitativa, Local Area Networks (Redes de área local - LAN), Wide Area Networks (Redes de área extensa - WAN), Metropolitan Area Networks (Redes de área metropolitana - MAN), Wireless LANs (LAN inalámbrica - WLAN),Wireless WANs (WAN inalámbricas - WWAN), Wireless MANs (MAN inalámbricas - WMAN), Internet, redes de telecomunicación de segunda generación (2G), redes de telecomunicación de tercera generación (3G), redes de telecomunicación de cuarta generación (4G) y redes de interoperabilidad mundial para acceso por microondas (WiMax).
De forma adicional o alternativamente, los dispositivos electrónicos pueden usar su propia red Bluetooth®, y conectarse a un servidor Bluetooth®, para sincronizar con otros dispositivos electrónicos. El entorno de red puede implementarse de diversas formas, dependiendo de varios escenarios posibles. En un escenario de ejemplo, el entorno de red puede implementarse mediante una disposición ubicada de forma espacialmente conjunta del servidor y la base de datos. En otro escenario de ejemplo, el entorno de red puede implementarse mediante una disposición distribuida espacialmente del servidor y la base de datos acoplados mutuamente en comunicación a través de la red de comunicación. En otro escenario de ejemplo más, el servidor y la base de datos pueden implementarse a través de servicios informáticos en la nube.
Además, el servidor de depuración está configurado para conectar una aplicación de depurador interno al programa de aplicación. En la presente memoria, la aplicación de depurador interno está configurada para utilizar recursos de núcleo de un sistema operativo del dispositivo informático. Notablemente, las funciones de la aplicación de depurador interno son las mismas que se han descrito anteriormente en la descripción. Sin embargo, debe entenderse que, la aplicación de depurador interno, como se usa en el sistema, no está integrada con el programa de aplicación. En la presente memoria, la aplicación de depurador interno está configurada para que el dispositivo informático acceda de forma remota a través de la red de comunicación. La aplicación de depurador interno, cuando se ejecuta, hace que el dispositivo informático cargue el programa de aplicación en la aplicación de depurador interno. Además, la aplicación de depurador interno establece uno o más puntos de interrupción en el código del programa de aplicación para definir una ruta de ejecución para el código del programa de aplicación. La aplicación de depurador interno ejecuta el programa de aplicación según la ruta de ejecución definida para su código. La aplicación de depurador interno detiene la ejecución del código del programa de aplicación tras alcanzar cualquiera del uno o más puntos de interrupción del mismo. Además, la aplicación de depurador interno traspasa el control a la aplicación de depurador interno para proporcionar una dirección para que se ejecute la siguiente instrucción en la ruta de ejecución definida para el código del programa de aplicación.
Como se ha mencionado anteriormente, la presente descripción también se refiere a un producto de programa informático instalado en un dispositivo informático, comprendiendo el producto de programa informático un medio de almacenamiento de datos legible por máquina no transitorio que tiene almacenadas en el mismo instrucciones de programa de un programa de software. Las realizaciones y detalles descritos anteriormente se aplican cambiando lo que sea necesario a dicho producto de programa informático que, cuando se ejecuta bloquea una aplicación de depurador externo para que no analice un código del programa de software.
Opcionalmente, el código del programa de aplicación incluye múltiples bloques de código, en donde el uno o más puntos de interrupción incluyen instrucciones para pasar de un bloque de código después de su ejecución a otro bloque de código.
Opcionalmente, las instrucciones de programa del producto de programa informático, cuando el dispositivo de procesamiento accede a ellas, harán que el dispositivo de procesamiento traspase el control a la aplicación de depurador interno para proporcionar dirección para el siguiente bloque de código a ejecutar en la ruta de ejecución definida para el código del programa de aplicación.
Opcionalmente, las instrucciones de programa del producto de programa informático, cuando el dispositivo de procesamiento accede a ellas, harán que el dispositivo de procesamiento establezca el uno o más puntos de interrupción al final de uno o más bloques de código predeterminados en el código del programa de aplicación.
Opcionalmente, las instrucciones de programa del producto de programa informático, cuando el dispositivo de procesamiento accede a ellas, harán que el dispositivo de procesamiento establezca el uno o más puntos de interrupción basándose en la frecuencia de ejecución del uno o más bloques de código en el código del programa de aplicación.
Opcionalmente, las instrucciones de programa del producto de programa informático, cuando el dispositivo de procesamiento accede a ellas, harán que el dispositivo de procesamiento establezca aleatoriamente el uno o más puntos de interrupción al final de uno o más bloques de código en el código del programa de aplicación.
Opcionalmente, las instrucciones del programa del producto de programa informático, cuando el dispositivo de procesamiento accede a ellas, harán que el dispositivo de procesamiento configure el programa de aplicación para inicializar la aplicación de depurador interno tras iniciarla un usuario del dispositivo informático.
Opcionalmente, las instrucciones del programa del producto del programa informático, cuando el dispositivo de procesamiento accede a ellas, harán que la aplicación de depurador interno inicialice la ejecución del código del programa de aplicación.
Opcionalmente, el programa de aplicación es un programa de aplicación de juegos.
Como se ha mencionado anteriormente, la presente descripción también proporciona un dispositivo informático para bloquear una aplicación de depurador externo para que no analice un código de un programa de software instalado en un dispositivo informático. Las realizaciones y detalles descritos anteriormente se aplican cambiando lo que sea necesario a dicho dispositivo informático para bloquear la aplicación de depurador externo para que no analice el código del programa de software.
Opcionalmente, el código del programa de aplicación incluye múltiples bloques de código, en donde el uno o más puntos de interrupción incluyen instrucciones para pasar de un bloque de código después de su ejecución a otro bloque de código.
Opcionalmente, el dispositivo informático está configurado además para traspasar el control a la aplicación de depurador interno para proporcionar la dirección para que se ejecute el siguiente bloque de código en la ruta de ejecución definida para el código del programa de aplicación.
Opcionalmente, el dispositivo informático está configurado además para establecer el uno o más puntos de interrupción al final de uno o más bloques de código predeterminados en el código del programa de aplicación.
Opcionalmente, el dispositivo informático está configurado además para establecer el uno o más puntos de interrupción basándose en la frecuencia de ejecución de uno o más bloques de código en el código del programa de aplicación.
Opcionalmente, el dispositivo informático está configurado además para establecer aleatoriamente el uno o más puntos de interrupción al final de uno o más bloques de código en el código del programa de aplicación.
Opcionalmente, el dispositivo informático está configurado para inicializar la aplicación de depurador interno tras el inicio del programa de aplicación por un usuario del dispositivo informático.
Opcionalmente, el dispositivo informático está configurado para inicializar la ejecución del código del programa de aplicación tras la inicialización de la aplicación de depurador interno.
Descripción detallada de los dibujos
Haciendo referencia a la Figura 1, se ilustra un diagrama de flujo100que representa las etapas de un método para bloquear una aplicación de depurador externo para que no analice un código de un programa de software instalado en un dispositivo informático, según una realización de la presente descripción. En la etapa102, se inicializa el programa de software que comprende un programa de aplicación y una aplicación de depurador interno, la aplicación de depurador interno está configurada para utilizar recursos de núcleo de un sistema operativo del dispositivo informático. En la etapa104, la aplicación de depurador interno se ejecuta para establecer uno o más puntos de interrupción en el código del programa de aplicación para definir una ruta de ejecución para el código del programa de aplicación. En la etapa106, el programa de aplicación se ejecuta según la ruta de ejecución definida para su código. En la etapa108, la ejecución del código del programa de aplicación se detiene tras alcanzar cualquiera del uno o más puntos de interrupción en el mismo. En la etapa110, el control se traspasa a la aplicación de depurador interno para proporcionar una dirección para que se ejecute la siguiente instrucción en la ruta de ejecución definida para el código del programa de aplicación.
Las etapas102a110son únicamente ilustrativas y también pueden proporcionarse otras alternativas donde se añaden una o más etapas, se eliminan una o más etapas o se proporcionan una o más etapas en una secuencia diferente sin apartarse del ámbito de las reivindicaciones de la presente memoria.
Haciendo referencia a la Figura 2, se ilustra un diagrama en bloque de un dispositivo informático200, según una realización de la presente descripción. Como se muestra, el dispositivo informático200comprende un dispositivo202de procesamiento, sistema operativo (SO)204, sistema básico de entrada y salida (BIOS)206y recursos208de núcleo. El dispositivo202de procesamiento comprende además una memoria210que incluye memoria de acceso aleatorio (RAM)212y una memoria flash214. En la presente memoria, el dispositivo202de procesamiento está configurado para acceder a los recursos de núcleo208del sistema operativo204, tras la inicialización del programa de software. Además, el dispositivo202de procesamiento asigna ubicaciones de memoria al código del programa de software en la RAM212. Además, la memoria flash214está configurada para almacenar el código de arranque desde el BIOS206y el SO204, para permitir las operaciones del dispositivo informático202.
Haciendo referencia a la Figura 3, se ilustra un diagrama en bloque que representa la operación de un dispositivo informático300(tal como el dispositivo informático200de la Figura 1), según una realización de la presente descripción. Como se muestra, el dispositivo informático300comprende un dispositivo302de procesamiento en comunicación con una memoria304. En la presente memoria, el código del programa de software306se almacena en la memoria304. El programa306de software incluye programa308de aplicación y una aplicación310de depurador interno. El dispositivo302de procesamiento está configurado para acceder al código del programa306de software de la memoria304. Además, el dispositivo302de procesamiento está configurado para utilizar recursos312de núcleo tras la inicialización del programa306de software.
Haciendo referencia a la Figura 4, se ilustra un diagrama en bloque de un sistema400para bloquear una aplicación de depurador externo para que no analice un código de un programa de aplicación instalado en un dispositivo402, informático según una realización de la presente descripción. Como se muestra, el sistema400comprende el dispositivo informático402acoplado comunicativamente a un servidor404de depuración. Además, el dispositivo informático402comunicativamente y el servidor404de depuración están conectados a través de una red406de comunicación. En la presente memoria, el servidor404de depuración está configurado para proporcionar servicios de depuración al dispositivo informático402conectando una aplicación de depurador interno al programa de aplicación, bloqueando de esta manera la aplicación de depurador externo.
Es posible realizar modificaciones a las realizaciones de la presente descripción descritas anteriormente sin salirse del ámbito de la presente descripción definido por las reivindicaciones adjuntas. Se prevé que expresiones tales como “ que incluye” , “ que comprende” , “ que incorpora” , “ tienen” , “ es” , utilizadas para describir y reivindicar la presente descripción, se interpreten de un modo no exclusivo, a saber, permitiendo que partes, componentes o elementos no descritos explícitamente también estén presentes. También debe interpretarse que el singular se refiere al plural.

Claims (28)

  1. REIVINDICACIONES
    i.Un método para bloquear una aplicación de depurador externo para que no analice un código de un programa (306) de software instalado en un dispositivo informático (202, 300), comprendiendo el método:
    -inicializar el programa de software que comprende un programa (308) de aplicación y una aplicación (310) de depurador interno, en donde un código del programa de aplicación está embebido con un código de la aplicación de depurador interno, en donde el programa de software, tras su inicialización, carga la aplicación de depurador interno y ordena a la aplicación de depurador interno que cargue el programa de aplicación en la aplicación de depurador interno, y en donde la aplicación de depurador interno está configurada para utilizar recursos (312) de núcleo de un sistema operativo (204) del dispositivo informático, en donde, además, cargar el programa de aplicación en la aplicación de depurador interno bloquea la aplicación de depurador externo para que no se conecte al programa de software y analice el código del programa de software;
    -ejecutar la aplicación de depurador interno para establecer uno o más puntos de interrupción en el código del programa de aplicación para definir una ruta de ejecución para el código del programa de aplicación;
    -ejecutar el programa de aplicación según la ruta de ejecución definida para el código del mismo -detener la ejecución del código del programa de aplicación tras alcanzar cualquiera del uno o más puntos de interrupción en el mismo; y
    -entregar el control a la aplicación de depurador interno para proporcionar una dirección para que se ejecute la siguiente instrucción en la ruta de ejecución definida para el código del programa de aplicación.
  2. 2. Un método según la reivindicación 1, en donde el código del programa de aplicación incluye múltiples bloques de código, en donde el uno o más puntos de interrupción incluyen instrucciones para pasar de un bloque de código después de su ejecución a otro bloque de código.
  3. 3. Un método según la reivindicación 1 o 2, que comprende además entregar el control a la aplicación de depurador interno para proporcionar una dirección para que se ejecute el siguiente bloque de código en la ruta de ejecución definida para el código del programa de aplicación.
  4. 4. Un método según cualquiera de las reivindicaciones anteriores, en donde el uno o más puntos de interrupción se establecen al final de uno o más bloques de código predeterminados en el código del programa de aplicación.
  5. 5. Un método según cualquiera de las reivindicaciones anteriores, en donde el uno o más puntos de interrupción se establecen basándose en la frecuencia de ejecución de uno o más bloques de código en el código del programa de aplicación.
  6. 6. Un método según cualquiera de las reivindicaciones anteriores, en donde el uno o más puntos de interrupción se establecen aleatoriamente al final de uno o más bloques de código en el código del programa de aplicación.
  7. 7. Un método según cualquiera de las reivindicaciones anteriores, en donde el programa de aplicación está configurado para inicializar la aplicación de depurador interno tras el inicio de la misma por un usuario del dispositivo informático.
  8. 8. Un método según cualquier reivindicación de las reivindicaciones anteriores, en donde la aplicación de depurador interno inicializa la ejecución del código del programa de aplicación.
  9. 9. Un método según cualquiera de las reivindicaciones anteriores, en donde el programa de aplicación es un programa de aplicación de juegos.
  10. 10. Un producto de programa informático instalado en un dispositivo informático (200), comprendiendo el producto de programa informático un medio de almacenamiento de datos legible por máquina no transitorio que tiene almacenadas en el mismo instrucciones de programa de un programa de software que, cuando se accede a él mediante un dispositivo de procesamiento asociado con el dispositivo informático, hará que el dispositivo de procesamiento:
    -inicialice el programa de software que comprende un programa de aplicación y una aplicación de depurador interno, en donde un código del programa de aplicación está embebido con un código de la aplicación de depurador interno, en donde el programa de software, tras su inicialización, carga la aplicación de depurador interno y ordena a la aplicación de depurador interno que cargue el programa de aplicación en la aplicación de depurador interno, y en donde la aplicación de depurador interno está configurada para utilizar recursos de núcleo de un sistema operativo del dispositivo informático, en donde, además, cargar el programa de aplicación en la aplicación de depurador interno bloquea una aplicación de depurador externo para que no se conecte al programa de software y analice el código del programa de software;
    -ejecute la aplicación de depurador interno para establecer uno o más puntos de interrupción en el código del programa de aplicación para definir una ruta de ejecución para el código del programa de aplicación;
    -ejecute el programa de aplicación según la ruta de ejecución definida para su código
    -detenga la ejecución del código del programa de aplicación tras alcanzar cualquiera del uno o más puntos de interrupción del mismo; y
    -traspase el control a la aplicación de depurador interno para proporcionar una dirección para que se ejecute la siguiente instrucción en la ruta de ejecución definida para el código del programa de aplicación.
  11. 11. Un producto de programa informático según la reivindicación 10, en donde el código del programa de aplicación incluye múltiples bloques de código, en donde el uno o más puntos de interrupción incluyen instrucciones para pasar de un bloque de código después de su ejecución a otro bloque de código.
  12. 12. Un producto de programa informático según la reivindicación 10 u 11, en donde las instrucciones de programa, cuando el dispositivo de procesamiento accede a ellas, harán que el dispositivo de procesamiento traspase el control a la aplicación de depurador interno para proporcionar una dirección para el siguiente bloque de código a ejecutar en la ruta de ejecución definida para el código del programa de aplicación.
  13. 13. Un producto de programa informático según cualquiera de las reivindicaciones 10 a 12, en donde las instrucciones de programa, cuando el dispositivo de procesamiento accede a ellas, harán que el dispositivo de procesamiento establezca el uno o más puntos de interrupción al final de uno o más bloques de código predeterminados en el código del programa de aplicación.
  14. 14. Un programa informático según cualquiera de las reivindicaciones 10 a 13, en donde las instrucciones de programa, cuando el dispositivo de procesamiento accede a ellas, harán que el dispositivo de procesamiento establezca el uno o más puntos de interrupción basándose en la frecuencia de ejecución del uno o más bloques de código en el código del programa de aplicación.
  15. 15. Un producto de programa informático según cualquiera de las reivindicaciones 10 a 14, en donde las instrucciones de programa, cuando el dispositivo de procesamiento accede a ellas, harán que el dispositivo de procesamiento establezca aleatoriamente el uno o más puntos de interrupción al final de uno o más bloques de código en el código del programa de aplicación.
  16. 16. Un producto de programa informático según cualquiera de las reivindicaciones 10 a 15, en donde las instrucciones de programa, cuando el dispositivo de procesamiento accede a ellas, harán que el dispositivo de procesamiento configure el programa de aplicación para inicializar la aplicación de depurador interno tras iniciarla un usuario del dispositivo informático.
  17. 17. Un producto de programa informático según cualquiera de las reivindicaciones 10 a 16, en donde las instrucciones del programa, cuando el dispositivo de procesamiento accede a ellas, harán que la aplicación de depurador interno inicialice la ejecución del código del programa de aplicación.
  18. 18. Un producto de programa informático según cualquiera de las reivindicaciones 10 a 17, en donde el programa
    de aplicación es un programa de aplicación de juegos.
  19. 19. Un producto de programa informático realizado como un medio de almacenamiento de datos legible por máquina no transitorio para un dispositivo informático (202, 300), comprendiendo el producto de programa informático un programa de software, en donde el programa de software comprende:
    -un programa de aplicación; y
    -una aplicación (310) de depurador interno configurada para utilizar recursos (312) de núcleo de un sistema operativo (204) del dispositivo informático para bloquear una aplicación de depurador externo para que no analice un código del programa de software, en donde un código del programa de aplicación está embebido con un código de la aplicación de depurador interno, la aplicación de depurador interno, cuando se ejecuta, hace que el dispositivo informático:
    -cargue el programa de aplicación en la aplicación de depurador interno, bloqueando de esta manera la aplicación de depurador externo para que no se conecte al programa de software y analice el código del programa de software;
    -establezca uno o más puntos de interrupción en el código del programa de aplicación para definir una ruta de ejecución para el código del programa de aplicación;
    -ejecute el programa de aplicación según la ruta de ejecución definida para su código;
    -detenga la ejecución del código del programa de aplicación tras alcanzar cualquiera del uno o más puntos de interrupción del mismo; y
    -traspase el control a la aplicación de depurador interno para proporcionar una dirección para que se ejecute la siguiente instrucción en la ruta de ejecución definida para el código del programa de aplicación.
  20. 20. Un dispositivo informático (202, 300) para bloquear una aplicación de depurador externo para que no analice un código de un programa de software instalado en el dispositivo informático, estando el dispositivo informático configurado para:
    -inicializar el programa de software que comprende un programa (308) de aplicación y una aplicación (310) de depurador interno, en donde un código del programa de aplicación está embebido con un código de la aplicación de depurador interno, en donde el programa de software, tras su inicialización, carga la aplicación de depurador interno y ordena a la aplicación de depurador interno que cargue el programa de aplicación en la aplicación de depurador interno, y en donde la aplicación de depurador interno está configurada para utilizar recursos (312) de núcleo de un sistema operativo (202) del dispositivo informático, en donde, además, cargar el programa de aplicación en la aplicación de depurador interno bloquea la aplicación de depurador externo para que no se conecte al programa de software y analice el código del programa de software;
    -ejecute la aplicación de depurador interno para establecer uno o más puntos de interrupción en el código del programa de aplicación para definir una ruta de ejecución para el código del programa de aplicación;
    -ejecute el programa de aplicación según la ruta de ejecución definida para su código -detenga la ejecución del código del programa de aplicación tras alcanzar cualquiera del uno o más puntos de interrupción del mismo; y
    -traspase el control a la aplicación de depurador interno para proporcionar una dirección para que se ejecute la siguiente instrucción en la ruta de ejecución definida para el código del programa de aplicación.
  21. 21. Un dispositivo informático según la reivindicación 20, en donde el código del programa de aplicación incluye múltiples bloques de código, en donde el uno o más puntos de interrupción incluyen instrucciones para pasar de un bloque de código después de su ejecución a otro bloque de código.
  22. 22. Un dispositivo informático según la reivindicación 20 o 21, configurado además para traspasar el control a la aplicación de depurador interno para proporcionar la dirección para el siguiente bloque de código a ejecutar en la ruta de ejecución definida para el código del programa de aplicación.
  23. 23. Un dispositivo informático según cualquiera de las reivindicaciones 20 a 22, configurado además para establecer el uno o más puntos de interrupción al final de uno o más bloques de código predeterminados en el código del programa de aplicación.
  24. 24. Un dispositivo informático según cualquiera de las reivindicaciones 20 a 23, configurado además para establecer el uno o más puntos de interrupción basándose en la frecuencia de ejecución de uno o más bloques de código en el código del programa de aplicación.
  25. 25. Un dispositivo informático según cualquiera de las reivindicaciones 20 a 24, configurado además para establecer aleatoriamente el uno o más puntos de interrupción al final de uno o más bloques de código en el código del programa de aplicación.
  26. 26. Un dispositivo informático según cualquiera de las reivindicaciones 20 a 25, configurado para inicializar la aplicación de depurador interno tras el inicio del programa de aplicación por un usuario del dispositivo informático.
  27. 27. Un dispositivo informático según cualquiera de las reivindicaciones 20 a 26, configurado para inicializar la ejecución del código del programa de aplicación tras la inicialización de la aplicación de depurador interno.
  28. 28. Un sistema (400) para bloquear una aplicación de depurador externo para que no analice un código de un programa (308) de aplicación instalado en un dispositivo informático (300), comprendiendo el sistema:
    -un servidor (404) de depuración acoplado comunicativamente al dispositivo informático, estando el servidor de depuración configurado para conectar una aplicación (310) de depurador interno al programa de aplicación, en donde la aplicación de depurador interno está configurada para utilizar recursos (312) de núcleo de un sistema operativo (204) del dispositivo informático, la aplicación de depurador interno, cuando se ejecuta, hace que el dispositivo informático: -cargue el programa de aplicación en la aplicación de depurador interno, bloqueando de esta manera la aplicación de depurador externo para que no se conecte al programa de aplicación y analice el código del programa de aplicación;
    -establezca uno o más puntos de interrupción en el código del programa de aplicación para definir una ruta de ejecución para el código del programa de aplicación;
    -ejecute el programa de aplicación según la ruta de ejecución definida para su código;
    -detenga la ejecución del código del programa de aplicación tras alcanzar cualquiera del uno o más puntos de interrupción del mismo; y
    -traspase el control a la aplicación de depurador interno para proporcionar una dirección para que se ejecute la siguiente instrucción en la ruta de ejecución definida para el código del programa de aplicación.
ES20828030T 2020-01-07 2020-12-11 Método para bloquear una aplicación de depurador externo para que no analice un código de programa de software Active ES2972063T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/736,242 US11194695B2 (en) 2020-01-07 2020-01-07 Method for blocking external debugger application from analysing code of software program
PCT/FI2020/050836 WO2021140269A1 (en) 2020-01-07 2020-12-11 Method for blocking external debugger application from analysing code of software program

Publications (1)

Publication Number Publication Date
ES2972063T3 true ES2972063T3 (es) 2024-06-11

Family

ID=73855501

Family Applications (1)

Application Number Title Priority Date Filing Date
ES20828030T Active ES2972063T3 (es) 2020-01-07 2020-12-11 Método para bloquear una aplicación de depurador externo para que no analice un código de programa de software

Country Status (7)

Country Link
US (5) US11194695B2 (es)
EP (1) EP4088204B1 (es)
JP (1) JP7642639B2 (es)
KR (1) KR102909256B1 (es)
CN (1) CN114868120B (es)
ES (1) ES2972063T3 (es)
WO (1) WO2021140269A1 (es)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11966343B2 (en) 2021-07-19 2024-04-23 Samsung Electronics Co., Ltd. Universal mechanism to access and control a computational device
US12547481B2 (en) 2021-12-14 2026-02-10 Samsung Electronics Co., Ltd. Systems, methods, and devices for accessing a computational device kernel
US12153829B2 (en) 2022-01-14 2024-11-26 Samsung Electronics Co., Ltd. Interactive mechanism to communicate with tools inside computational devices

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6226747B1 (en) * 1998-04-10 2001-05-01 Microsoft Corporation Method for preventing software piracy during installation from a read only storage medium
US7503072B2 (en) * 1998-04-29 2009-03-10 Microsoft Corporation Hardware ID to prevent software piracy
US6567933B1 (en) * 1999-02-19 2003-05-20 Texas Instruments Incorporated Emulation suspension mode with stop mode extension
US7430670B1 (en) * 1999-07-29 2008-09-30 Intertrust Technologies Corp. Software self-defense systems and methods
US20010052053A1 (en) * 2000-02-08 2001-12-13 Mario Nemirovsky Stream processing unit for a multi-streaming processor
US7054443B1 (en) * 2000-03-27 2006-05-30 Microsoft Corporation System and method for protecting digital goods using random and automatic code obfuscation
US7024696B1 (en) * 2000-06-14 2006-04-04 Reuben Bahar Method and system for prevention of piracy of a given software application via a communications network
US7237123B2 (en) * 2000-09-22 2007-06-26 Ecd Systems, Inc. Systems and methods for preventing unauthorized use of digital content
US7328453B2 (en) * 2001-05-09 2008-02-05 Ecd Systems, Inc. Systems and methods for the prevention of unauthorized use and manipulation of digital content
US7140042B2 (en) * 2002-01-14 2006-11-21 Mcafee, Inc. System and method for preventing software piracy
US7516331B2 (en) * 2003-11-26 2009-04-07 International Business Machines Corporation Tamper-resistant trusted java virtual machine and method of using the same
US20060137016A1 (en) * 2004-12-20 2006-06-22 Dany Margalit Method for blocking unauthorized use of a software application
US7752139B2 (en) * 2005-12-27 2010-07-06 Michael Noel Hu Method and system for managing software licenses and reducing unauthorized use of software
US7913092B1 (en) * 2005-12-29 2011-03-22 At&T Intellectual Property Ii, L.P. System and method for enforcing application security policies using authenticated system calls
CN101427222B (zh) 2006-04-24 2012-11-21 松下电器产业株式会社 数据处理装置、方法、程序生成装置、方法
US8424082B2 (en) * 2008-05-08 2013-04-16 Google Inc. Safely executing an untrusted native code module on a computing device
US20100095281A1 (en) * 2008-10-14 2010-04-15 Riverside Research Institute Internal Function Debugger
US8510842B2 (en) * 2011-04-13 2013-08-13 International Business Machines Corporation Pinpointing security vulnerabilities in computer software applications
US9703950B2 (en) * 2012-03-30 2017-07-11 Irdeto B.V. Method and system for preventing and detecting security threats
CN102708322B (zh) * 2012-05-12 2016-02-24 北京深思数盾科技有限公司 安卓系统中java应用程序的保护方法
EP3330859A1 (en) * 2016-12-05 2018-06-06 Universiteit Gent Self-debugging
KR101997084B1 (ko) * 2017-01-17 2019-07-05 한양대학교 산학협력단 인터럽트 요청의 재현시점 결정 방법 및 이를 이용하는 시스템 및 프로그램
KR102462864B1 (ko) * 2017-12-22 2022-11-07 한국전자통신연구원 멀티 코어를 이용한 동적 바이너리 인스트루멘테이션 장치 및 방법

Also Published As

Publication number Publication date
US20260023675A1 (en) 2026-01-22
CN114868120A (zh) 2022-08-05
EP4088204B1 (en) 2024-02-07
CN114868120B (zh) 2025-08-01
US11586529B2 (en) 2023-02-21
JP2023515293A (ja) 2023-04-13
KR102909256B1 (ko) 2026-01-06
JP7642639B2 (ja) 2025-03-10
US20230281103A1 (en) 2023-09-07
US20220164275A1 (en) 2022-05-26
US20210208997A1 (en) 2021-07-08
US11194695B2 (en) 2021-12-07
EP4088204C0 (en) 2024-02-07
KR20220122986A (ko) 2022-09-05
US20240289250A1 (en) 2024-08-29
EP4088204A1 (en) 2022-11-16
US11954010B2 (en) 2024-04-09
US12399801B2 (en) 2025-08-26
WO2021140269A1 (en) 2021-07-15

Similar Documents

Publication Publication Date Title
Checkoway et al. Return-oriented programming without returns
Pewny et al. Control-flow restrictor: Compiler-based CFI for iOS
US12399801B2 (en) Method for blocking external debugger application from analysing code of software program
US10013553B2 (en) Protecting software application
IL260012A (en) Virtual machine control system and methods
Homescu et al. Large-scale automated software diversity—program evolution redux
WO2014155036A1 (en) Suspicious program detection
Davi et al. Return-oriented programming without returns on ARM
Lyerly et al. Dynamic and secure memory transformation in userspace
Abrath et al. Code renewability for native software protection
Abrath et al. Resilient self-debugging software protection
Marco-Gisbert et al. SSPFA: effective stack smashing protection for Android OS: H. Marco-Gibert, I. Ripoll-Ripoll
Coppens et al. Multi-variant execution environments
Basque-Rice Cheaters could prosper: An analysis of the security of video game anti-cheat
Hashimoto et al. Detecting memory editing cheats by validating host memory integrity from gpu
Szaknis et al. The design of the simple SMM rootkit
Karkallis et al. VIC: Evasive Video Game Cheating via Virtual Machine Introspection
Wang Low-level software memory safety analysis: Attack and defense
Alhindi et al. Threadbox: Sandboxing for Modular Security
Shi Securing Deeply Embedded Systems through Firmware Analysis and Threat Mitigation
Scarrà Esplorarando il funzionamento degli strumenti di (anti) cheat
Narayanan A Virtualization-Based Private and Secure Video Game Architecture for Personal Computers
Audinet Bae, Your Companion to Detect Kernel Attacks by a Behaviour Analysis of Exploits
Wang Securing SGX Applications via Memory Safe Programming Languages and Augmented Runtime
Marco et al. Security through emulation-based processor diversification