Dynamic binary translator is a just-in-time compiler, which translates the instructions of source architecture to the instructions of target architecture when an application is running. The technology enables the application compiled for source architecture running on top of target architecture without recompilation. This paper begins with the basic framework of dynamic binary translator, and then gives an overview of several leading dynamic binary translators. After that, it has a deep discussion about key challenges of the dynamic binary translator, including supporting precise exception in optimized code, mapping source architectural context to target architectural context, translating self modifying code, reducing translation overhead, and dynamic optimization using profiling data. The paper ends with the hot research topics and possible usage models of the dynamic binary translation technology.