Hi, I am a newbie, so I am unfamiliar with programming.

So, what I want to do is to only unpack malwares in specified directory and
store unpacked malwares

Currently, based on advice and manual, I wrote a simple code like this

--------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <clamav.h>

int main(int argc, char **argv)
{
  static struct cl_engine *engine = NULL;
  char tempDir[100];
  unsigned int sigs = 0;
  const char *virname = NULL;
  char file[256];

  //initialize
  cl_init(CL_INIT_DEFAULT);

  //create Engine
  if(!(engine = cl_engine_new())) {
printf("!Can't initialize antivirus engine\n");
  return -1;
  }

    //copy temp directory
  strcpy(tempDir, argv[1]);

  //set the temporary dir
  cl_engine_set_str(engine, CL_ENGINE_TMPDIR, tempDir);
  cl_engine_set_num(engine, CL_ENGINE_KEEPTMP, 1);

  //load default db
    cl_load(cl_retdbdir(), engine, &sigs, CL_DB_STDOPT);

    //compile engine
    cl_engine_compile(engine);

    //unpack
    if(cl_scanfile(file, &virname, NULL, engine, CL_SCAN_PE) == CL_VIRUS)
    {

printf("virus detected\n");

  }
  else
    {

printf("no virus \n");
    }

    //free
    cl_engine_free(engine);

    return 1;
}
--------------------------------------------------------

But, its result  shows "no virus" and of course no stored results for
unpacking(no file)
Could give me some advice for me?
_______________________________________________
Help us build a comprehensive ClamAV guide:
https://github.com/vrtadmin/clamav-faq
http://www.clamav.net/support/ml

Reply via email to