对于安全类,我应该为程序编写自修改代码,该程序在磁盘上找到自己的可执行文件,读取二进制数据,并对其中的一部分进行加密,然后再将其写回磁盘。据推测,这就像是一种多态病毒,会自动变为检测已知特征的傻瓜防病毒扫描程序。
我几乎已经准备好所有片段:
/proc/self/exe
查找可执行文件。我的问题是,我能够打开可执行文件的唯一方法是在只读模式"rb"
中。如果我尝试打开文件以在"wb"
或"r+b"
模式下进行写入,则会返回错误"Text file busy"
。无论如何,我有没有用C编写进程自己的可执行文件?我可以通过某种方式更改权限来做到这一点吗?
编辑:我要完成的工作是拥有一个可执行文件,该可执行文件每次运行时都会对其自身的一部分进行加密,以便每次运行后都将具有新的校验和。
从可执行二进制文件中读取数据后,如何写回或删除它,并用具有相同文件名的新文件替换?
您无法写入当前映射为可执行文件的文件。但是,您可以写入具有same path
为了也进行自我修改,我在nasm中编写了一个小代码(可以用作存根),将其自我打开,并在代码的中间(在mmap之后),我们有一个指针指向我们可以修改的可执行文件的字节。