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