【文章标题】: 如何向WM程序注入代码[1]总纲
【文章作者】: 手冷
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
上一篇帖子太笼统了, 是笔者处于兴奋中, 没有控制好难度和长度. 根据版主的建议, 笔者决定把自己的研究成果以一个专题的形式写出来与大家分享!
所谓代码注入本身, 是一种技术. 目的是在一个已经存在的, 编译完成的目标程序中注入其他代码, 并扭转原目标程序的执行流程, 使得新添加的代码能够在适当的时候(比如目标程序运行之前)得到执行.
这种技术, 可以用于恶意代码的编写, 也可以用于加壳等软件保护方式. 技术本身是没有善恶之分的, 善恶只在人心一念之间.
代码注入可以用工具实现, 也可以用编程的方式实现. 本系列讨论在WM环境下, 如何以ARM汇编和WinCE API向一个程序注入代码.
笔者希望能通过这个系列, 引导大家一步一步实现自己的代码注入功能, 同时在这个过程中, 极大加深对ARM汇编和PE格式的理解.
基本要求:
本系列要求读者对ARM汇编有一定了解(至少得看得懂ARM语句), 最好是找一本ARM汇编入门书, 先看看并且试着自己将每条指令都写一写, 功能不见得复杂, 但需熟练. 推荐文全刚写的<<汇编语言程序设计: 基于ARM体系结构>>, 这本书对笔者初期帮助很大.
读者对PE格式要了解, <<加密与解密>>, <<软件加密技术内幕>>都有重点介绍. WM的程序延续了桌面平台的PE结构, 动手术的理论基础是一样的. 笔者视情况, 可能不会作详细的介绍.
要动手实践, 纸上得来终觉浅, 实践出真知.
推荐软件, 笔者只使用了以下软件, 不知道其他的会不会更好:
要研究PE格式, 自然是WinHex, PEditor, 要涉及到汇编, 反汇编, 不能不用VS2008的Debugger和IDA Pro.
另外, 最重要的, 吐血推荐的是: Xarm 1.0
Xarm 1.0不光是一个方便快捷的汇编编写工具, 其附带的大量示例和文档, 绝对是新手入门的捷径! 笔者从一窍不通一路走来, 就是一个学习和改造改写Xarm的过程.
写作目的:
希望这个专题能让读者更加清晰深入的理解ARM汇编, 和PE结构. 对汇编各个细节的特性手到擒来, 运用灵活自如, 同时对WM系统也得到更加深入的理解. 最终能自己动手向目标程序注入自己的代码.
当然, 这只是笔者的愿望, 希望写出来大家能够容易理解, 又尽可能避免错误.
下一篇文章预告: 尝试介绍ARM汇编中的一些大家容易忽略的关键
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!
2009年03月23日 15:24:43
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)