欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
自寫(xiě)腳本脫Themida
大家好!我是風(fēng)動(dòng)鳴
教程分析原理 難免會(huì )有紕漏 請大家多多指教 多多包涵


今天給大家帶來(lái)的教程是 自寫(xiě)腳本脫Themida_v2.3.5.10

脫殼環(huán)境是:學(xué)破解論壇VM XP虛擬機
http://www.xuepojie.com/thread-9253-1-1.html


做教程之前學(xué)習了sure 以下這篇教程 非常感謝sure分享

http://www.xuepojie.com/thread-13373-1-1.html
本教程的課件跟他的一致

腳本是代替人工操作,節省時(shí)間,提高效率。
我們是怎么操作的,腳本就怎么操作。
代碼邏輯加入了各種判斷,以限制腳本按照我們的操作流程走,解放我們的雙手。

腳本展示:






每個(gè)腳本寫(xiě)了實(shí)現原理,和適當的代碼注釋。
只要你懂原理,知道操作流程,你也一樣能寫(xiě)出自己的腳本!


詳細的代碼賞析 回復可見(jiàn)

本帖隱藏的內容

  1. //              OEP找法                  //
  2. // 下斷點(diǎn)bp ZwFreeVirtualMemory          //
  3. // F9 N次 直到edi反復的出現一個(gè)值。      //
  4. // 斷在ZwFreeVirtualMemory,刪除斷點(diǎn)。   //
  5. // 在代碼段(.code)下內存訪(fǎng)問(wèn)斷點(diǎn)       //
  6. // F9運行-到達OEP 記錄下eip              //
  7. ///////////////////////////////////////////
  8. //          www.xuepojie.com             //
  9. //                                       //
  10. //             by 風(fēng)動(dòng)鳴                 //
  11. //                                       //
  12. //          2015年11月17日               //
  13. //                                       //
  14. //---------------定義變量----------------//
  15. var temp
  16. //用來(lái)保存edi的值
  17. var CODE
  18. //代碼段首地址
  19. var SIZE
  20. //代碼段大小
  21. var OEP
  22. //OEP地址

  23. //-----------清除所有斷點(diǎn)--------------- //
  24. bc
  25. //清除所有斷點(diǎn)
  26. bpmc
  27. //清除內存斷點(diǎn)
  28. bphwcall
  29. //清除硬斷點(diǎn)

  30. //-------------初始化斷點(diǎn)-------------//
  31. bp 7C92D38E
  32. // xp下  bp ZwFreeVirtualMemory     

  33. jmp going
  34. // 跳到going 執行
  35. going:
  36. //初始化次數
  37. esto                     
  38. //Shift+F9 忽略所有異常運行 代替F9
  39. cmp edi,0
  40. //相等
  41. je going
  42. //否則
  43. mov temp,edi
  44. //保存edi的值
  45. esto
  46. //再運一次
  47. cmp temp,edi
  48. //如果變化了 就跳
  49. jnz  going
  50. //否則  edi到了關(guān)鍵地址
  51. msg "edi反復不變 到了關(guān)鍵地址了"
  52. bc
  53. //清除所有斷點(diǎn)

  54. //---------根據實(shí)際情況 替換 代碼段首地址和大小-------------//
  55. mov CODE,00401000
  56. //代碼段首地址
  57. mov SIZE,F7000   
  58. //代碼段大小
  59. bprm CODE,SIZE         
  60. //代碼段下內存寫(xiě)入斷點(diǎn)
  61. esto
  62. mov OEP,eip
  63. bpmc
  64. //清除內存斷點(diǎn)
  65. msg OEP
  66. ret
復制代碼
  1. //          AB特征找法                   //
  2. //    重載 代碼段下內存寫(xiě)入斷點(diǎn)          //
  3. //    F9 F7 F8                           //
  4. //    F9 直到AB出現 記錄下EIP地址        //
  5. //                                       //
  6. //        API賦值代碼地址找法            //
  7. //        我已經(jīng)定位好特特征碼了         //
  8. //         12D200FB4140FF31              //
  9. ///////////////////////////////////////////
  10. //          www.xuepojie.com             //
  11. //                                       //
  12. //             by 風(fēng)動(dòng)鳴                 //
  13. //                                       //
  14. //          2015年11月17日               //
  15. //                                       //
  16. ///////////////////////////////////////////

  17. //---------------定義變量----------------//
  18. var CODE
  19. //代碼段首地址
  20. var SIZE
  21. //代碼段大小
  22. var ONLYONEAB
  23. //AB特征地址
  24. VAR API
  25. //賦值真實(shí)API的代碼地址

  26. //-----------清除所有斷點(diǎn)-------------//
  27. bc
  28. //清除所有斷點(diǎn)
  29. bpmc
  30. //清除內存斷點(diǎn)
  31. bphwcall
  32. //清除硬斷點(diǎn)

  33. //---------根據實(shí)際情況 替換 代碼段首地址和大小-------------//
  34. mov CODE,00401000
  35. //代碼段首地址
  36. mov SIZE,F7000   
  37. //代碼段大小

  38. //-------------初始化斷點(diǎn)-------------//
  39. bpwm CODE,SIZE         
  40. //代碼段下內存寫(xiě)入斷點(diǎn)

  41. esto                     
  42. //Shift+F9 忽略所有異常運行 代替F9
  43. sti                       
  44. //F7 單步步入
  45. sto                       
  46. //F8 單步步過(guò)

  47. findAB:
  48. cmp [eip],#AB#,1
  49. //當前將要執行的代碼地址 的開(kāi)頭一個(gè)字節 是否為 AB
  50. je goOk
  51. esto  
  52. jmp findAB
  53. //跳到findAB開(kāi)頭繼續向入執行

  54. goOk:
  55. mov ONLYONEAB,eip
  56. bpmc
  57. //清除內存斷點(diǎn)
  58. msg ONLYONEAB

  59. find eip,#12D200FB4140FF31#  //搜索上面那段代碼
  60. mov  API,$RESULT //將搜索的eip地址給aa,也就是圖上的771f9處
  61. sub API,12
  62. bp API
  63. //賦值的代碼地址 處 下斷
  64. esto
  65. bc
  66. //清除所有斷點(diǎn)
  67. msg API
  68. ret
復制代碼
  1. // 原理:                                //
  2. // 殼把真實(shí)的API函數代碼寫(xiě)入到自己申請的 //
  3. // 地址 再在代碼段里自己來(lái)調用           //
  4. // 所以我們要做的就是:                  //
  5. // 在殼在代碼段里寫(xiě)入調用自己函數調用后  //
  6. // 替換回真實(shí)的調用地址                  //
  7. // 替換后的兩種情況:                    //
  8. // call dword ptr ds:[IAT表函數地址]     //
  9. // jmp dword ptr ds:[IAT表函數地址]      //
  10. //                                       //
  11. //          www.xuepojie.com             //
  12. //                                       //
  13. //             by 風(fēng)動(dòng)鳴                 //
  14. //                                       //
  15. //          2015年11月17日               //
  16. //                                       //
  17. //---------------定義變量----------------//
  18. var REALAPI
  19. //真實(shí)的API函數地址
  20. var IATAPI
  21. //IAT表函數地址
  22. var REPLACE
  23. //替換代碼的地址
  24. var RECALL
  25. //替換成 call dword ptr ds:[地址] 的特征碼
  26. var REJMP
  27. //修改成 jmp dword ptr ds:[地址] 的特征碼
  28. var API
  29. //賦值API的代碼地址
  30. var CODE
  31. //代碼段首地址
  32. var SIZE
  33. //代碼段大小
  34. var ONLYONEAB
  35. //AB特征地址
  36. var OEP
  37. //OEP地址

  38. //-----------清除所有斷點(diǎn)-------------//
  39. bc
  40. //清除所有斷點(diǎn)
  41. bpmc
  42. //清除內存斷點(diǎn)
  43. bphwcall
  44. //清除硬斷點(diǎn)

  45. //------------替換實(shí)際的地址-------------//
  46. mov API,00709E7C
  47. //賦值API的代碼地址
  48. mov CODE,00401000
  49. //代碼段首地址
  50. mov SIZE,F7000   
  51. //代碼段大小
  52. mov ONLYONEAB,00709C55
  53. //獨一無(wú)二AB特征地址
  54. mov OEP,00466C98
  55. //OEP地址

  56. //-------替換的特征碼-------------//
  57. mov RECALL,15FF
  58. mov REJMP,25FF

  59. //-------------初始化斷點(diǎn)-------------//
  60. bphws API,"x"        
  61. //賦值api真實(shí)地址下硬件斷點(diǎn)
  62. bphws OEP,"x"        
  63. //程序入口OEP下硬件斷點(diǎn)
  64. bpwm CODE,SIZE         
  65. //代碼段下內存寫(xiě)入斷點(diǎn)

  66. //-------------開(kāi)始修復----------------//
  67. esto                     
  68. //Shift+F9 忽略所有異常運行
  69. //異常界面設置好  可以用 run F9 運行 代替】
  70. sti                       
  71. //F7 單步步入
  72. sto                       
  73. //F8 單步步過(guò)
  74. esto                  

  75. strat:
  76. mov [IATAPI],REALAPI
  77. //把 真實(shí)的API地址 寫(xiě)入 IAT表函數地址
  78. jmp strat2

  79. strat2:
  80. mov REALAPI,eax
  81. //記錄下一個(gè) 真實(shí)的API地址
  82. esto
  83. cmp eip,API
  84. //當前要執行的代碼地址 與 將要賦值API的代碼地址 做比較
  85. je strat2
  86. //相等就跳
  87. mov IATAPI,edx
  88. //IAT表函數地址
  89. esto
  90. mov [IATAPI],REALAPI
  91. //在 IAT表函數地址 里 填充 真實(shí)的API地址
  92. cmp eip,API
  93. je strat
  94. cmp [eip],AA,1
  95. je foriat
  96. cmp eip,OEP
  97. je end
  98. jmp foriat

  99. //循環(huán)修復IAT
  100. foriat:
  101. cmp [eip],#880B#,2
  102. je foriat2
  103. cmp eip,OEP
  104. je end
  105. cmp al,e9
  106. je foriate9
  107. cmp al,e8
  108. je foriate8
  109. mov REPLACE,edi
  110. //下一個(gè) 替換代碼的地址 = edi
  111. esto
  112. cmp al,e8
  113. //修復FF15標簽
  114. je foriate8x
  115. //修復FF25標簽
  116. jmp foriate9x

  117. foriat2:
  118. mov REPLACE,ebx
  119. cmp al,e8
  120. je iat1
  121. cmp al,e9
  122. je iat2
  123. cmp cl,e8
  124. je iat1
  125. jmp iat2

  126. //修復FF15
  127. iat1:
  128. esto
  129. //運行之后 填充了 E8
  130. esto
  131. //運行之后  填充了 call的地址
  132. //綜合效果是 殼生成了自己的函數代碼后 在代碼段來(lái)調用

  133. //下面就到我們來(lái)修復了
  134. mov [REPLACE],RECALL
  135. //往 替換代碼的地址(目標地址) 替換兩字節 為 FF15
  136. add REPLACE,2
  137. //向后移兩位
  138. mov [REPLACE],IATAPI
  139. //替換為 IAT函數表的地址
  140. //修改完后的效果為:call dword ptr ds:[0x487600]
  141. cmp eip,API
  142. je strat
  143. cmp eip,OEP
  144. je end
  145. jmp foriat

  146. //同修復FF25
  147. iat2:
  148. esto
  149. esto
  150. mov [REPLACE],REJMP
  151. add REPLACE,2
  152. mov [REPLACE],IATAPI
  153. cmp eip,API
  154. je strat
  155. cmp eip,OEP
  156. je end
  157. jmp foriat

  158. foriate8:
  159. mov REPLACE,edi
  160. esto
  161. esto
  162. mov [REPLACE],RECALL
  163. //替換成 FF 15
  164. //等價(jià)于call dword ptr ds:[IAT表函數地址]
  165. add REPLACE,2
  166. //替換代碼的地址加2(就是向后移兩位)
  167. mov [REPLACE],IATAPI
  168. //替換為IAT表函數的地址
  169. cmp eip,API
  170. je strat
  171. jmp foriat

  172. //循環(huán)修復FF15標簽 修改完后的效果為:call dword ptr ds:[0x487600]
  173. foriate8x:
  174. esto
  175. //運行之后 殼已經(jīng)把 E8 寫(xiě)入代碼段指定地址 如:【E8 90909090】
  176. esto
  177. //運行之后 殼已經(jīng)把 真實(shí)的API地址 填充到代碼段指定地址
  178. //如:【E8 BB087076】 就是 call 76B2A4EE = call winmm.midiStreamOut

  179. //下面就到我們來(lái)修復了
  180. mov [REPLACE],RECALL
  181. //往 替換代碼的地址(目標地址) 替換兩字節 為 FF15
  182. add REPLACE,2
  183. //向后移兩位
  184. mov [REPLACE],IATAPI
  185. //替換為 IAT函數表的地址
  186. //修改完后的效果為:call dword ptr ds:[0x487600]
  187. cmp eip,API
  188. je strat
  189. jmp foriat

  190. foriate9:
  191. mov REPLACE,edi
  192. esto
  193. jmp doiate9

  194. doiate9:
  195. esto
  196. cmp eip,ONLYONEAB
  197. jnz doiate9
  198. esto
  199. mov [REPLACE],REJMP
  200. add REPLACE,2
  201. mov [REPLACE],IATAPI
  202. jmp strat

  203. //循環(huán)修復FF25標簽
  204. foriate9x:
  205. esto
  206. //運行之后 殼已經(jīng)把 E9 寫(xiě)入代碼段指定地址 如:【E9 90909090】
  207. esto
  208. //運行之后 殼已經(jīng)把 真實(shí)的API地址 填充到代碼段指定地址
  209. //如:【E9 A7915F71】 就是 jmp 71A23FED

  210. //下面就到我們來(lái)修復了
  211. mov [REPLACE],REJMP
  212. //往 替換代碼的地址(目標地址) 替換兩字節 為 FF25
  213. add REPLACE,2
  214. //向后移兩位
  215. mov [REPLACE],IATAPI
  216. //替換為 IAT函數表的地址
  217. //修改完后的效果為:jmp dword ptr ds:[0x487660]
  218. cmp eip,API
  219. je strat
  220. cmp [eip],AA,1
  221. je foriat
  222. cmp eip,OEP
  223. je end
  224. jmp strat

  225. end:
  226. bc
  227. bpmc
  228. bphwcall
  229. MSG "到達OEP IAT修復完畢"
  230. ret
復制代碼


具體脫殼流程:









































總結:學(xué)脫殼,先學(xué)寫(xiě)腳本——這是我的見(jiàn)解
許多大牛都分享了各種脫殼腳本,腳本是脫殼全過(guò)程的體現,濃縮了作者的脫殼思路,對殼的實(shí)現原理的理解。
所以要重視腳本,別把大牛分享的腳本只當成脫殼工具。
腳本適用范圍小,而讀懂腳本原理 你就能脫它不能脫的殼,你才是腳本的創(chuàng )作者!

腳本代碼我是一步一步跟的,通過(guò)耐心跟蹤 觀(guān)察各種數據,總結經(jīng)驗。

希望對大家有所啟發(fā)。


不怎么會(huì )表達 請大家見(jiàn)諒。

課件工具和腳本分享:

本帖隱藏的內容

鏈接:http://pan.baidu.com/s/1hqlTiAC 密碼:tm9j
自寫(xiě)腳本脫Themida_v2.3.5.10.rar(7.93 MB, 下載次數: 53)
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
OD學(xué)習
ODbgScript 入門(mén)系列(二) ODbgScript的命令
逆向基礎——軟件手動(dòng)脫殼技術(shù)入門(mén)
惡意樣本分析手冊——常用方法篇
詳解OD腳本的寫(xiě)法續之進(jìn)階篇
chrome調試工具高級不完整使用指南(實(shí)戰二)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久