KR20190108458A - 함수 결함을 복구하는 방법, 장치 및 서버 - Google Patents
함수 결함을 복구하는 방법, 장치 및 서버 Download PDFInfo
- Publication number
- KR20190108458A KR20190108458A KR1020180068261A KR20180068261A KR20190108458A KR 20190108458 A KR20190108458 A KR 20190108458A KR 1020180068261 A KR1020180068261 A KR 1020180068261A KR 20180068261 A KR20180068261 A KR 20180068261A KR 20190108458 A KR20190108458 A KR 20190108458A
- Authority
- KR
- South Korea
- Prior art keywords
- function
- preset
- recovery
- defect
- fault
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3624—Software debugging by performing operations on the source code, e.g. via a compiler
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
- G06F9/45525—Optimisation or modification within the same instruction set architecture, e.g. HP Dynamo
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/366—Software debugging using diagnostics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/004—Error avoidance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/54—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
- Facsimiles In General (AREA)
Abstract
본 발명은 함수 원시 코드에 의존하지 않고 함수 결함을 복구하는 방법, 장치 및 서버를 제공하여, 해당 함수의 다수개 버전에 적용된다. 상기 방법은, 프리셋 결함 함수를 확정하는 단계; 상기 프리셋 결함 함수의 파라미터에 이상이 존재하는지 여부를 체크하는 단계; 이상이 존재하는 경우, 상기 프리셋 결함 함수를 호출하는 상위 함수에게 이상을 표시하는 메시지를 리턴하는 단계; 이상이 존재하지 않는 경우, 상기 프리셋 결함 함수를 실행하는 단계를 포함한다. 본 발명의 실시예의 기술 방안은 파라미터에 이상이 존재하는 프리셋 결함 함수를 필터링하고, 프리셋 결함 함수의 파라미터 이상 상황에 따라, 프리셋 결함 함수를 실행할 지 여부를 선택함으로써 프리셋 결함 함수의 원시 코드를 획득하지 않고도 결함 함수에 대해 복구를 진행한다.
Description
본 발명은 컴퓨터 기술분야에 관한 것으로, 상세하게는, 함수 결함을 복구하는 방법, 장치 및 서버에 관한 것이다.
커널은 운영체제의 핵심으로, 시스템의 프로세스, 메모리, 디바이스 구동 프로그램, 파일과 네트워크 시스템 등에 대한 관리를 책임지고, 시스템의 성능과 안정성에 대해 결정적인 역할을 하고 있다. 커널을 교환하고 시스템을 재시동하는 코드를 이용한 커널 버그 복구 방법은, 고신뢰성을 확보하기 어렵기에, 커널 운영과정에서 복구 대기중인 커널 기능을 즉시 업데이트할 수 있는 버그 복구 코드 기술이 필요하게 된다. 또한, 응용 프로그램은 하나 또는 다수 개의 특정된 태스크를 완성하기 위해 개발되고, 운영체제에서 운영되는 컴퓨터 프로그램이다. 하지만 응용 프로그램은 그 응용과정에서 일정한 결함을 가질 수도 있으므로, 후속되는 유지 보수 과정에서, 해당 결함을 복구하는 프로그램을 코딩하여 버그 복구 코드 또는 복구 함수로 이용해야 한다.
상기 문제점에 대해, 기존의 버그 복구 코드 기술은 메모리 버그 복구 코드의 형식으로 커널 또는 응용 프로그램 운영과정에서 커널 또는 응용 프로그램의 기능에 대해 복구를 진행하므로, 모든 커널 또는 응용 프로그램을 교환할 필요없이, 시스템의 신뢰성을 향상시키는데 유리하다.
그러나 이러한 버그 복구 코드 기술은 거의 다 결함 함수의 원시 코드가 필요하게 되고, 그 결함 함수의 원시 코드를 직접 보정함으로써, 결함 함수에 대해 다시 코딩하고 로딩하여 기존의 결함 함수를 교환한다. 이러한 방법은 원시 코드가 없는 상황에서는 복구가 불가능하다.
본 발명의 실시예는 함수 원시 코드에 의존하지 않는 함수 결함 복구 방법, 장치 및 서버를 제공함으로써, 배경 기술 중의 하나 또는 여러개 이상의 기술문제를 해결 또는 완화시키고, 적어도 하나의 유리한 선택을 제공하는 것을 목적으로 한다.
제1 측면에 따르면, 본 발명의 실시예는 함수의 다수개 버전에 적용되는 함수 결함복구방법을 제공하되, 상기 방법은,
프리셋 결함 함수를 확정하는 단계;
상기 프리셋 결함 함수의 파라미터에 이상이 존재하는지 여부를 체크하는 단계;
이상이 존재하는 경우, 상기 프리셋 결함 함수를 호출하는 상위 함수에게 이상을 표시하는 메시지를 리턴하는 단계;
이상이 존재하지 않는 경우, 상기 프리셋 결함 함수를 실행하는 단계를 포함한다.
제1측면을 결합하여, 본 발명의 제1측면의 제1실시방식에서, 상기 방법은,
이상이 존재하지 않은 경우, 상기 프리셋 결함 함수를 실행하는 단계 이후에,
상기 프리셋 함수의 리턴 값 및/또는 파라미터에 이상이 존재하는지 여부를 체크하는 단계;
이상이 존재하는 경우, 상기 프리셋 함수를 호출하는 상위 함수에게 이상을 지시하는 메시지를 리턴하는 단계를 더 포함한다.
제1측면을 결합하여, 본 발명은 제1측면의 제2실시방식에서, 상기 방법은,
상기 프리셋 결함 함수의 파라미터에 이상이 존재하는지 여부를 체크하는 단계에서,
인라인 후크 방법을 기반으로, 상기 프리셋 결함 함수의 프리셋 라인 코드를 복구 함수의 호출로 점프하는 명령으로 보정하는 단계를 포함하되; 상기 복구 함수는 상기 프리셋 결함 함수의 파라미터, 리턴 값 및/또는 파라미터를 체크하는데 이용된다.
제1측면을 결합하여, 본 발명은 제1측면의 제3실시방식에서, 상기 방법은,
프리셋 결함 함수를 확정하는 단계 이후에,
상기 프리셋 결함 함수의 유형이 자식 함수이고, 또한 상기 자식 함수가 그에 대응하는 부모 함수에서 여러번 호출되는 경우, 상기 부모 함수의 인덱스를 기반으로, 상기 자식 함수가 부모 함수에서의 위치를 확정하는 단계를 더 포함한다.
제1측면을 결합하여, 본 발명의 제1측면의 제4실시방식에서, 상기 방법은,
상기 결함 함수에 대한 복구를진행하기 전에,
복구 함수를 초기화하여, 상기 복구 함수를 저장하기 위한 저장 공간을 획득하는 단계를 더 포함한다.
제1측면을 결합하여, 본 발명의 제1측면의 제5실시방식에서, 상기 방법은,
복구 함수를 삭제할 경우, 상기 복구 함수를 저장하기 위한 저장 공간을 해제하는 단계를 더 포함한다.
제2측면에 따르면, 본 발명의 실시예는 함수의 다수 개 버전에 적용되는 함수 결함 복구 방법을 제공하되, 상기 방법은,
프리셋 결함 함수를 확정하는 단계;
상기 프리셋 결함 함수를 실행하는 단계;
상기 프리셋 결함 함수의 리턴 값 및/또는 파라미터에 이상이 존재하는지 여부를 체크하는 단계;
이상이 존재하는 경우, 상기 프리셋 결함 함수를 호출하는 상위 함수에게 이상을 표시하는 메시지를 리턴하는 단계를 포함한다.
제2측면에 따르면, 본 발명은 제2측면의 제1실시방식에서, 상기 방법은,
프리셋 결함 함수의 리턴 값과 파라미터에 이상이 존재하는지 여부를 체크하는 단계 전에,
인라인 후크 방법을 기반으로, 상기 프리셋 결함 함수의 프리셋 코드를 복구 함수의 호출로 점프하는 명령으로 보정하는 단계를 더 포함하되; 여기서, 상기 복구 함수는 상기 프리셋 결함 함수의 파라미터 및/또는 리턴 값을 체크하는데 이용된다.
제2측면에 따르면, 본 발명의 제2측면의 제2실시방식에서,상기 방법은,
프리셋 결함 함수를 확정하는 단계 이후에,
상기 프리셋 결함 함수의 유형이 자식 함수이고, 상기 자식 함수가 그 대응하는 부모 함수에서 여러번 호출되는 경우, 상기 부모 함수의 인덱스를 기반으로 상기 자식 함수가 부모 함수에서의 위치를 확정하는 단계를 더 포함한다.
제2측면에 따르면, 본 발명의 제2측면의 제3실시방식에서, 상기 방법은,
상기 결함 함수에 대한 복구를 진행하기 전에,
상기 복구 함수를 초기화하여, 상기 복구함수를 저장하기 위한 저장 공간을 획득하는 단계를 더 포함한다.
제2측면에서, 본 발명의 제2측면의 제4실시방식에서, 상기 방법은,
상기 결함 함수에 대한 복구를 진행한 후에, ,
상기 복구 함수를 삭제할 경우, 상기 복구 함수를 저장하기 위한 저장 공간을 해제하는 단계를 더 포함한다.
제3측면에 따르면, 본 발명의 실시예는 함수 결함 복구 장치를 제공하되, 상기 장치는,
프리셋 결함 함수를 확정하도록 구성된 제1위치 확정 모듈;
상기 프리셋 결함 함수의 파라미터에 이상이 존재하는지 여부를 체크하도록 구성된 제1체크 모듈;
상기 프리셋 결함 함수의 파라미터에 이상이 존재하는 경우, 상기 프리셋 결함 함수를 호출하는 상위 함수에게 이상을 표시하는 메시지를 리턴하도록 구성된 제1이상 리턴 모듈;
상기 프리셋 결함 함수의 파라미터에 이상이 존재하지 않는 경우, 상기 프리셋 결함 함수를 실행하도록 구성된 실행 모듈을 포함한다.
제3측면을 결합하여, 본 발명의 제3측면의 제1실시방식에서, 상기 장치는,
상기 프리셋 결함 함수를 실행한 후, 상기 프리셋 결함 함수의 리턴 값 및/또는 파라미터에 이상이 존재하는지 여부를 체크하도록 구성된 제2체크 모듈;
상기 프리셋 결함 함수의 리턴 값과 파라미터에 이상이 존재하는 경우, 상기 프리셋 결함 함수를 호출하는 상위 함수에게 이상을 표시하는 메시지를 리턴하도록 구성된 제2이상 리턴 모듈을 더 포함한다.
제3측면을 결합하여, 본 발명의 제3측면의 제2실시방식에서, 상기 제1체크 모듈은,
인라인 후크 방법을 기반으로, 상기 프리셋 결함 함수의 프리셋 라인 코드를 복구 함수의 호출로 점프하는 명령으로 보정하도록 구성된 점프 모듈을 포함하고; 상기 복구 함수는 상기 프리셋 결함 함수의 파라미터, 리턴 값 및/또는 파라미터를 체크하는데 이용되며;
상기 제2체크 모듈은,
인라인 후크 방법을 기반으로, 상기 프리셋 결함 함수의 프리셋 라인 코드를 복구 함수의 호출로 점프하는 명령으로 보정하도록 구성된 제2점프 모듈을 포함하고; 상기 복구 함수는 상기 프리셋 결함 함수의 리턴 값 및/또는 파라미터를 체크하는데 이용된다.
제3측면을 결합하면, 본 발명의 제3측면의 제3실시방식에서, 상기 장치는,
프리셋 결함 함수를 확정한 후,
상기 프리셋 결함 함수의 유형이 자식 함수이고, 상기 자식 함수가 그 대응하는 부모 함수에서 여러번 호출되는 경우, 상기 부모 함수의 인덱스를 기반으로 상기 자식 함수가 부모 함수에서의 위치를 확정하도록 구성된 제2위치 확정 모듈을 더 포함한다.
제3측면을 결합하여, 본 발명의 제3측면의 제4실시방식에서, 상기 장치는,
상기 결함 함수에 대한 복구를 진행하기 전에, 상기 복구 함수를 초기화하여, 상기 복구함수를 저장하기 위한 저장 공간을 획득하도록 구성된 초기화 모듈을 더 포함한다.
제3측면을 결합하여, 본 발명은 제3측면의 제5실시방식에서, 상기 장치는,
상기 결함 함수에 대한 복구를 진행한 후, 복구 함수를 삭제할 경우, 상기 복구 함수 및/또는 상기 복구함수를 저장하기 위한 저장 공간을 해제하도록 구성된 해제 모듈을 더 포함한다.
제4측면에 따르면, 본 발명의 실시예는 함수 결함 복구 장치를 제공하고, 상기 장치는,
프리셋 결함 함수를 확정하도록 구성된 제1위치 확정 모듈;
상기 프리셋 결함 함수를 실행하도록 구성된 실행 모듈;
상기 프리셋 결함 함수의 리턴 값 및/또는 파라미터에 이상이 존재하는지 여부를 체크하도록 구성된 체크 모듈;
상기 프리셋 결함 함수의 리턴 값과 파라미터에 이상이 존재하는 경우, 상기 프리셋 결함 함수를 호출하는 상위 함수에게 이상을 표시하는 메시지를 리턴하도록 구성된 이상 리턴 모듈을 포함한다.
제4측면을 결합하여, 본 발명의 제4측면의 제1실시방식에서, 상기 체크 모듈은,
상기 프리셋 결함 함수의 리턴 값과 파리미터에 이상이 존재하는지 여부를 체크하기 전에, 인라인 후크 방법을 기반으로, 상기 프리셋 결함 함수의 프리셋 라인 코드를 복구 함수의 호출로 점프하는 명령으로 보정하도록 구성된 점프 모듈을 포함하고; 여기서, 상기 복구 함수는 상기 프리셋 결함 함수의 파라미터 및/또는 리턴 값을 체크하는데 이용된다.
제4측면을 결합하여, 본 발명의 제4측면의 제2실시방식에서, 상기 장치는,
상기 프리셋 결함 함수의 유형이 자식 함수이고, 또한 상기 자식 함수가 그에 대응하는 부모 함수에서 여러번 호출되는 경우, 상기 부모 함수의 인덱스를 기반으로, 상기 자식 함수가 부모 함수에서의 위치를 확정하도록 구성된 제2위치 확정 모듈을 더 포함한다.
제4측면을 결합하여, 본 발명의 제4측면의 제3실시방식에서, 상기 장치는,
상기 결함 함수에 대한 복구를 진행하기 전에, 상기 복구 함수를 초기화하여, 상기 복구함수를 저장하기 위한 저장공간을 획득하도록 구성된 초기화 모듈을 더 포함한다.
제4측면을 결합하여, 본 발명의 제4측면의 제4실시방식에서, 상기 장치는,
상기 결함 함수에 대한 복구를 진행한 후에, 상기 복구 함수를 삭제할 경우, 상기 복구 함수를 저장하기 위한 저장 공간을 해제하도록 구성된 해제 모듈을 더 포함한다.
제5측면에 따르면, 본 발명의 실시예는 서버를 제공하되, 그 기능은 하드웨어를 통해 구현될 수도 있고, 하드웨어를 기반으로상응하는 소프트웨어를 실행하는 것으로도 구현될 수있다. 상기 하드웨어 또는 소프트웨어는 하나 또는 다수의 상기 기능과 서로 대응하는 모듈을 포함한다.
하나의 가능한 설계에서, 서버의 구조는 프로세서와 메모리를 포함하고, 상기 메모리는 서버가 상기 제1측면에 따른 함수 결함 복구 방법을 실행하도록 지지하는 프로그램을 저장하는데 이용되며, 상기 프로세서는 상기 메모리에 저장된 프로그램을 실행하도록 구성된다. 상기 서버는 통신 인터페이스를 더 포함하여, 서버와 기타 디바이스 또는 통신 네트워크간의 통신에 이용된다.
제6측면에 따르면, 본 발명의 실시예는 컴퓨터 판독가능한 저장 매체를 제공하되, 이는 함수 결함 복구 장치에 이용되는 컴퓨터의 소프트웨어 명령을 저장하는데 이용되고, 그 중에 상기 제1측면에 따른 함수 결함 복구 방법을 실행하도록 설정한 상기 함수 결함 복구 장치에 이용되는 프로그램을 포함한다.
상기 기술방안 중의 하나의 기술방안은 아래의 장점 또는 유리한 효과를 구비한다. 본 발명의 실시예의 기술방안은 파라미터에 이상이 존재하는 프리셋 결함 함수를 필터링하고, 프리셋 결함 함수의 파라미터 이상 상황에 따라, 프리셋 결함 함수를 실행할 지 여부를 선택하며, 이로써 프리셋 결함 함수의 원시 코드를 획득하지 않고도 결함 함수에 대한 복구를 실현할 수 있다.
상기 기술 방안 중의 다른 한 기술 방안은 아래의 장점 또는 유리한 효과를 구비한다. 본 발명의 실시예의 기술 방안은 리턴 값 및/또는 파라미터에 이상이 존재하는 프리셋 결함 함수를 필터링하고, 우선 프리셋 결함 함수를 실행하고, 그 다음에 프리셋 결함 함수의 리턴 값 및/또는 파라미터의 이상 상황을 체크하여, 리턴 값 및/또는 파라미터에 이상이 존재하는 프리셋 결함 함수를 필터링으로 제거함으로써, 프리셋 결함 함수의 원시 코드를 획득하지 않고도 결함 함수에 대한복구를 실현할 수 있다.
상기 기술 방안 중의 다른 한 기술 방안은 아래의 장점 또는 유리한 효과를 구비한다. 본 발명의 실시예의 기술 방안은 프리셋 결함 함수의 원시 코드를 획득하지 않아도 되고, 또한, 프리셋 결함 함수를 교환하는 복구 함수를 작성하지 않아도 되므로, 개발 주기가 짧고, 안정성과 호환성이 우수하다.
상기 서술은 단지 명세서의 목적일 뿐, 그 어떠한 방식으로 제한을 하려는 것은 아니다. 상기 서술한 예시적인 측면, 실시방식과 특징과 더불어 하기 도면과 하기 상세한 서술를 참고로 하면, 본 발명의 측면, 실시방식과 특징을 더 쉽게 이해할 수 있을 것이다.
도면에서, 별도로 규정하지 않는 한, 여러 도면에 나타난 동일한 도면 표기는 동일하거나 유사한 부품 또는 요소를 표시한다. 이러한 도면은 비례에 따라 작성되지 않을 수 있다. 이러한 도면은 단지 본 발명에서 공개된 일부 실시방식을 표현하기 위한 것으로, 본 발명의 범위를 제한하는 것은 아니라는 점을이해하여야 한다.
도1은 본 발명의 실시예1의 함수 결함 복구 방법을 나타내는 흐름도이다.
도2는 본 발명의 실시예2의 함수 결함 복구 방법을 나타내는 흐름도이다.
도3은 본 발명의 실시예3의 함수 결함 복구 방법을 나타내는 흐름도이다.
도4는 본 발명의 실시예5의 함수 결함 복구 장치를 나타내는 개략도이다.
도5는 본 발명의 실시예6의 함수 결함 복구 장치를 나타내는 개략도이다.
도6은 본 발명의 실시예7의 함수 결함 복구 장치를 나타내는 개략도이다.
도7은 본 발명의 실시예8의 함수 결함 복구 장치를 나타내는 개략도이다.
도8은 본 발명의 실시예9의 서버를 나타내는 개략도이다.
도1은 본 발명의 실시예1의 함수 결함 복구 방법을 나타내는 흐름도이다.
도2는 본 발명의 실시예2의 함수 결함 복구 방법을 나타내는 흐름도이다.
도3은 본 발명의 실시예3의 함수 결함 복구 방법을 나타내는 흐름도이다.
도4는 본 발명의 실시예5의 함수 결함 복구 장치를 나타내는 개략도이다.
도5는 본 발명의 실시예6의 함수 결함 복구 장치를 나타내는 개략도이다.
도6은 본 발명의 실시예7의 함수 결함 복구 장치를 나타내는 개략도이다.
도7은 본 발명의 실시예8의 함수 결함 복구 장치를 나타내는 개략도이다.
도8은 본 발명의 실시예9의 서버를 나타내는 개략도이다.
아래는, 단지 일부의 예시적 실시예에 대한 간단한 서술이다. 해당분야 당업자라면 본 발명의 정신 또는 범위를 벗어나지 않은 상황에서, 여러 가지 부동한 방식으로 서술된 실시예에 대해 보정할 수 있다는 점을 이해하여야 한다. 그러므로, 도면과 서술은 그 본질상 예시적인 것이지 제한하려는 것은 아니다.
실시예1
본 발명의 실시예는 함수 결함 복구 방법을 제공한다. 도1에서 도시한 바와 같이, 본 발명의 실시예에 따른 함수 결함 복구 방법을 나타내는 흐름도이다. 본 발명의 실시예에 따른 함수 결함 복구 방법은 아래의 단계를 포함한다.
단계(S101)에서 프리셋 결함 함수를 확정한다.
프로그래머는 종래의 체크기술로 어떤 함수에 결함이 존재하는지 확정할 수 있으므로, 본 발명의 실시예는 구체적인 실시과정에서, 프리셋 결함 함수의 주소를 직접 찾을 수 있고, 이로써 프리셋 결함 함수를 확정할 수 있다.
단계(S102)에서, 상기 프리셋 결함 함수의 파라미터에 이상이 존재하는지 여부를 체크하고; 상기 프리셋 결함 함수에 이상이 존재하는 경우, 단계(S103)를 실행하고; 상기 프리셋 결함 함수에 이상이 존재하지 않는 경우, 단계(104)를 실행한다.
여기서, 단계(S102)는, 인라인 후크(inlinehook) 방법을 기반으로, 상기 프리셋 결함 함수의 프리셋 라인 코드를 복구 함수의 호출로 점프하는 명령으로 보정하는 단계를 포함하되; 상기 복구 함수는 상기 프리셋 결함 함수의 파라미터, 리턴 값 및/또는 파라미터를체크하는데 이용된다.
아래에 인라인 후크 방법을 간단히 소개하기로 한다. 상기 인라인 후크 방법의 원리는, 결함 함수의 시작 부분의 몇개 명령을 분석하여, 이 몇 개 명령을 배열에 복제(copy)하여 저장시키고, 이를 복구 함수를 호출하는 몇개의 명령으로 교환하는 것이다; 만약 원래의 결함 함수를 실행하려면, 복구 함수의 처리가 완료된 후, 먼저 예전에 저장한 시작 부분의 몇 개 명령을 실행하고, 그 다음에 시작 부분의 몇 개 명령에 이어지는 주소로 다시 점프하여 계속 실행한다. 본 발명의 실시예에 결합하여 보면, 본 발명의 실시예 중 복구 함수를 로딩하는 방법을 인라인 후크 방법을 이용하여 실현할 수 있다.
여기서, 본 발명의 실시예는 처음으로 프리셋 결함 함수에 대해 복구를 진행할 때부터, 프리셋 결함 함수의 프리셋 라인 코드를, 예를 들면, 제1라인 코드를 복구 함수로 점프하는 명령으로 보정함으로써 복구 함수와 프리셋 결함 함수를 바인딩시킨다. 따라서 그 후에 프리셋 결함 함수를 매번 실행할 때마다, 먼저 복구 함수를 실행함으로써, 복구 함수로 하여금 프리셋 결함 함수의 파라미터에 이상이 있는지 여부를 체크하게 한다.
일부 프리셋 결함 함수에 대해서, 만약 직접적으로 그 결함 함수를 실행한다면, 시스템의 붕괴 등 위험이 발생할 수 있으므로, 결함 함수를 실행하기 전에, 결함 함수에 이상 함수가 존재하는지 여부를 우선 체크한 후, 이상 함수가 존재하는 결함 함수를 필터링으로 제거해야 한다.
단계(103)에서, 상기 프리셋 결함 함수를 호출하는 상위 함수에게 이상을 표시하는 메시지를 리턴한다.
예를 들면, 프리셋 결함 함수(A)의 제1라인 코드를 실행할 때, 제1라인 코드가 이미 복구 함수(B)로 점프하는 명령으로 보정되었으므로, 복구 함수(B)로 점프하게 되고, 또한 복구 함수(B)를 통해 프리셋 결함 함수(A)의 파라미터를 체크하게 된다. 만약 함수(A)의 파라미터에 이상이 발견될 경우, 예를 들면 함수(A)의 정상적인 파라미터값은 1000보다 작아야 하는데, 이상이 발생할 경우, 함수(A)의 파라미터값이 1000보다 크다. 이 경우, 복구 함수는 프리셋 결함 함수를 리턴하지 않고, 호출하는 상위 함수에게 에러 코드를, 예를 들면, -2. 이런 형식으로 리턴하여 호출하는 상위 함수로 하여금 프리셋한 기타 논리를 기반으로 프리셋 결함 함수(A)에 대해 복구를진행한다. 예를 들면, 프리셋 결함 함수(A)를 교환한다. 해당분야 당업자라면, 이해할 수 있는 바와 같이, 복구 함수를 실행할 때, 결함 함수는 이와 동일한 환경에 처해 있기 때문에, 이상이 발생하지 않게끔 결함 함수를 종료할 수 있다.
단계(S104)에서, 상기 프리셋 결함 함수를 실행한다.
프리셋 결함 함수의 파라미터에 이상이 존재하지 않는다면, 프리셋 결함 함수를 실행할 수 있다는 뜻이므로, 이 경우에는 복구 함수를 실행한 후, 프리셋 결함 함수로 리턴하여, 보정된 프리셋 라인 코드의 다음 라인 코드를 실행한다. 예를 들면, 프리셋 라인 코드가 제1라인 코드인 경우, 복구 함수를 실행한 후, 프리셋 결함 함수로 리턴하여, 프리셋 결함 함수의 제2라인 코드를 실행하기 시작한다.
상응하게, 복구 함수가 결함 함수 파라미터를 체크할 때, 파라미터에 이상이 발견되지 않으면, 해당 결함 함수를 계속 실행한다.
유의할 점이라면, 본 발명의 실시예는 프리셋 결함 함수의 프리셋 라인 코드를 보정할 때, 프리셋 라인 코드를 기반으로 직접 보정하는 것이 아니라, 우선 프리셋 라인 코드를 버퍼 영역에 저장한 후, 그 다음에 복구 함수로 점프하는 명령을 프리셋 라인의 위치에 삽입하는 것이다. 상기 서술 방식은 본 발명을 이해하기 쉽게 표현하기 위해서이다. 복구 함수가 프리셋 결함 함수의 파라미터를 체크할 경우, 파라미터에 이상이 존재하지 않는다면, 버퍼 영역에 저장된 프리셋 라인 코드를 실행하고, 그 다음에 프리셋 결함 함수에 다시 점프하여 프리셋 라인의 다음 라인의 코드를 실행한다. 예를 들면, 프리셋 코드가 제1라인 코드일 경우, 제1차 결함 함수를 복구할 때, 우선 제1라인 코드를 버퍼 영역에 저장하고, 그 다음에 제1라인에 복구 함수에 점프하는 명령을 삽입하며, 프리셋 결함 함수를 실행할 때는, 우선 복구 함수로 점프하는 명령을 실행하고, 그 다음에 복구 함수로 점프하여, 복구 함수를 통해 이상 파라미터가 존재하는지 여부를 체크하고, 파라미터에 이상이 존재하는 경우, 호출하는 상위함수에게 에러를 지시하는 메시지를 리턴하고, 파라미터에 이상이 존재하지 않는 경우, 버퍼 영역에 저장된 제1라인 코드를 실행하고, 따라서 프리셋 결함 함수를 리턴하여 제2라인 코드를 실행한다.
실질적으로, 본 발명의 실시예는 필터링 메커니즘을 이용하여 커널 또는 응용 프로그램에 대해 복구를 진행할 때, 그 중의 프리셋 결함 함수를 필터링으로 제거함으로써, 복구의 목적을 이룬다. 프리셋 결함 함수에 대해 복구를 진행할 때, 만약 프리셋 결함 함수의 유형을 막론하고, 직접 프리셋 결함 함수에 대해 전체 교환을 실행한다면, 전체 교환시, 프리셋 결함 함수의 원시 코드를 획득하여야 할 뿐만 아니라, 프리셋 결함 함수의 원시 코드를 기반으로 또 다른 세트의 코드를 다시 코딩하여 프리셋 결함 함수를 교환하여야 하므로 필연적으로 복구의 효율에 영향을 미치게 될 것이다. 따라서, 본 발명에 따른 실시예는 프리셋 결함 함수를 유보하는 전제 하에, 프리셋 결함 함수에 대해 복구를진행한다.
일반적으로, 유보하는 결함 함수는 유보하여도 전체 프로그램에게 큰 영향을 미치지 않게 될 것이라고 추측되거나 또는 함수 결함을 쉽게 확정할 수 있는 프리셋 결함 함수들이다. 예를 들면, 덧셈, 뺄셈을 계산하는 결함 함수; 또 예를 들면, 코드가 비교적 짧은 결함 함수, 예를 들면, 단지 10 라인의 코드밖에 안되는 결함 함수가 있다.
본 발명의 실시예에 따른 복구는 결함 함수의 실행을 정지시키고, 호출하는 상위 함수에 점프하는 동시에, 호출하는 상위 함수에게 에러 코드를 피드백한다는 것을 의미한다.
즉, 본 발명의 실시예에 따른 복구 함수는 버그 복구 코드로서, 일반적으로 패치로 불린다.
본 발명의 실시예에 따른 기술 방안은 파라미터에 이상이 존재하는 프리셋 결함 함수를 필터링하고, 프리셋 결함 함수의 파라미터 이상 상황에 따라, 프리셋 결함 함수를 실행할 지 여부를 선택함으로써, 프리셋 결함 함수의 원시 코드를 획득하지 않고도 결함 함수에 대해 복구를 진행할 수 있다.
또한 본 발명의 실시예에 따른 기술방안은 프리셋 결함 함수의 원시 코드를 획득하지 않아도 되고, 프리셋 결함 함수를 교환하는 복구 함수를 코딩하지 않아도 되므로, 개발 주기가 짧고, 안정성과 호환성이 우수하다.
실시예2
본 발명의 실시예는 실시예1을 기반으로, 함수 결함 복구 방법을 제공한다. 도2는, 본 발명의 실시예에 따른 함수 결함 복구 방법을 나타내는 흐름도이다. 도2에서 도시한 바와 같이, 본 발명의 실시예에 따른 함수 결함 복구 방법은 하기 단계를 포함한다.
단계(S201)에서 프리셋 결함 함수를 확정한다.
상기 단계(S201)는 실시예1의 단계(S101)와 서로 대응한다.
단계(S202)에서, 상기 프리셋 결함 함수의 파라미터에 이상이 존재하는지 여부를 체크한다.
상기 단계(S202)는 실시예1의 단계(S102)와 서로 대응한다.
단계(S203)에서, 이상이 존재하는 경우, 상기 프리셋 결함 함수를 호출하는 상위 함수에게 이상을 표시하는 메시지를 리턴한다.
상기 단계(S203)는 실시예1의 단계(S103)와 서로 대응한다.
단계(S204)에서, 이상이 존재하지 않는 경우, 상기 프리셋 결함 함수를 실행한다.
상기 단계(S204)는 실시예1의 단계(S104)와 서로 대응한다.
단계(S205)에서, 상기 프리셋 결함 함수의 리턴 값 및/또는 파라미터에 이상이 존재하는지 여부를 체크한다.
여기서, 단계(S205)는, 인라인 후크(inlinehook) 방법을 기반으로, 상기 프리셋 결함 함수의 프리셋 라인 코드를 복구 함수의 호출로 점프하는 명령으로 보정하는 단계를 포함하되; 상기 복구 함수는 상기 프리셋 결함 함수의 리턴 값 및/또는 파라미터를 체크하는데 이용된다.
인라인 후크 방법은 실시예1을 참조하고, 여기서는 더 기술하지 않는다.
단계(S206)에서, 이상이 존재하는 경우, 상기 프리셋 함수를 호출하는 상위 함수에게 이상을 표시하는 메시지를 리턴한다.
될 수 있는 한, 결함 함수의 실행에 의해 나쁜 영향이 초래될 것을 막기 위하여, 프리셋 결함 함수를 실행하기 전부터, 프리셋 결함 함수의 파라미터를 체크할 수 있고, 파라미터에 결함이 존재하지 않는 경우, 프리셋 결함 함수를 실행 완료 후, 프리셋 결함 함수의 리턴 값 및/또는 파라미터를 체크할 수 있다. 예를 들면, 처음으로 프리셋 결함 함수에 대해 복구를 진행할 때부터, 프리셋 결함 함수의 프리셋 라인 코드를 복구 함수로 점프하는 명령으로 보정한다. 예를 들면, 프리셋 결함 함수의 제1라인 코드를 복구 함수로 점프하는 명령으로 보정한다. 상기 복구 함수로 점프하는 명령에 의하면, 결함 함수의 제1라인 코드를 실행할 때, 복구 함수로 점프하고, 복구 함수를 통해 프리셋 결함 함수에 파라미터 이상이 존재하는지 여부를 체크하고, 파라미터에 이상이 존재한다면 호출하는 상위 함수에 리턴한다. 물론, 이 경우, 리턴 값 및/또는 파라미터를 다시 체크할 필요는 없다. 이상이 존재하지 않는 경우, 프리셋 결함 함수를 호출하여 프리셋 결함 함수를 실행하고, 그 다음에 프리셋 결함 함수의 리턴 값 및/또는 파라미터를 수신하고, 리턴 값 및/또는 파라미터에 이상이 존재하는지 여부를 체크한다. 리턴 값 및/또는 파라미터에 이상이 존재하지 않는 경우, 프리셋 결함 함수를 리턴하고, 따라서, 순서에 따라 기타 함수를 실행한다. 리턴 값 및/또는 파라미터에 이상이 존재한다면, 리턴 값 및/또는 파라미터의 상황에 따라, 상기 결함 함수의 리턴 값 및/또는 파라미터에 대해 기타 처리를 진행한다. 예를 들면 리턴 값 및/또는 파라미터를 보정한다.
한 실시방식에 따르면, 단계(S204)에서, 해당 프리셋 결함 함수를 호출하는 방식으로 해당 함수를 실행할 수 있다. 그 원인은 호출에 응하는 결과로 복구 함수가 리턴되기 때문이다. 이에 따르면 해당 제2차 점프 단계를 생략할 수 있다.
또한, 상기 프리셋 결함 함수의 유형은 일반 함수와 자식 함수를 포함한다.
상기 프리셋 결함 함수의 유형이 일반 함수인 경우에는, 상기 실시예에서 서술한 단계로 복구를 직접 진행하고; 상기 프리셋 결함 함수의 유형이 자식 함수이고, 또한 상기 자식 함수는 그 대응하는 부모 함수 중에서 여러번 호출되는 경우에는, 프리셋 결함 함수를 확정한 후, 상기 부모 함수의 인덱스(index)를 기반으로, 상기 자식 함수가 부모 함수 중에서의 위치를 진일보로 확정할 수 있다.
자식 함수가 부모 함수 중에서의 위치를 확정한 후의 기타 실행 단계는 본 발명의 실시예1과, 실시예2와 대응한다. 예를 들면, 실시예1과 대응하여, 자식 함수를 실행하기 전에 복구 함수로 점프하여, 자식 함수에 이상이 존재하는지 여부를 체크하고, 이상이 존재하는 경우, 부모 함수에게 이상을 표시하는 메시지를 리턴하고, 이상이 존재하지 않는 경우, 자식 함수를 실행한다. 또한, 예를 들면, 실시예2에 대응하여, 자식 함수를 실행하기 전에 복구 함수로 점프하여, 자식 함수의 파라미터에 이상이 존재하는지 여부를 체크하고, 이상이 존재하는 경우, 부모 함수에게 이상을 표시하는 메시지를 리턴하고, 이상이 존재하지 않는 경우, 자식 함수를 실행하며, 그 다음에 자식 함수의 리턴 값 및/또는 파라미터를 수신하여, 복구 함수의 리턴 값 및/또는 파라미터에 이상이 존재하는지 여부를 체크하고, 이상이 존재하지 않는 경우, 기타 함수를 계속 실행하고, 이상이 존재하는 경우, 부모 함수에게 에러를 지시하는 메시지를 리턴한다.
어느 한 실시예에 따르면, 상기 방법은, 프리셋 결함 함수를 확정하는 단계 전에,
복구 함수를 초기화하여, 상기 복구 함수를 저장하기 위한 저장 공간을 획득하는 단계를 더 포함한다.
구체적으로, 프리셋 결함 함수를 확정하기 전에, 복구 함수를 초기화하여야 한다. 복구 함수에 대한 초기화에 따라 메모리에서 복구 함수를 위한 여분 저장 공간이 요청되고; 또한, 복구 함수의 실행 수요에 따라, 타겟 데이터를 보정할 수 있다. 예를 들면, 프리셋 결함 함수의 파라미터를 보정하는 것 등이다.
다른 한 실시예에 있어서, 필요할 경우, 상기 프리셋 결함 함수에 대한 복구를 진행한 후에, 복구 함수를 삭제할 수도 있으므로, 본 발명의 실시예는 하기와 같이 복구 함수를 삭제하는 단계를 더 포함한다.
즉, 복구 함수를 삭제시, 상기 복구 함수를 저장하기 위한 저장 공간을 해제한다.
예를 들면, 복구 함수의 버전 업데이트 또는 기타 원인으로 인하여 복구 함수를 삭제할 경우, 사전에 복구 함수를 위해 요청한 여분의 저장 공간을 해제해야 하며; 또한, 타겟 데이터가 보정된 경우, 보정된 타겟 데이터를 회복해야 한다. 예를 들면, 프리셋 결함 함수의 파라미터 등을 회복해야 한다.
또한, 본 발명의 실시예는 패치의 상태, 예를 들면, 패치의 버전 정보, 패치의 사용 상태(사용 가능 상태와 사용 불가능 상태를 포함) 및 패치의 명칭 정보 등을 실시간으로 출력할 수 있으므로, 패치가 사용 가능 상태에 처해 있는지 확정할 수 있고, 또한 패치의 버전 정보를 기반으로 패치를 업데이트해야 할지 확정할 수 있다.
여기서, 패치의 사용 가능 상태는 결함 함수로 점프하는 명령을 실행함에 따라 복구 함수가 실행할 수 있게 되는 상태를 가리키고; 패치의 사용 불가능 상태는 결함 함수로 점프하는 명령을 실행하지 않음에 따라, 복구 함수가 실행할 수 없게 되는 상태, 즉, 결함 함수와 패치 함수 간의 바인딩을 해제시킨 상태를가리킨다
또한, 본 발명의 실시예는 구체적인 실행과정에서, (1) 프리셋 결함 함수의 명칭func, 주소 addr 및 소속 모듈의 명칭mod; (2) 프리셋 결함 함수가 자식 함수인 경우, 부모 함수의 명칭 pfunc, 주소 paddr 및 소속 모듈의 명칭 pmod을 포함하고; (3) 프리셋 결함 함수가 자식 함수인 경우, 또한 자식 함수가 부모 함수 중에서 나타난 위치 인덱스(index)를 비롯한 프리셋 결함 함수에 대한 기술 정보를 확정해야 한다.,
마찬가지로, 본 발명의 실시예에 따른 필터링 메커니즘을 기반으로, 복구 방법은, 함수 전체적 교환 방법(func_replace)으로 커널 또는 응용 프로그램 중의 프리셋 결함 함수에 대해 복구를 진행한다. 구체적으로 실시할 때, 우선 프리셋 결함 함수의 코드를 획득하고, 따라서 그 코드를 기반으로 결함 함수의 기능을 구현할 수 있는 복구 함수를 다시 코딩하고, 그 다음에 인라인 후크 방법으로 프리셋 결함 함수의 프리셋 라인, 예를 들면, 제2라인 코드를 복구 함수로 점프하는 점프 명령으로 복구하여, 복구 함수를 실행한다. 또한, 복구 함수를 실행한 후에, 원래의 프리셋 복구 함수로 다시 리턴하지 않는다. 실질적으로 보면, 복구 함수로 프리셋 결함 함수를 대체한 것이다.
본 발명의 실시예에 따른 기술방안은 일반 함수와 자식 함수에 대한 복구를 실현하고, 또한 프리셋 결함 함수가 자식 함수인 경우, 상기 부모 함수의 인덱스를 기반으로 상기 자식 함수가 부모 함수 중에서의 위치를 확정한다.
실시예3
본 발명의 실시예는 함수 결함 복구 방법을 제공한다. 도3은, 본 발명의 실시예에 따른 함수 결함 복구 방법을 나타내는 흐름도이다. 도3에서 도시한 바와 같이, 본 발명의 실시예에 따른 함수 결함 복구 방법은 하기 단계를 포함한다.
단계(S301)에서 프리셋 결함 함수를 확정한다;
프로그래머는 종래의 체크기술로 어떤 함수에 결함이 존재하는지 확정하므로, 본 발명의 실시예는 구체적인 실시 과정에서, 직접 프리셋 결함 함수의 주소를 찾을 수 있고, 이로써 프리셋 결함 함수를 확정할 수 있다.
단계(S302)에서, 상기 프리셋 결함 함수를 실행한다.
본 발명의 실시예에서, 프리셋 결함 함수가 실행될 때, 그 리턴 값 및/또는 파라미터는 정상일 수 있고, 이상일 수도 있다. 이러한 상황에서, 프리셋 결함 함수를 우선 실행하여 보고, 그 다음 리턴 값 및/또는 파라미터의 이상 상황에 따라 상응하는 처리를 진행한다.
단계(S303)에서, 상기 프리셋 결함 함수의 리턴 값 및/또는 파라미터에 이상이 존재하는지 여부를 체크한다.
여기서, 단계(S303) 전에, 상기 방법은,
인라인 후크(inlinehook) 방법을 기반으로, 상기 프리셋 결함 함수의 프리셋 라인 코드를 복구 함수의 호출로 점프하는 명령으로 보정하는 단계를 더 포함하되; 여기서 상기 복구 함수는 상기 프리셋 결함 함수의 파라미터 및/또는 리턴 값을 체크하는데 이용된다.
인라인 후크 방법은 실시예1을 참조하기로 하고, 여기서 더 기술하지 않는다.
본 발명의 실시예에서, 우선 프리셋 결함 함수의 프리셋 라인 코드를 복구 함수에 점프하는 점프 명령으로 보정할 수 있다. 이에 따라, 일단 프리셋 결함 함수의 프리셋 라인 코드를 실행하면, 복구 함수로 점프되고, 복구 함수를 통해 프리셋 결함 함수의 리턴 값 및/또는 파라미터가 정상인지 여부를 체크한다. 리턴 값 및/또는 파라미터가 정상인 경우, 프리셋 결함 함수를 리턴하고, 그 다음 순서에 따라 기타 함수를 실행하며; 그 리턴 값 및/또는 파라미터가 이상인 경우, 리턴 값의 상황에 따라 프리셋 결함 함수의 리턴 값 및/또는 파라미터에 대해 상응한 처리를 진행한다. 예를 들면, 리턴 값이 존재하는 경우, 리턴 값 또는 파라미터를 복구하고, 개별 상황에서는 리턴 값을 포기할 수도 있으며; 또 예를 들면, 리턴 값이 존재하지 않는 상황에서, 기타 복구 작업을 진행할 수 있다.
단계(304)에서, 이상이 존재하는 경우, 상기 프리셋 결함 함수를 호출하는 상위 함수에게 이상을 표시하는 메시지를 리턴한다.
본 발명의 실시예는 리턴 값 및/또는 파라미터에 이상이 있는 경우, 복구 처리를 진행한다. 여기서, 리턴 값의 이상 상황은 리턴 값이 존재하는 상황과 리턴 값이 존재하지 않는 상황을 포함하고, 리턴 값이 있는 상황은 또한 존재하는 리턴 값이 복구가능한 리턴 값인 것과 복구불가능한 리턴 값인 것을 포함한다. 아래에 이 3가지 상황에 대해 예를 들어 설명한다.
프리셋 결함 함수에 리턴 값이 존재하고 또한 리턴 값이 보정 가능한 리턴 값인 경우, 예를 들면 포인터 유형인 경우: 예를 들면, 프리셋 결함 함수(A)에 대해, 그 대상이 인용한 변량에 변화가 발생하면, 프리셋 결함 함수(A)의 리턴 값에 이상이 발생하였는 지 여부를 체크하여야 한다. 구체적으로, 실행 시, 프리셋 결함 함수(A)의 리턴 값이 65535보다 작거나 같은 경우 정상이고, 65535보다 큰 경우 오버플로우가 일어나므로, 프리셋 결함 함수(A)의 리턴 값을 보정할 수 있다. 예를 들면, 해당 리턴 값을 65500으로 보정하여, 결함 함수(A)의 리턴 값을 65536보다 작게 한다.
프리셋 결함 함수에 리턴 값이 존재하고 또한 리턴 값이 네이티브 유형, 예를 들면, 정수 변수로서 개변할 수 없는 리턴 값인 경우: 리턴 값을 포기하는 것으로 프리셋 결함 함수를 복구할 수 있다. 예를 들면, 프리셋 함수(A)를 실행한 후, 복구 함수(B)를 통해 프리셋 결함 함수(A)의 리턴 값을 체크하는 바, 프리셋 결함 함수(A)의 리턴 값이 데이터 집합인 경우, 해당 데이터 집합에서, 그 어느 한 멤버가 오버플로우할 수 있으므로, 이 경우, 복구 함수는 해당 데이터 집합을 포기하고, 프리셋 결함 함수(A)를 호출하는 상위 함수로 리턴한다.
프리셋 결함 함수에 리턴 값이 존재하지 않는 경우, 예를 들면, 스트링 복사를 실행하는 함수에게는 리턴 값이 존재하지 않고, 호출하는 상위 함수는 프로그램의 실행 논리에 따라 프리셋 결함 함수가 성공적으로 실행되었는 지 여부를 판단할 수 있다. 프리셋 결함 함수의 실행 결과는 파라미터의 설정에 의존하므로, 이 경우, 복구 함수를 통해 호출하는 상위 함수에게 리턴 값을 반환하여도 결과를 개변할 수 없기에, 프리셋 결함 함수의 리턴 값에 관심을 기울이지 말고, 프로그램의 변수를 회복하는데만 집중하면 복구를 실현할 수 있다. 예를 들면, 프로그램 변수가 실행 전의 값은 0이고, 실행 후의 값은 3인 경우, 프리셋 결함 함수를 복구하려면, 프로그램 변수의 값을 3에서 0으로 고치면 된다.
본 발명의 실시예에서 예시한 상기 상황은, 구체적으로 실행 시, 프로그램의 여러가지 논리에 따라 실현 가능하므로, 본 발명의 실시예는 상기 예시한 복구 방법을 포함하나 이에 한정되지 않는다.
본 발명의 실시예는 결국 프리셋 결함 함수의 리턴 값 및/또는 파라미터에 대해 처리, 예를 들면 프로그램 변수를 보정하거나, 기타 함수를 실행하여 프리셋 결함 함수의 논리를 개변시키는 등 처리를 진행할 것이고, 그 목적은 프리셋 결함 함수를 실행 시 일어나는 효과가 그를 호출하는 함수에게로 피드백되는 것을 방지하기 위함으로써, 다시 말하면, 이러한 나쁜 효과에 대해 보정 또는 숨기는 것이다. 본 발명의 실시예의 상기 단계는, 프리셋 결함 함수의 코드를 획득할 필요가 없고, 오로지 프리셋 결함 함수의 프리셋 라인 코드를 복구 함수로 점프하는 점프 명령으로 보정하는 것만으로도, 복구를 실현할 수 있으므로, 개발 과정이 용이하게 실현되고, 개발 주기가 비교적 짧다.
본 발명의 실시예의 기술방안은 리턴 값 및/또는 파라미터에 이상이 존재하는 프리셋 결함 함수를 필터링하여, 우선 프리셋 결함 함수를 실행하고, 그 다음에 프리셋 결함 함수의 리턴 값 및/또는 파라미터에 이상이 존재하는지 여부를 체크하여, 리턴 값 및/또는 파라미터에 이상이 존재하는 프리셋 결함 함수를 필터링으로 제거함으로써 프리셋 결함 함수의 원시 코드를 획득하지 않고도 결함 함수에 대해 복구를 진행할 수 있다.
또한 본 발명의 실시예에 따른 기술방안은 프리셋 결함 함수의 원시 코드를 획득하거나, 프리셋 결함 함수를 교환할 복구 함수를 코딩할 필요가 없으므로, 개발 주기가 짧고, 안정성과 호환성이 우수하다.
실시예4
본 발명의 실시예는 실시예3을 기반으로, 함수 결함 복구 방법을 제공한다. 역시 도3에서 도시한 바와 같이, 본 발명의 실시예는 실시예3 의 방법을 기반으로, 프리셋 결함 함수가 자식 함수인 경우의 복구 과정을 설명한다.
함수는 일반 함수와 자식 함수를 포함하고, 본 발명의 실시예에 따른 함수 결함 복구 방법은 일반 함수에 이용될 수 있고, 자식 함수에 이용될 수도 있다. 그러나, 부모 함수 중에는 다수개 자식 함수를 포함할 수 있으므로, 자식 함수의 위치를 진일보로 확정하여야 한다.
구체적으로, 프리셋 결함 함수를 확정한 후, 본 발명의 실시예는,
상기 프리셋 결함 함수의 유형이 자식 함수이고, 상기 자식 함수는 그 대응하는 부모 함수 중에서 여러번 호출되는 경우, 상기 부모 함수의 인덱스를 기반으로 상기 자식 함수가 부모 함수 중에서의 위치를 확정하는 단계를 더 포함한다.
나아가, 상기 프리셋 결함 함수에 대해 복구를 진행하기 전에, 상기 방법은,
상기 복구 함수를 초기화하여, 상기 복구 함수를 저장하기 위한 저장 공간을 획득하는 단계를 더 포함한다.
나아가, 상기 결함 함수에 대한 복구를 진행한 후에, 상기 방법은,
상기 복구 함수를 삭제할 경우, 상기 복구 함수를 저장하기 위한 저장 공간을 해제하는 단계를 더 포함한다.
또한, 본 발명의 실시예는 패치(복구 함수)의 상태, 예를 들면, 패치의 버전 정보, 패치의 사용 상태(사용 가능 상태와 사용 불가능 상태를 포함) 및 패치의 명칭 정보 등을 실시간으로 출력함으로써 패치가 사용 가능 상태에 처해 있는지 여부를 확정할 수 있고, 또한 패치의 버전 정보를 기반으로 패치를 업데이트해야 할지 여부를 확정할 수 있다. 구체적 설명은 실시예2의 설명을 참조하기로 하고, 여기서는 더 기술하지 않는다.
따라서, 본 발명의 실시예는, 구체적으로 실행 시, 또한, (1) 프리셋 결함 함수의 명칭func, 주소 addr 및 소속되는 모듈의 명칭 mod; (2) 프리셋 결함 함수가 자식 함수인 경우, 부모 함수의 명칭 pfunc, 주소 paddr 및 소속되는 모듈의 명칭 pmod; (3) 프리셋 결함 함수가 자식 함수인 경우, 또한 자식 함수가 부모 함수 중에서 나타난 위치 인덱스(index)를 비롯한 프리셋 결함 함수에 대한 기술 정보를 확정하여야 한다. 실시예2를 참조하기로 한다.
본 발명의 실시예에 따른 기술방안은 일반 함수와 자식 함수에 대한 복구를 실현할 수 있고, 프리셋 결함 함수가 자식 함수인 경우, 상기 부모 함수의 인덱스를 기반으로 상기 자식 함수가 부모 함수 중에서의 위치를 확정할 수 있다.
실시예5
본 발명의 실시예는 함수 결함 복구 장치를 제공한다. 도4는 본 발명의 실시예에 따른 함수 결함 복구 장치를 나타내는 도면이다. 본 발명의 실시예에 따른 함수 결함 복구 장치는,
프리셋 결함 함수를 확정하도록 구성된 제1위치 확정 모듈(41);
상기 프리셋 결함 함수의 파라미터에 이상이 존재하는지 여부를 체크하도록 구성된 제1체크 모듈(42);
상기 프리셋 결함 함수의 파라미터에 이상이 존재하는 경우, 상기 프리셋 파라미터를 호출하는 상위 함수에게 이상을 표시하는 메시지를 리턴하도록 구성된 제1이상 리턴 모듈(43);
상기 프리셋 결함 함수의 파라미터에 이상이 존재하지 않는 경우, 상기 프리셋 결함 함수를 실행하도록 구성된 실행 모듈(44)을 포함한다.
본 발명의 실시예는 결함 함수의 원시 코드를 획득할 필요 없이, 결함 함수에 대해 복구를 진행할 수 있으므로 이에 따른 유리한 효과는 실시예1의 유리한 효과와 마찬가지이므로, 여기서는 더 기술하지 않는다.
실시예6
본 발명의 실시예는 실시예5를 기반으로, 함수 결함 복구 장치를 제공한다. 도5는, 본 발명의 실시예에 따른 함수 결함 복구 장치를 나타내는 도면이다. 본 발명의 실시예에 따른 함수 결함 복구 장치는,
상기 프리셋 결함 함수를 실행한 후, 상기 프리셋 결함 함수의 리턴 값 및/또는 파라미터에 이상이 존재하는지 여부를 체크하도록 구성된 제2체크 모듈(51);
상기 프리셋 결함 함수의 리턴 값과 파라미터에 이상이 존재하는 경우, 상기 프리셋 결함 함수를 호출하는 상위 함수에게 이상을 표시하는 메시지를 리턴하도록 구성된 제2이상 리턴 모듈(52)을 포함한다.
나아가, 상기 제1체크 모듈(42)은,
인라인 후크 방법을 기반으로, 상기 프리셋 결함 함수의 프리셋 라인 코드를 복구 함수의 호출로 점프하는 명령으로 보정하도록 구성된 점프 모듈(421)을 포함한다.
나아가, 상기 장치는,
프리셋 결함 함수를 확정한 후, 상기 프리셋 결함 함수의 유형이 자식 함수이고, 상기 자식 함수가 그 대응하는 부모 함수에서 여러번 호출되는 경우, 상기 부모 함수의 인덱스를 기반으로 상기 자식 함수가 부모 함수 중에서의 위치를 확정하도록 구성된 제2위치 확정 모듈(53)을 더 포함한다.
나아가, 상기 장치는,
상기 결함 함수에 대한 복구를 진행하기 전에, 상기 복구 함수를 초기화하여, 상기 복구 함수를 저장하기 위한 저장 공간을 획득하도록 구성된 초기화 모듈(54)을 더 포함한다.
나아가, 상기 장치는,
상기 결함 함수에 대한 복구를 진행한 후에, 상기 복구 함수를 삭제할 경우, 상기 복구 함수를 저장하기 위한 저장 공간을 해제하도록 구성된 해제 모듈을 더 포함한다.
본 발명의 실시예는 프리셋 결함 함수가 자식 함수인 경우, 자식 함수에 대한 위치 확인을 실현할 수 있으므로, 해당하는 유리한 효과는 실시예2와 마찬가지이므로, 여기서는 더 기술하지 않는다.
실시예7
본 발명의 실시예는 함수 결함 복구 장치를 제공한다. 도6은, 본 발명의 실시예에 따른 함수 결함 복구 장치를 나타내는 도면이다. 본 발명의 실시예에 따른 함수 결함 복구 장치는,
프리셋 결함 함수를 확정하도록 구성된 제1위치 확정 모듈(61);
상기 프리셋 결함 함수를 실행하도록 구성된 실행 모듈(62)
상기 프리셋 결함 함수의 리턴 값 및/또는 파라미터에 이상이 존재하는지 여부를 체크하도록 구성된 체크 모듈(63);
상기 프리셋 결함 함수의 리턴 값 및/또는 파라미터에 이상이 존재하는 경우, 상기 프리셋 결함 함수를 호출하는 상위 함수에게, 이상을 표시하는 메시지를 리턴하도록 구성된 이상 리턴 모듈(64)을 포함한다.
본 발명의 실시예는 프리셋 결함 함수의 원시 코드를 획득할 필요없이, 결함 함수에 대한 복구를 실현할 수 있으므로, 해당 유리한 효과는 실시예3과 마찬가지이므로, 여기서는 더 기술하지 않는다.
실시예8
본 발명의 실시예는, 실시예7를 기반으로, 함수 결함 복구 장치를 제공한다. 도7은, 본 발명의 실시예에 따른 함수 결함 복구 장치를 나타내는 도면이다. 본 발명의 실시예에 따른 함수 결함 복구 장치는,
상기 체크 모듈에서, 상기 프리셋 결함 함수의 리턴 값과 파라미터에 이상이 존재하는지 여부를 체크하기 전에, 인라인 후크 방법을 기반으로, 상기 프리셋 결함 함수의 프리셋 라인 코드를 복구 함수의 호출로 점프하는 명령으로 보정하도록 구성된 점프 모듈(71)을 포함하되; 여기서 상기 복구 함수는 상기 프리셋 결함 함수의 파라미터 및/또는 리턴 값을 체크하는데 이용된다.
나아가, 상기 장치는,
상기 프리셋 결함 함수의 유형이 자식 함수이고, 상기 자식 함수가 그 대응하는 부모 함수에서 여러번 호출되는 경우, 상기 부모 함수의 인덱스를 기반으로 상기 자식 함수가 부모 함수 중에서의 위치를 확정하도록 구성된 제2위치 확정 모듈(72)을 더 포함한다.
나아가, 상기 장치는,
상기 결함 함수에 대한 복구를 진행하기 전에, 상기 복구 함수를 초기화하여, 상기 복구 함수를 저장하기 위한 저장 공간을 획득하도록 구성된 초기화 모듈(73)을 더 포함한다.
나아가, 상기 장치는,
상기 결함 함수에 대한 복구를 진행한 후, 복구 함수를 삭제할 경우, 상기 복구 함수를 저장하기 위한 저장 공간을 해제하도록 구성된 해제 모듈(74)을 더 포함한다.
본 발명의 실시예는 개발 주기가 짧고, 안정성과 호환성이 우수하며, 해당 유리한 효과는 실시예2와 마찬가지이므로, 여기서 더 기술하지 않는다.
본 발명의 실시예는 프리셋 결함 함수가 자식 함수인 경우, 자식 함수에 대한 위치 확인을 실현할 수 있으므로, 해당 유리한 효과는 실시예4와 마찬가지이므로, 여기서 더 기술하지 않는다.
실시예9
본 발명의 실시예는 서버를 제공하는 바, 도8에서 도시한 바와 같이, 해당 서버는, 메모리(81)과 프로세서(82)를 포함하고, 메모리(81) 내에는 프로세서(82)에서 운영할 수 있는 컴퓨터 프로그램이 저장된다. 프로세서(82)는 상기 컴퓨터 프로그램을 실행 시 상기 실시예 중의 메시지 분류 방법을 실현한다. 메모리(81)와 프로세서(82)의 수량은 한개 또는 다수개일 수 있다.
해당 디바이스는,
메모리(81) 및 프로세서(82)와 외부 디바이스 간의 통신에 이용되는 통신 인터페이스(83)를 더 포함한다.
메모리(81)는 고속RAM메모리를 포함할 수 있고, 비휘발성 메모리(non-volatile memory), 예를 들면 적어도 하나의 디스크 메모리를 포함할 수도 있다.
메모리(81), 프로세서(82)와 통신 인터페이스(83)가 각각 따로 설치할 경우, 메모리(81), 프로세서(82)와 통신 인터페이스(83)는 버스를 통해 서로 연결되고 이를 통해 상호간의 통신을 완성한다. 상기 버스는 공업 표준 체계 구조 (Industry Standard Architecture)로 된 버스, 외부 디바이스간 연결(PCI,Peripheral Component)로 된 버스 또는 확장 공업 표준 체계 구조(EISA,Extended Industry Standard Component)로 된 버스 등일 수 있다. 상기 버스는 주소 버스, 데이터 버스, 제어 버스 등으로 나뉜다.
선택적으로, 구체적인 실현 방식으로서, 메모리(81), 프로세서(82)와 통신 인터페이스(83)가 하나의 칩에 집적된 경우, 메모리(81), 프로세서(82)와 통신 인터페이스(83)는 내부 인터페이스를 통해 상호간의 통신을 완성할 수 있다.
실시예10
본 발명의 실시예는 컴퓨터 판독 가능 저장 매체를 제공하고, 여기에 컴퓨터 프로그램이 저장되고, 해당 프로그램은 프로세스에 의한 실행을 통해, 도1 내지 도4의 어느 한 실시예에 따른 방법을 실현한다.
본 명세서에서, 용어 "한 실시예", "일부 실시예", "예시", "구체적 예시", 또는 "일부 예시" 등의 서술은 해당 실시예를 참조로 한다, 또는 예시적 예의 구체적 특징, 구조, 재료 또는 특징은 본 발명의 적어도 하나의 실시예 또는 예시적 예에 포함한다는 것을 의미한다. 또한, 서술된 특징, 구조, 재료 또는 특징은 임의의 하나 또는 다수의 실시예 또는 예시적 예는 적절한 방식으로 결합된다. 또한, 서로 모순되지 않는 전제하에, 해당분야 당업자는 본 명세서에서 서술한 부동한 실시예 또는 예시적 예, 및 부동한 실시예 또는 예시적 예의 특징을 결합하거나 조합할 수 있다.
이외에, 용어 "제1", "제2"는 서술의 목적일 뿐, 상대적인 중요성을 표시하거나 또는 암시한다거나, 또는 표기 대상인 기술특징의 수량을 나타낸다는 뜻이 내포되어 있는 것으로 이해하여서는 안된다. 여기서, "제1", "제2"로 한정된 특징은 적어도 하나의 해당 특징이 포함된다는 것을 명시하거나 암시할 수 있다. 본 발명의 서술에서, 별도의 명확하고 구체적인 한정이 없는 경우, "다수개"의 의미는 두개 또는 두개 이상을 의미한다.
흐름도 또는 여기서 기타 방식으로 서술한 임의의 과정 또는 방법에 대한 서술은, 특정된 논리 기능 또는 과정을 실현하는데 응용되는 하나 또는 더 많은 단계, 실행 가능 명령의 코드, 모듈, 조각 또는 부분을 포함한다는 것을 의미하고, 본 발명의 바람직한 실시방식의 범위는 다른 실현 방식을 포함하되, 그 중에 예시 순서 또는 논의 순서에 따르지 않고, 관련된 기능에 따라 거의 동기화된 방식 또는 반대 순서대로 기능을 실행할 수 있는 것도 포함한다는 점에 대해 해당 기술분야의 당업자라면 이해하여야 한다.
흐름도에서 표시하거나 또는 여기서 기타의 방식으로 서술하는 논리 및/또는 단계는, 예를 들면, 논리 기능을 실현하는 실행 가능 명령의 순서 정리 리스트로 간주할 수 있고, 임의의 컴퓨터 판독 가능 매체에서 구현되어, 명령 실행 시스템, 장치 또는 디바이스(컴퓨터의 시스템을 기반으로, 프로세서의 시스템 또는 기타의 명령 실행 시스템, 장치 또는 디바이스에서 명령을 획득하고 명령을 실행하는 시스템을 포함함)에 이용되거나, 또는 이러한 명령 실행 시스템, 장치 또는 디바이스에 결합하여 이용된다. 본 명세서에서, "컴퓨터 판독 가능 매체"는 프로그램을 포함, 저장, 통신, 전송 또는 전송할 수 있는 임의의 장치로서, 명령 실행 시스템, 장치 또는 디바이스 또는 이러한 명령 실행 시스템, 장치 또는 디바이스에 결합하여 사용된다.
본 발명의 실시예에서 서술한 컴퓨터 판독 가능 매체는 컴퓨터 판독 가능 시그널 매체 또는 컴퓨터 판독 가능 저장 매체 또는 상기 양자의 임의의 조합일 수 있다. 컴퓨터 판독 가능 저장 매체의 더 구체적인 예시적 예는, 하기의 하나 또는 다수의 배선의 전기적 연결부(전자장치), 휴대용 컴퓨터 디스크 박스(자기장치), 랜덤 액세스 메모리(RAM), 읽기 전용 기억 장치(ROM), 소거 프로그램 가능 ROM(EPROM 또는 플래시 메로리), 섬유 광학 장치, 및 휴대용 판독 가능메모리(CDROM) 중의 적어도 하나를 포함한다. 나아가, 컴퓨터 판독 가능 저장 매체는 해당 프로그램을 프린트할 수 있는 종이 또는 기타 합당한 매체일 수도 있다. 그 원인은, 예를 들면, 종이 또는 기타 매체에 대해 광학 스캔을 진행하고, 따라서, 코딩, 해석, 또는 필요한 기타 적절한 방식의 처리를 진행하는 전자 방식으로 해당 프로그램을 획득하고, 이를 컴퓨터 메모리에 저장할 수 있기 때문이다.
본 발명의 실시예에서, 컴퓨터 판독 가능 매체는 베이스밴드 또는 반송파의 일부분으로전송되는 데이터 신호를 포함하고, 여기에 컴퓨터 판독 가능 프로그램 코드가 적재되어 있다. 이러한 데이터 전송신호는 여러 가지 형식을 이용할 수 있는 바, 전자기 신호, 광학 신호 또는 상기의 임의의 합리적인 조합을 포함하나 이에 제한되는 않는다. 컴퓨터 판독 가능한 신호 매체는 컴퓨터 판독 가능 저장 매체를 제외한 임의의 컴퓨터 판독 가능 매체일 수 있고, 해당 컴퓨터 판독 가능 매체는 명령 실행 시스템, 입력법 또는 장치에 이용되거나 또는 그에 결합하여 이용되는 프로그램을 송신, 전송 또는 전송할 수 있다. 컴퓨터 판독 가능 매체에 포함되는 프로그램 코드는 임의의 합당한 매체로 전송할 수 있는 바, 무선, 전선, 광케이블, 무선주파수(Radio Frequency,RF) 등, 또는 상기 임의의 합당한 조합을 포함하지만 이에 제한되지 않는다.
본 발명의 각 부분은 하드웨어, 소프트웨어, 펌웨어 또는 그들의 조합으로 실현할 수 있다. 상기 실시방식에서, 다수개 단계 또는 방법은 메모리 중에 저장되고 합리한 명령 실행 시스템에서 실행되는 소프트웨어 또는 펌웨어로 실현할 수 있다. 예를 들면, 하드웨어로 실현할 경우, 다른 일 실시방식과 마찬가지로, 해당분야에서 공지된 기술, 즉, 데이터 신호를 상대로 논리 기능을 실현하는데 이용되는 논리 게이트 회로가 구비된 이산 논리 회로, 합리적 조합 논리 게이트 회로가 구비된 전용 집적 회로, 프로그래밍 가능 게이트 어레이(PGA), 현장 프로그래머블 게이트 어레이(FPGA) 등 기술 중의 임의의 하나 또는 그들의 조합에 의해 실행할 수 있다.
해당분야 당업자라면 이해할 수 있는 바와 같이, 상기 실시예에 따른 방법에 포함되는 전부 또는 일부 단계는 프로그램을 통해 관련된 하드웨어에 명령하여 실현할 수 있고, 상기 프로그램은 컴퓨터 판독 가능 저장 매체에 저장되고, 해당 프로그램은, 실시예에 따른 방법에 의한 단계 또는 여러 단계의 조합을 통해 실현된다
또한, 본 발명의 각 실시예에서 각 기능 유닛은 하나의 처리 모듈에 집적될 수 있고, 각각 단독된 물리적 존재로 될 수도 있으며, 두개 또는 두개 이상의 유닛을 하나의 모듈에 집적할 수도 있다. 상기 집적 모듈은 하드웨어 형식으로 실현할 수도 있고, 소프트웨어의 기능 모듈형식으로 실현될 수도 있다. 상기 집적된 모듈이 소프트웨어의 기능 모듈 형식으로 실현되어 독립된 상품으로 판매되거나 또는 사용 시, 하나의 컴퓨터 판독 가능 매체에 저장될 수도 있다. 상기 저장 매체는 ROM, 디스크 또는 CD 등일 수 있다.
상기 서술은 단지 본 발명의 구체적 실시방식을 설명하기 위한 것으로, 본 발명의 보호범위는 이에 제한되지 않으며, 해당분야에 익숙한 임의의 당업자라면, 본 발명에서 공개된 기술 범위 내에서, 각종 변화 또는 교환을 쉽게 생각해 낼수 있기 마련이나, 이 모든 것들은 본 발명의 보호 범위내에 포함되어 있다. 그러므로, 본 발명의 보호범위는 상기 청구범위의 보호범위를 기준으로 한다.
Claims (24)
- 프리셋 결함 함수를 확정하는 단계;
상기 프리셋 결함 함수의 파라미터에 이상이 존재하는지 여부를 체크하는 단계;
이상이 존재하는 경우, 상기 프리셋 결함 함수를 호출하는 상위 함수에게 이상을 표시하는 메시지를 리턴하는 단계;
이상이 존재하지 않는 경우, 상기 프리셋 결함 함수를 실행하는 단계를 포함하는 것을 특징으로 하는, 해당 함수의 다수개 버전에 적용되는 함수 결함 복구 방법. - 제1항에 있어서,
이상이 존재하지 않는 경우, 상기 프리셋 결함 함수를 실행하는 단계 이후에,
상기 프리셋 결함 함수의 리턴 값 및/또는 파라미터에 이상이 존재하는지 여부를 체크하는 단계;
이상이 존재하는 경우, 상기 프리셋 결함 함수를 호출하는 상위 함수에게 이상을 표시하는 메시지를 리턴하는 단계를 더 포함하는 것을 특징으로 하는, 함수 결함 복구 방법. - 제1항 또는 제2항에 있어서,
상기 프리셋 결함 함수의 파라미터에 이상이 존재하는지 여부를 체크하는 단계는,
인라인 후크 방법을 기반으로, 상기 프리셋 결함 함수의 프리셋 라인 코드를 복구 함수의 호출로 점프하는 명령으로 보정하는 단계를 포함하되; 상기 복구 함수는 상기 프리셋 결함 함수의 파라미터, 및 리턴 값 및/또는 파라미터를 체크하는데 이용되는 것을 특징으로 하는, 함수 결함 복구 방법. - 제1항에 있어서,
프리셋 결함 함수를 확정하는 단계 이후에,
상기 프리셋 결함 함수의 유형이 자식 함수이고, 또한 상기 자식 함수가 그에 대응하는 부모 함수 중에서 여러번 호출되는 경우, 상기 부모 함수의 인덱스를 기반으로, 상기 자식 함수가 부모 함수 중에서의 위치를 확정하는 단계를 더 포함하는 것을 특징으로 하는, 함수 결함 복구 방법. - 제1항에 있어서,
상기 결함 함수에 대한 복구를 진행하기 전에,
복구 함수를 초기화하여, 상기 복구 함수를 저장하기 위한 저장공간을 획득하는 단계를 더 포함하는 것을 특징으로 하는, 함수 결함 복구 방법. - 제1항에 있어서,
복구 함수를 삭제할 경우, 상기 복구함수를 저장하기 위한 저장 공간을 해제하는 단계를 더 포함하는 것을 특징으로 하는, 함수 결함 복구 방법. - 프리셋 결함 함수를 확정하는 단계;
상기 프리셋 결함 함수를 실행하는 단계;
상기 프리셋 결함 함수의 리턴 값 및/또는 파라미터에 이상이 존재하는지 여부를 체크하는 단계;
이상이 존재하는 경우, 상기 프리셋 결함 함수를 호출하는 상위 함수에게 이상을 표시하는 메시지를 리턴하는 단계를 더 포함하는 것을 특징으로 하는, 해당 함수의 다수개 버전에 적용되는 함수 결함 복구 방법. - 제7항에 있어서,
프리셋 결함 함수의 리턴 값과 파라미터에 이상이 존재하는지 여부를 체크하는 단계 전에,
인라인 후크 방법을 기반으로, 상기 프리셋 결함 함수의 프리셋 코드를 복구 함수의 호출로 점프하는 명령으로 보정하는 단계를 더 포함하되; 여기서, 상기 복구 함수는 상기 프리셋 결함 함수의 파라미터 및/또는 리턴 값을 체크하는데 이용되는 것을 특징으로 하는, 함수 결함 복구 방법. - 제7항에 있어서,
상기 프리셋 결함 함수를 확정하는 단계 이후에,
상기 프리셋 결함 함수의 유형이 자식 함수이고, 또한 상기 자식 함수가 그에 대응하는 부모 함수 중에서 여러번 호출되는 경우, 상기 부모 함수의 인덱스를 기반으로, 상기 자식 함수가 부모 함수 중에서의 위치를 확정하는 단계를 더 포함하는 것을 특징으로 하는, 함수 결함 복구 방법. - 제7항에 있어서,
상기 결함 함수에 대한 복구를 진행하기 전에,
복구 함수를 초기화하여, 상기 복구 함수를 저장하기 위한 저장 공간을 획득하는 단계를 더 포함하는 것을 특징으로 하는, 함수 결함 복구 방법. - 제7항에 있어서,
상기 결함 함수에 대한 복구를 진행한 후에
상기 복구 함수를 삭제할 경우, 상기 복구 함수를 저장하기 위한 저장 공간을 해제하는 단계를 더 포함하는 것을 특징으로 하는, 함수 결함 복구 방법. - 프리셋 결함 함수를 확정하도록 구성된 제1위치 확정 모듈;
상기 프리셋 결함 함수의 파라미터에 이상이 존재하는지 여부를 체크하도록 구성된 제1체크 모듈;
상기 프리셋 결함 함수의 파라미터에 이상이 존재하는 경우, 상기 프리셋 파라미터를 호출하는 상위함수에게 이상을 표시하는 메시지를 리턴하도록 구성된 제1이상 리턴 모듈;
상기 프리셋 결함 함수의 파라미터에 이상이 존재하지 않는 경우, 상기 프리셋 결함 함수를 실행하도록 구성된 실행 모듈을 포함하는것을 특징으로 하는, 해당 함수의 다수개 버전에 적응하는 함수 결함 복구 장치. - 제12항에 있어서,
상기 프리셋 결함 함수를 실행한 후, 상기 프리셋 결함 함수의 리턴 값 및/또는 파라미터에 이상이 존재하는지 여부를 체크하도록 구성된 제2체크 모듈;
상기 프리셋 결함 함수의 리턴 값과 파라미터에 이상이 존재하는 경우, 상기 프리셋 결함 함수를 호출하는 상위 함수에게 이상을 표시하는 메시지를 리턴하도록 구성된 제2이상 리턴 모듈을 더 포함하는 것을 특징으로 하는, 함수 결함 복구 장치. - 제12항 또는 제13항에 있어서,
상기 제1체크 모듈은,
인라인 후크 방법을 기반으로, 상기 프리셋 결함 함수의 프리셋 라인 코드를 복구 함수의 호출로 점프하는 명령으로 보정하도록 구성된 점프 모듈을 포함하고; 상기 복구 함수는 상기 프리셋 결함 함수의 파라미터, 및 리턴 값 및/또는 파라미터를 체크하는데 이용되는 것을 특징으로 하는, 함수 결함 복구 장치. - 제12항에 있어서,
프리셋 결함 함수를 확정한 후, 상기 프리셋 결함 함수의 유형이 자식 함수이고, 상기 자식 함수가 그 대응하는 부모 함수에서 여러번 호출되는 경우, 상기 부모 함수의 인덱스를 기반으로 상기 자식 함수가 부모 함수 중에서의 위치를 확정하도록 구성된 제2위치 확정 모듈을 더 포함하는 것을 특징으로 하는, 함수 결함 복구 장치. - 제12항에 있어서,
상기 결함 함수에 대한 복구를 진행하기 전에, 상기 복구 함수를 초기화하여, 복구 함수를 저장하기 위한 저장 공간을 획득하도록 구성된 초기화 모듈을 더 포함하는 것을 특징으로 하는, 함수 결함 복구 장치. - 제12항에 있어서,
상기 결함 함수에 대한 복구를 진행한 후에, 상기 복구 함수를 삭제할 경우, 상기 복구 함수를 저장하기 위한 저장 공간을 해제하도록 구성된 해제 모듈을 더 포함하는것을 특징으로 하는, 함수 결함을 복구하는 장치. - 프리셋 결함 함수를 확정하도록 구성된 제1위치 확정 모듈;
상기 프리셋 결함 함수를 실행하도록 구성된 실행 모듈;
상기 프리셋 결함 함수의 리턴 값 및/또는 파라미터에 이상이 존재하는지 여부를 체크하도록 구성된 체크 모듈;
상기 프리셋 결함 함수의 리턴 값과 파라미터에 이상이 존재하는 경우, 상기 프리셋 결함 함수를 호출하는 상위 함수에게 이상을 표시하는 메시지를 리턴하도록 구성된 이상 리턴 모듈을 포함하는 것을 특징으로 하는, 해당 함수의 다수개 버전에 적합하는 함수 결함 복구 장치. - 제18항에 있어서,
상기 프리셋 결함 함수의 리턴 값과 파리미터에 이상이 존재하는지 여부를 체크하기 전에, 인라인 후크 방법을 기반으로, 상기 프리셋 결함 함수의 프리셋 라인 코드를 복구 함수의 호출로 점프하는 명령으로 보정하도록 구성된 점프 모듈을 포함하고; 여기서, 상기 복구 함수는 상기 프리셋 결함 함수의 파라미터 및/또는 리턴 값을 체크하는데 이용되는 것 을 특징으로 하는, 함수 결함복구장치. - 제18항에 있어서,
상기 프리셋 결함 함수의 유형이 자식 함수이고, 상기 자식 함수가 그 대응하는 부모 함수에서 여러번 호출되는 경우, 상기 부모 함수의 인덱스를 기반으로 상기 자식 함수가 부모 함수 중에서의 위치를 확정하도록 구성된 제2위치 확정 모듈을 더 포함하는 것을 특징으로 하는, 함수 결함 복구 장치. - 제18항에 있어서,
상기 결함 함수에 대한 복구를 진행하기 전에, 상기 복구 함수를 초기화하여, 상기 복구 함수와 복구 함수를 저장하기 위한 저장 공간을 획득하도록 구성된 초기화 모듈을 더 포함하는 것을 특징으로 하는, 함수 결함 복구 장치. - 제18항에 있어서,
상기 결함 함수에 대한 복구를 진행한 후, 상기 복구 함수를 삭제할 경우, 상기 복구 함수를 저장하기 위한 저장 공간을 해제하도록 구성된 해제 모듈을 더 포함하는 것을 특징으로 하는, 함수 결함 복구 장치. - 한개 또는 다수개 프로세서; 및
한개 또는 다수개 프로그램을 저장하도록 구성되는 저장 장치
를 포함하고,
상기 한개 또는 다수개 프로그램이 상기 한개 또는 다수개 프로세서에 의해 실행 시, 제1항, 제2항 및 제4항 내지 제11항 중 어느 한 항의 방법이 상기 한개 또는 다수개 프로세서에 의해 구현되는 것을 특징으로 하는, 서버. - 컴퓨터 프로그램이 저장된 컴퓨터 판독가능 저장 매체로서, 상기 컴퓨터 프로그램이 프로세서에 의해 실행될 때, 상기 컴퓨터 프로그램은 제1항, 제2항 및 제4항 내지 제11항 중 어느 한 항의 방법을 구현하는 컴퓨터 판독가능 저장 매체.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810210229.6A CN108415840A (zh) | 2018-03-14 | 2018-03-14 | 修复函数缺陷的方法、装置及服务器 |
CN201810210229.6 | 2018-03-14 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190108458A true KR20190108458A (ko) | 2019-09-24 |
KR102106449B1 KR102106449B1 (ko) | 2020-05-04 |
Family
ID=62816295
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180068261A KR102106449B1 (ko) | 2018-03-14 | 2018-06-14 | 함수 결함을 복구하는 방법, 장치 및 서버 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20190286544A1 (ko) |
EP (1) | EP3540598A1 (ko) |
JP (1) | JP6643407B2 (ko) |
KR (1) | KR102106449B1 (ko) |
CN (1) | CN108415840A (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110457151B (zh) * | 2019-07-10 | 2022-01-28 | 五八有限公司 | 热修复方法、装置及可读存储介质 |
CN110362330B (zh) * | 2019-07-18 | 2023-09-01 | 腾讯科技(深圳)有限公司 | 应用程序更新方法、装置、终端及存储介质 |
CN114969765B (zh) * | 2022-07-27 | 2022-11-01 | 杭州海康威视数字技术股份有限公司 | 一种物联网设备无感安全漏洞修复方法、装置及设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160070637A1 (en) * | 2014-09-04 | 2016-03-10 | Home Box Office, Inc. | Documents for human readable documentation and runtime validation |
CN105868639A (zh) * | 2016-03-30 | 2016-08-17 | 百度在线网络技术(北京)有限公司 | 内核漏洞修复方法和装置 |
US20170344361A1 (en) * | 2016-05-24 | 2017-11-30 | Baidu Online Network Technology (Beijing) Co., Ltd | Kernel repair method and apparatus |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3372387B2 (ja) * | 1995-03-15 | 2003-02-04 | 富士通株式会社 | プログラム検査方法 |
US6108797A (en) * | 1997-12-11 | 2000-08-22 | Winbond Electronics Corp. | Method and system for loading microprograms in partially defective memory |
KR100435783B1 (ko) * | 2000-07-31 | 2004-06-12 | 엘지전자 주식회사 | 운영 체계에서 사용자 메모리 유효성 검증 방법 |
JP2004295533A (ja) * | 2003-03-27 | 2004-10-21 | Nec Corp | アプリケーション障害回避システム、監視用コンピュータ、サーバコンピュータ及びプログラム |
US20050132031A1 (en) * | 2003-12-12 | 2005-06-16 | Reiner Sailer | Method and system for measuring status and state of remotely executing programs |
JP2006018765A (ja) * | 2004-07-05 | 2006-01-19 | Infocom Corp | ソフトウエアの一時的な修正方法およびプログラム |
JP2008052688A (ja) * | 2006-08-26 | 2008-03-06 | Takeshi Kamimukai | プログラムのパッチデータ生成装置 |
JP5382450B2 (ja) * | 2008-02-14 | 2014-01-08 | 日本電気株式会社 | アクセス制御装置、その方法及び情報記録媒体 |
US8935789B2 (en) * | 2008-07-21 | 2015-01-13 | Jayant Shukla | Fixing computer files infected by virus and other malware |
CN101539883B (zh) * | 2009-05-05 | 2011-11-16 | 北京和利时***工程有限公司 | 嵌入式***的错误追踪方法和装置 |
JP5703968B2 (ja) * | 2011-05-31 | 2015-04-22 | 富士電機株式会社 | プログラム開発支援装置およびそのプログラム |
US20140214812A1 (en) * | 2012-10-04 | 2014-07-31 | Goole Inc. | Source code priority ranking for faster searching |
US9727635B2 (en) * | 2013-02-06 | 2017-08-08 | Abb Research Ltd. | Combined code searching and automatic code navigation |
US9454676B2 (en) * | 2014-06-27 | 2016-09-27 | Intel Corporation | Technologies for preventing hook-skipping attacks using processor virtualization features |
US9904614B2 (en) * | 2015-04-03 | 2018-02-27 | NodeSource, Inc. | Source code inspection and verification |
CN104915209A (zh) * | 2015-06-15 | 2015-09-16 | 上海斐讯数据通信技术有限公司 | 一种linux内核跟踪调试与修复问题的方法 |
US10180836B1 (en) * | 2015-08-24 | 2019-01-15 | Amazon Technologies, Inc. | Generating source code review comments using code analysis tools |
US10025689B2 (en) * | 2016-01-22 | 2018-07-17 | International Business Machines Corporation | Enhanced policy editor with completion support and on demand validation |
US10140105B2 (en) * | 2016-03-10 | 2018-11-27 | Wowza Media Systems, LLC | Converting source code |
CN105893850B (zh) * | 2016-03-30 | 2017-12-15 | 百度在线网络技术(北京)有限公司 | 漏洞修复方法和装置 |
US10599551B2 (en) * | 2016-08-12 | 2020-03-24 | The University Of Chicago | Automatically detecting distributed concurrency errors in cloud systems |
US10423594B2 (en) * | 2016-11-28 | 2019-09-24 | Atlassian Pty Ltd | Systems and methods for indexing source code in a search engine |
US9842139B1 (en) * | 2016-12-28 | 2017-12-12 | Accenture Global Solutions Limited | Metadata-driven program code generation for clinical data analysis |
US11314870B1 (en) * | 2017-03-14 | 2022-04-26 | Melih Abdulhayoglu | Auto-containment of potentially vulnerable applications |
-
2018
- 2018-03-14 CN CN201810210229.6A patent/CN108415840A/zh active Pending
- 2018-06-14 KR KR1020180068261A patent/KR102106449B1/ko active IP Right Grant
- 2018-06-15 US US16/009,511 patent/US20190286544A1/en not_active Abandoned
- 2018-06-15 EP EP18178010.7A patent/EP3540598A1/en not_active Withdrawn
- 2018-06-18 JP JP2018115227A patent/JP6643407B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160070637A1 (en) * | 2014-09-04 | 2016-03-10 | Home Box Office, Inc. | Documents for human readable documentation and runtime validation |
CN105868639A (zh) * | 2016-03-30 | 2016-08-17 | 百度在线网络技术(北京)有限公司 | 内核漏洞修复方法和装置 |
US20170344361A1 (en) * | 2016-05-24 | 2017-11-30 | Baidu Online Network Technology (Beijing) Co., Ltd | Kernel repair method and apparatus |
Also Published As
Publication number | Publication date |
---|---|
KR102106449B1 (ko) | 2020-05-04 |
US20190286544A1 (en) | 2019-09-19 |
EP3540598A1 (en) | 2019-09-18 |
JP2019160270A (ja) | 2019-09-19 |
JP6643407B2 (ja) | 2020-02-12 |
CN108415840A (zh) | 2018-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8499289B2 (en) | Method, device and system for realizing kernel online patching | |
US7849356B2 (en) | Parity data management system apparatus and method | |
CA2724532C (en) | Enhanced upgrade path | |
US7861119B1 (en) | Updating a firmware image using a firmware debugger application | |
US20150261546A1 (en) | Baseboard management controller and method of loading firmware | |
US20110283274A1 (en) | Firmware image update and management | |
JP7012074B2 (ja) | 仮想ディスクの拡張方法及び機器 | |
KR102106449B1 (ko) | 함수 결함을 복구하는 방법, 장치 및 서버 | |
US11093321B1 (en) | System and method for automatically updating an information handling system upon system crash | |
CN104915226B (zh) | 一种网络设备软件启动方法、装置及网络设备 | |
EP3040854B1 (en) | Method, apparatus and storage medium for dynamically patching function | |
CN111666088A (zh) | Pod的更替方法、装置、电子设备及计算机可读存储介质 | |
CN110968339B (zh) | 前端构建工具的方法、装置以及电子设备 | |
CN111045710A (zh) | 一种基于IPMI命令的SAS-Expander固件升级的方法、设备及介质 | |
CN111506450A (zh) | 用于数据处理的方法、设备和计算机程序产品 | |
US11429537B2 (en) | Method, device, and computer program product for managing storage system | |
CN114398087A (zh) | 一种提高单片机更新程序后运行稳定性的方法及单片机 | |
CN114385412A (zh) | 存储管理方法、设备和计算机程序产品 | |
CN111459570B (zh) | Pdf插件加载方法、电子设备和计算机存储介质 | |
CN114780283B (zh) | 一种故障处理的方法及装置 | |
CN111813600B (zh) | 一种控制器的恢复方法、装置、终端和介质 | |
CN113760340B (zh) | 一种应用于Linux***的热补丁方法和装置 | |
US10691444B1 (en) | Launching updated firmware files stored in a dedicated firmware volume | |
CN117331575A (zh) | 固件修复方法、装置、控制器及存储介质 | |
CN117632165A (zh) | Bios程序烧写方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |