步骤 9: 注入++: (密码=31337157)
我们在这一步做的基本上和步骤 7(代码注入) 一样,但现在会有一点地方非常困难.现在你必须使用一段代码编辑减少血量的代码并设置血量到1000(如果当前值大于等于30并小于2000)这可以做成用 api 调用一些子程序来获取当前时间的自动汇编脚本,它可以较早的使用 C脚本注入这里找到血量的地址并转到 CE 脚本引擎 (内存查看器 ctrl+alt+a , 工具->脚本引擎)此时会有一个很大的提示反对到其它教程(万一你不会C语言)
----------------
#include
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
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
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的教程都是基础。希望大家以后能更好的掌握更多的知识。再见。(这次不做广告啦。(*^__^*) 嘻嘻……)