ThemidaSDK.h 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339
  1. /******************************************************************************
  2. /* Header: ThemidaSDK.h
  3. /* Description: SDK header definition for the C/C++ language
  4. /*
  5. /* Author/s: Rafael Ahucha
  6. /* (c) 2004 Oreans Technologies
  7. /*****************************************************************************/
  8. #ifndef __THEMIDASDK__
  9. #define __THEMIDASDK__
  10. /* Definition for Borland C/C++ */
  11. #ifdef __BORLANDC__
  12. #define CODEREPLACE_START __emit__ (0xEB, 0x10, 0x57, 0x4C, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, \
  13. 0x00, 0x00, 0x00, 0x00, 0x57, 0x4C, 0x20, 0x20);
  14. #define CODEREPLACE_END __emit__ (0xEB, 0x10, 0x57, 0x4C, 0x20, 0x20, 0x01, 0x00, 0x00, 0x00, \
  15. 0x00, 0x00, 0x00, 0x00, 0x57, 0x4C, 0x20, 0x20);
  16. #define ENCODE_START __emit__ (0xEB, 0x10, 0x57, 0x4C, 0x20, 0x20, 0x04, 0x00, 0x00, 0x00, \
  17. 0x00, 0x00, 0x00, 0x00, 0x57, 0x4C, 0x20, 0x20);
  18. #define ENCODE_END __emit__ (0xEB, 0x10, 0x57, 0x4C, 0x20, 0x20, 0x05, 0x00, 0x00, 0x00, \
  19. 0x00, 0x00, 0x00, 0x00, 0x57, 0x4C, 0x20, 0x20);
  20. #define CLEAR_START __emit__ (0xEB, 0x10, 0x57, 0x4C, 0x20, 0x20, 0x06, 0x00, 0x00, 0x00, \
  21. 0x00, 0x00, 0x00, 0x00, 0x57, 0x4C, 0x20, 0x20);
  22. #define CLEAR_END __emit__ (0xEB, 0x15, 0x57, 0x4C, 0x20, 0x20, 0x07, 0x00, 0x00, 0x00, \
  23. 0x00, 0x00, 0x00, 0x00, 0x57, 0x4C, 0x20, 0x20, 0x00, 0x00, \
  24. 0x00, 0x00, 0x00);
  25. #define __WL_MACROS__
  26. #endif
  27. #endif
  28. /* Definition for Intel cpp compiler */
  29. #ifndef __WL_MACROS__
  30. #ifdef __ICL
  31. #define CODEREPLACE_START \
  32. __asm __emit 0xEB \
  33. __asm __emit 0x10 \
  34. __asm __emit 0x57 \
  35. __asm __emit 0x4C \
  36. __asm __emit 0x20 \
  37. __asm __emit 0x20 \
  38. __asm __emit 0x00 \
  39. __asm __emit 0x00 \
  40. __asm __emit 0x00 \
  41. __asm __emit 0x00 \
  42. __asm __emit 0x00 \
  43. __asm __emit 0x00 \
  44. __asm __emit 0x00 \
  45. __asm __emit 0x00 \
  46. __asm __emit 0x57 \
  47. __asm __emit 0x4C \
  48. __asm __emit 0x20 \
  49. __asm __emit 0x20 \
  50. #define CODEREPLACE_END \
  51. __asm __emit 0xEB \
  52. __asm __emit 0x10 \
  53. __asm __emit 0x57 \
  54. __asm __emit 0x4C \
  55. __asm __emit 0x20 \
  56. __asm __emit 0x20 \
  57. __asm __emit 0x01 \
  58. __asm __emit 0x00 \
  59. __asm __emit 0x00 \
  60. __asm __emit 0x00 \
  61. __asm __emit 0x00 \
  62. __asm __emit 0x00 \
  63. __asm __emit 0x00 \
  64. __asm __emit 0x00 \
  65. __asm __emit 0x57 \
  66. __asm __emit 0x4C \
  67. __asm __emit 0x20 \
  68. __asm __emit 0x20 \
  69. #define ENCODE_START \
  70. __asm __emit 0xEB \
  71. __asm __emit 0x10 \
  72. __asm __emit 0x57 \
  73. __asm __emit 0x4C \
  74. __asm __emit 0x20 \
  75. __asm __emit 0x20 \
  76. __asm __emit 0x04 \
  77. __asm __emit 0x00 \
  78. __asm __emit 0x00 \
  79. __asm __emit 0x00 \
  80. __asm __emit 0x00 \
  81. __asm __emit 0x00 \
  82. __asm __emit 0x00 \
  83. __asm __emit 0x00 \
  84. __asm __emit 0x57 \
  85. __asm __emit 0x4C \
  86. __asm __emit 0x20 \
  87. __asm __emit 0x20 \
  88. #define ENCODE_END \
  89. __asm __emit 0xEB \
  90. __asm __emit 0x10 \
  91. __asm __emit 0x57 \
  92. __asm __emit 0x4C \
  93. __asm __emit 0x20 \
  94. __asm __emit 0x20 \
  95. __asm __emit 0x05 \
  96. __asm __emit 0x00 \
  97. __asm __emit 0x00 \
  98. __asm __emit 0x00 \
  99. __asm __emit 0x00 \
  100. __asm __emit 0x00 \
  101. __asm __emit 0x00 \
  102. __asm __emit 0x00 \
  103. __asm __emit 0x57 \
  104. __asm __emit 0x4C \
  105. __asm __emit 0x20 \
  106. __asm __emit 0x20 \
  107. #define CLEAR_START \
  108. __asm __emit 0xEB \
  109. __asm __emit 0x10 \
  110. __asm __emit 0x57 \
  111. __asm __emit 0x4C \
  112. __asm __emit 0x20 \
  113. __asm __emit 0x20 \
  114. __asm __emit 0x06 \
  115. __asm __emit 0x00 \
  116. __asm __emit 0x00 \
  117. __asm __emit 0x00 \
  118. __asm __emit 0x00 \
  119. __asm __emit 0x00 \
  120. __asm __emit 0x00 \
  121. __asm __emit 0x00 \
  122. __asm __emit 0x57 \
  123. __asm __emit 0x4C \
  124. __asm __emit 0x20 \
  125. __asm __emit 0x20 \
  126. #define CLEAR_END \
  127. __asm __emit 0xEB \
  128. __asm __emit 0x15 \
  129. __asm __emit 0x57 \
  130. __asm __emit 0x4C \
  131. __asm __emit 0x20 \
  132. __asm __emit 0x20 \
  133. __asm __emit 0x07 \
  134. __asm __emit 0x00 \
  135. __asm __emit 0x00 \
  136. __asm __emit 0x00 \
  137. __asm __emit 0x00 \
  138. __asm __emit 0x00 \
  139. __asm __emit 0x00 \
  140. __asm __emit 0x00 \
  141. __asm __emit 0x57 \
  142. __asm __emit 0x4C \
  143. __asm __emit 0x20 \
  144. __asm __emit 0x20 \
  145. __asm __emit 0x00 \
  146. __asm __emit 0x00 \
  147. __asm __emit 0x00 \
  148. __asm __emit 0x00 \
  149. __asm __emit 0x00
  150. #define __WL_MACROS__
  151. #endif
  152. #endif
  153. /* Definition for LCC by Jacob Navia */
  154. #ifndef __WL_MACROS__
  155. #ifdef __LCC__
  156. #define CODEREPLACE_START __asm__ (" .byte\t0xEB, 0x10, 0x57, 0x4C, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, \
  157. 0x00, 0x00, 0x00, 0x00, 0x57, 0x4C, 0x20, 0x20");
  158. #define CODEREPLACE_END __asm__ (" .byte\t0xEB, 0x10, 0x57, 0x4C, 0x20, 0x20, 0x01, 0x00, 0x00, 0x00, \
  159. 0x00, 0x00, 0x00, 0x00, 0x57, 0x4C, 0x20, 0x20");
  160. #define ENCODE_START __asm__(" .byte\t0xEB, 0x10, 0x57, 0x4C, 0x20, 0x20, 0x04, 0x00, 0x00, 0x00, \
  161. 0x00, 0x00, 0x00, 0x00, 0x57, 0x4C, 0x20, 0x20");
  162. #define ENCODE_END __asm__(" .byte\t0xEB, 0x10, 0x57, 0x4C, 0x20, 0x20, 0x05, 0x00, 0x00, 0x00, \
  163. 0x00, 0x00, 0x00, 0x00, 0x57, 0x4C, 0x20, 0x20");
  164. #define CLEAR_START __asm__(" .byte\t0xEB, 0x10, 0x57, 0x4C, 0x20, 0x20, 0x06, 0x00, 0x00, 0x00, \
  165. 0x00, 0x00, 0x00, 0x00, 0x57, 0x4C, 0x20, 0x20");
  166. #define CLEAR_END __asm__(" .byte\t0xEB, 0x15, 0x57, 0x4C, 0x20, 0x20, 0x07, 0x00, 0x00, 0x00, \
  167. 0x00, 0x00, 0x00, 0x00, 0x57, 0x4C, 0x20, 0x20, 0x00, 0x00, \
  168. 0x00, 0x00, 0x00");
  169. #define __WL_MACROS__
  170. #endif
  171. #endif
  172. /* Definition for Visual C++ and others */
  173. #ifndef __WL_MACROS__
  174. #define CODEREPLACE_START \
  175. __asm _emit 0xEB \
  176. __asm _emit 0x10 \
  177. __asm _emit 0x57 \
  178. __asm _emit 0x4C \
  179. __asm _emit 0x20 \
  180. __asm _emit 0x20 \
  181. __asm _emit 0x00 \
  182. __asm _emit 0x00 \
  183. __asm _emit 0x00 \
  184. __asm _emit 0x00 \
  185. __asm _emit 0x00 \
  186. __asm _emit 0x00 \
  187. __asm _emit 0x00 \
  188. __asm _emit 0x00 \
  189. __asm _emit 0x57 \
  190. __asm _emit 0x4C \
  191. __asm _emit 0x20 \
  192. __asm _emit 0x20 \
  193. #define CODEREPLACE_END \
  194. __asm _emit 0xEB \
  195. __asm _emit 0x10 \
  196. __asm _emit 0x57 \
  197. __asm _emit 0x4C \
  198. __asm _emit 0x20 \
  199. __asm _emit 0x20 \
  200. __asm _emit 0x01 \
  201. __asm _emit 0x00 \
  202. __asm _emit 0x00 \
  203. __asm _emit 0x00 \
  204. __asm _emit 0x00 \
  205. __asm _emit 0x00 \
  206. __asm _emit 0x00 \
  207. __asm _emit 0x00 \
  208. __asm _emit 0x57 \
  209. __asm _emit 0x4C \
  210. __asm _emit 0x20 \
  211. __asm _emit 0x20 \
  212. #define ENCODE_START \
  213. __asm _emit 0xEB \
  214. __asm _emit 0x10 \
  215. __asm _emit 0x57 \
  216. __asm _emit 0x4C \
  217. __asm _emit 0x20 \
  218. __asm _emit 0x20 \
  219. __asm _emit 0x04 \
  220. __asm _emit 0x00 \
  221. __asm _emit 0x00 \
  222. __asm _emit 0x00 \
  223. __asm _emit 0x00 \
  224. __asm _emit 0x00 \
  225. __asm _emit 0x00 \
  226. __asm _emit 0x00 \
  227. __asm _emit 0x57 \
  228. __asm _emit 0x4C \
  229. __asm _emit 0x20 \
  230. __asm _emit 0x20 \
  231. #define ENCODE_END \
  232. __asm _emit 0xEB \
  233. __asm _emit 0x10 \
  234. __asm _emit 0x57 \
  235. __asm _emit 0x4C \
  236. __asm _emit 0x20 \
  237. __asm _emit 0x20 \
  238. __asm _emit 0x05 \
  239. __asm _emit 0x00 \
  240. __asm _emit 0x00 \
  241. __asm _emit 0x00 \
  242. __asm _emit 0x00 \
  243. __asm _emit 0x00 \
  244. __asm _emit 0x00 \
  245. __asm _emit 0x00 \
  246. __asm _emit 0x57 \
  247. __asm _emit 0x4C \
  248. __asm _emit 0x20 \
  249. __asm _emit 0x20 \
  250. #define CLEAR_START \
  251. __asm _emit 0xEB \
  252. __asm _emit 0x10 \
  253. __asm _emit 0x57 \
  254. __asm _emit 0x4C \
  255. __asm _emit 0x20 \
  256. __asm _emit 0x20 \
  257. __asm _emit 0x06 \
  258. __asm _emit 0x00 \
  259. __asm _emit 0x00 \
  260. __asm _emit 0x00 \
  261. __asm _emit 0x00 \
  262. __asm _emit 0x00 \
  263. __asm _emit 0x00 \
  264. __asm _emit 0x00 \
  265. __asm _emit 0x57 \
  266. __asm _emit 0x4C \
  267. __asm _emit 0x20 \
  268. __asm _emit 0x20 \
  269. #define CLEAR_END \
  270. __asm _emit 0xEB \
  271. __asm _emit 0x15 \
  272. __asm _emit 0x57 \
  273. __asm _emit 0x4C \
  274. __asm _emit 0x20 \
  275. __asm _emit 0x20 \
  276. __asm _emit 0x07 \
  277. __asm _emit 0x00 \
  278. __asm _emit 0x00 \
  279. __asm _emit 0x00 \
  280. __asm _emit 0x00 \
  281. __asm _emit 0x00 \
  282. __asm _emit 0x00 \
  283. __asm _emit 0x00 \
  284. __asm _emit 0x57 \
  285. __asm _emit 0x4C \
  286. __asm _emit 0x20 \
  287. __asm _emit 0x20 \
  288. __asm _emit 0x00 \
  289. __asm _emit 0x00 \
  290. __asm _emit 0x00 \
  291. __asm _emit 0x00 \
  292. __asm _emit 0x00
  293. #endif