热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CE教程第八章《注入++》

步骤9:注入++:(密码31337157)我们在这一步做的基本上和步骤7(代码注入)一样,但现在会有一点地方非常困难.现在你必须使用一段代码编辑减少血量的代码并设置血量到1000(如

步骤 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的教程都是基础。希望大家以后能更好的掌握更多的知识。再见。(这次不做广告啦。(*^__^*) 嘻嘻……)


推荐阅读
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • Commit1ced2a7433ea8937a1b260ea65d708f32ca7c95eintroduceda+Clonetraitboundtom ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 如何用JNI技术调用Java接口以及提高Java性能的详解
    本文介绍了如何使用JNI技术调用Java接口,并详细解析了如何通过JNI技术提高Java的性能。同时还讨论了JNI调用Java的private方法、Java开发中使用JNI技术的情况以及使用Java的JNI技术调用C++时的运行效率问题。文章还介绍了JNIEnv类型的使用方法,包括创建Java对象、调用Java对象的方法、获取Java对象的属性等操作。 ... [详细]
  • 本文介绍了一种轻巧方便的工具——集算器,通过使用集算器可以将文本日志变成结构化数据,然后可以使用SQL式查询。集算器利用集算语言的优点,将日志内容结构化为数据表结构,SPL支持直接对结构化的文件进行SQL查询,不再需要安装配置第三方数据库软件。本文还详细介绍了具体的实施过程。 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • 本文分析了Wince程序内存和存储内存的分布及作用。Wince内存包括系统内存、对象存储和程序内存,其中系统内存占用了一部分SDRAM,而剩下的30M为程序内存和存储内存。对象存储是嵌入式wince操作系统中的一个新概念,常用于消费电子设备中。此外,文章还介绍了主电源和后备电池在操作系统中的作用。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • Java编程实现邻接矩阵表示稠密图的方法及实现类介绍
    本文介绍了Java编程如何实现邻接矩阵表示稠密图的方法,通过一个名为AMWGraph.java的类来构造邻接矩阵表示的图,并提供了插入结点、插入边、获取邻接结点等功能。通过使用二维数组来表示结点之间的关系,并通过元素的值来表示权值的大小,实现了稠密图的表示和操作。对于对稠密图的表示和操作感兴趣的读者可以参考本文。 ... [详细]
author-avatar
du-qhy
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有