Skip to main content
deleted 1 character in body
Source Link
NirIzr
  • 11.9k
  • 1
  • 39
  • 87

What is the difference between JIT compilerbinary instrumentation and software breakpoints?

Don't be confused by a title of a question. Here is an explanation.

Let's take Intel Pin. They claim that

The best way to think about Pin is as a "just in time" (JIT) compiler. The input to this compiler is not bytecode, however, but a regular executable. Pin intercepts the execution of the first instruction of the executable and generates ("compiles") new code for the straight line code sequence starting at this instruction. It then transfers control to the generated sequence.

However, software breakpoint (according to Reversing: Secrets of Reverse Engineering by Eldad Eilam) is:

Software breakpoints are instructions added into the program’s code by the debugger at runtime. These instructions make the processor pause program execution and transfer control to the debugger when they are reached during execution.

Basically both Intel PIN and e.g. OllyDBG does roughly similar things: altering the execution flow by inserting custom instruction. I know, that with PIN you can do much more, that then just pause under a certain condition, but it is not the point.

So, my question is what is the key difference between JIT compilation (as in Intel PIN) and Software breakpoints (as in OllyDBG or any other debugger)?

What is the difference between JIT compiler and software breakpoints?

Don't be confused by a title of a question. Here is an explanation.

Let's take Intel Pin. They claim that

The best way to think about Pin is as a "just in time" (JIT) compiler. The input to this compiler is not bytecode, however, but a regular executable. Pin intercepts the execution of the first instruction of the executable and generates ("compiles") new code for the straight line code sequence starting at this instruction. It then transfers control to the generated sequence.

However, software breakpoint (according to Reversing: Secrets of Reverse Engineering by Eldad Eilam) is:

Software breakpoints are instructions added into the program’s code by the debugger at runtime. These instructions make the processor pause program execution and transfer control to the debugger when they are reached during execution.

Basically both Intel PIN and e.g. OllyDBG does roughly similar things: altering the execution flow by inserting custom instruction. I know, that with PIN you can do much more, that just pause under a certain condition, but it is not the point.

So, my question is what is the key difference between JIT compilation (as in Intel PIN) and Software breakpoints (as in OllyDBG or any other debugger)?

What is the difference between binary instrumentation and software breakpoints?

Don't be confused by a title of a question. Here is an explanation.

Let's take Intel Pin. They claim that

The best way to think about Pin is as a "just in time" (JIT) compiler. The input to this compiler is not bytecode, however, but a regular executable. Pin intercepts the execution of the first instruction of the executable and generates ("compiles") new code for the straight line code sequence starting at this instruction. It then transfers control to the generated sequence.

However, software breakpoint (according to Reversing: Secrets of Reverse Engineering by Eldad Eilam) is:

Software breakpoints are instructions added into the program’s code by the debugger at runtime. These instructions make the processor pause program execution and transfer control to the debugger when they are reached during execution.

Basically both Intel PIN and e.g. OllyDBG does roughly similar things: altering the execution flow by inserting custom instruction. I know, that with PIN you can do much more then just pause under a certain condition, but it is not the point.

So, my question is what is the key difference between JIT compilation (as in Intel PIN) and Software breakpoints (as in OllyDBG or any other debugger)?

Source Link
aGGeRReS
  • 124
  • 3
  • 11

What is the difference between JIT compiler and software breakpoints?

Don't be confused by a title of a question. Here is an explanation.

Let's take Intel Pin. They claim that

The best way to think about Pin is as a "just in time" (JIT) compiler. The input to this compiler is not bytecode, however, but a regular executable. Pin intercepts the execution of the first instruction of the executable and generates ("compiles") new code for the straight line code sequence starting at this instruction. It then transfers control to the generated sequence.

However, software breakpoint (according to Reversing: Secrets of Reverse Engineering by Eldad Eilam) is:

Software breakpoints are instructions added into the program’s code by the debugger at runtime. These instructions make the processor pause program execution and transfer control to the debugger when they are reached during execution.

Basically both Intel PIN and e.g. OllyDBG does roughly similar things: altering the execution flow by inserting custom instruction. I know, that with PIN you can do much more, that just pause under a certain condition, but it is not the point.

So, my question is what is the key difference between JIT compilation (as in Intel PIN) and Software breakpoints (as in OllyDBG or any other debugger)?