CE教程 第八章 《注入++》
步驟 9: 注入++: (密碼=31337157)
我們在這一步做的基本上和步驟 7(代碼注入) 一樣,但現在會有一點地方非常困難.現在你必須使用一段代碼編輯減少血量的代碼并設置血量到1000(如果當前值大于等于30并小于2000)這可以做成用 api 調用一些子程序來獲取當前時間的自動匯編腳本,它可以較早的使用 C腳本注入這里找到血量的地址并轉到 CE 腳本引擎 (內存查看器 ctrl+alt+a , 工具->腳本引擎)此時會有一個很大的提示反對到其它教程(萬一你不會C語言)
----------------
#include <time.h>
struct tm *timep;
time_t c;
c=time(0);
timep=localtime(&c);
if (timep->tm_sec>=30)
? *(int *)addresstochange=1000;
else
? *(int *)addresstochange=2000;
-------------
此處使用血量的地址改編 addresstochange.不要忘記在前面加 0x.如果地址是0012345,則輸入0x0012345
選擇注入->注入到當前進程并使用里面的一個 CALL 打開一個自動匯編腳本.現在正好和步驟7那樣轉到減少血量的地址并選擇 自動匯編->模板->代碼注入. 并輸入你獲取的代碼調用指令. 需要注意的是此次調用將更改 EAX 的值,因此你要在壓棧之前和出棧之后保存它們, 并且移除原始代碼。它未被使用或只會增加困難。
?
點擊執行后點擊 TUT 的 "打我" 按鈕 .如果按鈕的點擊都正確會促成腳本運行并符合當前時間改變血值。
額外信息:
正如前面所說,它可以使用一個標準的匯編腳本來完成。為了以后容易辨認 CE 允許你輸入調用指令的功能名稱。你也可以只用一個腳本對應使用一個DLL注入。例如:
injectdll(mydll.dll) //dll 寫入你需要的術語
codecave:
call functionofmydll
jmp exit
?
?
?--------------------------------------------------------------------------------------------------------------------------
?
額,大家好.不好意思哈昨天回老家了第八章今天才寫.額,最近東北挺多雨的,我這里隨時都有可能發大水停電.不過我不會懶惰.我會繼續寫東西給大家看.
好啦開始我們今天的章節吧.今天來講CE教程工具的最后一章《注入++》額,總的來說操作起來不算太難啦。只不過涉及到了C語言可能會有朋友不懂,不過沒關系。作者已經給了我們一個代碼原型,我們照著修改一下就OK了。好教程開始吧。
?
1.教程工具給了我們一個數值,我們要把它用代碼注入的方式使腳本運行并符合當前時間改變血值。第一步跟前幾章一樣找到數值的內存地址。
2.在地址上右鍵單擊選擇“查找寫入該地址的代碼”。
3.這將附加CE調試器到當前進程上。繼續?? 選擇“YES”。
4.回到教程工具點“打我”。選擇出現的地址,單擊“顯示反匯編程序”。
5.選擇最上面的地址下面出現“目標減一”。說明地址是正確的。
6.點擊“工具”,選擇“腳本引擎”。
7.在彈出的腳本引擎窗口填寫代碼:
-----------------------------代碼簡單的解釋----------------------------
#include <time.h>
struct tm *timep;
time_t c;
c=time(0);
int addresstochange=0x01B8298C;? //原代碼是沒有這句的這句的意思就是int定義整形變量addresstochange=地址.就是把右邊的地址付給左邊的變量addresstochange(注:大家也可以直接替換代碼內addresstochange為自己的地址.)(提醒:定義一個整形變量后要在結尾處寫下分號;符號這個學過C語言的都知道吧.嘿嘿^ ^)
timep=localtime(&c);
if (timep->tm_sec>=30) //額簡單解釋下吧.if是如果的意思.這句代碼就是如果timep->tm_sec>=30執行以下代碼.
? *(int *)addresstochange=1000;? //將1000這個數值附給addresstochange
else?????????? //否則timep->tm_sec>=30這個表達式不成立則執行這行下面的代碼.
? *(int *)addresstochange=2000;? //將1000這個數值附給addresstochange
-------代碼如下(注意紅色部分改成自己的數值地址)------
#include <time.h>
struct tm *timep;
time_t c;
c=time(0);
int addresstochange=0x01B8298C;
timep=localtime(&c);
if (timep->tm_sec>=30)
? *(int *)addresstochange=1000;
else
? *(int *)addresstochange=2000;
-----------------------------------------------------------------------------
8.好,我們選擇“注入”。選擇“注入到當前進程”。
9.自動彈出窗口“自動匯編”。注意倆個窗口是不同的。在彈出的“自動匯編”窗口點擊“模板”,選擇“代碼注入”。
10.注意自動填寫的代碼要和匯編里的一樣否則需要手動填寫。填好后點“OK”。
11.自動為我們填好了代碼。我們來簡單分析一下。
----------------------------代碼------------------------
//?????????????????§????????????????????????ì????????????????????ì?????????????????????????¨?????????????????????§???????????????????§?????????????????????§??????????????????????ì????????????????????ì??????|??????????????¨?????????????????????????§??????????????????????????§???????2?????DD?????????????????¨?????????????????????§???????????????????§???????
call 03E400F6? //這句是調用我們寫的代碼.CALL的意思是門CALL的意思就是調用某個類進入某扇門. - - 貌似越說越糊涂.
//3?????????????§??????|1|???DDo?????????????§??????? eax==0
//'call underc_geterror' ????????????¨??????????????????§????????????????§?????????????????????¨??????????????????¨???????????|????????????ì????????????????????ì????????????????¨?????|?o????????????¨???????2????????????¨??????2????????????¨??????|????????????¨??????2??????????????¨??????a?????????????¨???????|????????????ì????????o3????
alloc(newmem,2048) //2kb should be enough
label(returnhere)
label(originalcode)
label(exit)
004566CA:
jmp newmem //這個在代碼注入的章節跟大家說過了jmp在匯編代碼里是轉跳的意思.這句的意思是代碼走到這里轉跳到newmem這個地方執行.
nop?? //nop無用代碼
returnhere:
newmem: //this is allocated memory, you have read,write,execute access
//place your code here//在這里寫下我們的代碼.
originalcode:
dec [ebx+00000310] //原代碼 dec 使目標減一.修改時刪除這個.
exit:
jmp returnhere
---------------------------修改后(亂碼和//注視的地方都可以扔掉)--------------------------
注意那個CALL要剪切掉移動到newmem下面.!!!!注意注意.然后刪掉原來的代碼dec
---------------------------------------------------------------------------------------------------------
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)
004566CA:
jmp newmem
nop
returnhere:
newmem:
call 03E400F6
originalcode:
exit:
jmp returnhere
---------------------------------------------------------------------------------------------------------
?
12.最后單擊“執行”,代碼可以注入“YES”。
13.我的已經提示注入成功,回到教程工具點“打我”。“下一步”變為可點擊。
14.最后來個特寫。吼吼。
好啦。CE的教程到此結束啦。感謝大家一直以來的支持。其實CE的教程都是基礎。希望大家以后能更好的掌握更多的知識。再見。(這次不做廣告啦。(*^__^*) 嘻嘻……)
總結
以上是生活随笔為你收集整理的CE教程 第八章 《注入++》的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js获取单选按钮的值
- 下一篇: 千万IOPS背后,宏杉科技“MS7000