《过时技术研究计划》

inline hook
ssdt hook
dkom

Tags: none

ARM的GCC下内联汇编的基本使用手册

简要

突然不知道怎么的想踩这个坑。然后rootkit隐藏文件就咕咕咕了。不过还好,这个坑踩完了,接下来就能滚回去填坑了。

汇编不难,蛋疼的是各种稀奇古怪又十分蛋疼的调用约定和很麻烦的调试

x64下,基本寄存器和win32没啥区别,可以更具我之前的一篇汇编基础文章来看。

文章地址:汇编学习笔记

arm下是强制使用fastcall,也就是说前四个参数是强制使用寄存器传参的,所以在调用之前一定要记得push。

同时AT&T的语法是从左到右,而intel的语法是从又到左。

同时,GCC内联汇编的语法和win也不怎么一样,调用怎么说呢,说简单也不简单,说麻烦也不麻烦

详情可以参考基本文档:GCC内联汇编

以及几种常用的寻址方式

(1) 直接寻址

movl ADDRESS, %eax

ADDRESS其实就相当于"地址或偏移"里的地址,反正就是一个数字。

(2)寄存器寻址

其实上面的例子也包括了寄存器寻址,顾名思义%eax就是寄存器寻址,代表对这个寄存器本身的写入或读出。

(3)立即寻址

movl $2, %ebx

我一直觉得立即寻址算不算寻址,反正它的意思就是把2这个数字写入%eax寄存器,$2就是立即寻址,其实就是立即数。

(4)间接寻址

movl (%eax), %ebx

(%eax)就是间接寻址了,意思就是访问eax寄存器里的数值所代表的地址。相当于通用公式里的%基址或偏移量寄存器。

(5)索引寻址(变址寻址)

movl 0xFFFF0000(,%eax,4), %ebx

0xFFFF0000(,%eax,4)就是索引寻址,意思是从0xFFFF0000地址开始,加上%eax * 4作为索引的最终地址。请自行匹配上面的通用公式。

(6)基址寻址

movl 4(%eax), %ebx

4(%eax)就是基址寻址,意思是以eax寄存器里的数值作为基址,加上4得到最终地址。也可以匹配到上面的通用公式,而且这个是很常用的寻址方式

接下来就是代码实现

阅读全文...

Tags: 汇编, arm, linux

反弹式shell后门

<font color="red" size="10">未完成版</font>
别问我为啥要用红色加粗字体(我只是想试试在博客上的效果hhhh
闲着无聊弄得这个,并没有什么技术含量
其中远程匿名管道是直接调用cmd.exe的,个人推荐不这么做。
最低限度的话也得把cmd复制到其他路径,否则直接请求cmd进程是个很敏感的动作。

TIM截图20180803223453.jpg

目前已完成

  • 自动释放到%WINDIR%目录下
  • 安装服务自启
  • 提升进程权限
  • 双向匿名管道反弹shell

目前未完成

  • 入口点Main改成WinMain,隐藏第一次运行的命令行窗口
  • 修改反弹连接方式,改为触发形连接,目前这套是过不了启发引擎和主动防御的
  • 添加UAC,自动申请UAC权限/bypassUAC
  • 使用之前的一篇文章进行绕过云查杀

代码在这:my.rar

Tags: none