Antivir meckert bei selbst erstellten ungefährlichen Hook

Hallo erst ein mal.
Ich schreibe seit circa einem halben Monat in c.
Davor habe ich über 5 Jahre in Java programmiert.

Nun habe ich angefangen mich mit winhooks zu befassen.
Snippets extrahiert aus :(http://www.tutorials.de/forum/c-c-tutorials/164662-tutorial-ueber-windows-hooks.html)

Ich habe das ganze nun so weit das alle Fehler weg sind, da meckert Antivir "TR/Dropper.Gen".
Meckert AntiVir bei jeder Benutzung von hooks ?
Kann ich mir ja eigentlich nicht vorstellen.
Falls ich irgendwo einen fehler gemacht habe, der AntiVir denken lässt das dies ein Trojaner sei, bitte ich euch mir diesen mitzuteilen.

Nebenbei das ganze funktiniert auch noch nicht wirklich.


Hier noch mal mein Code:
Code:
/*
 ============================================================================
 Name        : Pipette.c
 Author      : SleepProgger
 Version     :
 Copyright   : Your copyright notice
 Description : HookTest
 ============================================================================
 */

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

typedef BOOL (CALLBACK *MYFUNC)(void);

MYFUNC InstallHook;
MYFUNC UninstallHook;

void init(){
	InstallHook = NULL;
	UninstallHook = NULL;
}

LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam){
	printf("%s", "Callback");
	return 0;
}

int main(void) {
	init();
	HINSTANCE hDll = LoadLibrary("HookTest.dll");
	if(hDll != NULL){
		printf("%s\n", "lib loading failure");
		return -1;
	}

	InstallHook = (MYFUNC)GetProcAddress(hDll, "InstallHook");
	if(InstallHook != NULL){
		printf("%s\n", "install func loading failure");
		return -1;
	}
	UninstallHook = (MYFUNC)GetProcAddress(hDll, "UninstallHook");
	if(UninstallHook != NULL){
		printf("%s\n", "uninstall func loading failure");
		return -1;
	}

	FreeLibrary(hDll);

	return EXIT_SUCCESS;
}

die dl.hl:

Code:
#ifndef _DLL_H_
#define _DLL_H_
#endif

#include <windows.h>

#if BUILDING_DLL
# define DLLIMPORT _declspec (dllexport)
#else /*Not building dll*/
# define DLLIMPORT _declspec (dllimport)
#endif /*Not building dll*/

#define SHARED __attribute__((section(".shr"), shared))

DLLIMPORT BOOL InstallHook();
DLLIMPORT BOOL UninstallHook();

LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam);

und die dllmain.c

Code:
/*
 * dllmain.c
 *
 *  Created on: 18.10.2009
 *      Author: SleepProgger
 */
#include "dll.h"

HHOOK g_hMouseHook SHARED = NULL;
HINSTANCE g_hInst SHARED = NULL;

BOOL APIENTRY DLLMain(HINSTANCE hInts, DWORD reason, LPVOID reserved){
	g_hInst = hInts;
	return TRUE;
}

DLLIMPORT BOOL installHook(){
	if(g_hMouseHook != NULL){
		return TRUE;
	}
	g_hMouseHook = SetWindowsHookEx(WH_MOUSE, MouseProc, g_hInst, 0);
	if(g_hMouseHook == NULL){
		return FALSE;
	}
	//TODO changed
	return TRUE;
}

DLLIMPORT BOOL uninstallHook(){
	if(g_hMouseHook != NULL){
		UnhookWindowsHookEx(g_hMouseHook);
		g_hMouseHook = NULL;
	}
	return TRUE;
}

LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam){
	if(nCode < 0){
		return CallNextHookEx(g_hMouseHook, nCode, wParam, lParam);
	}

	if(nCode == HC_ACTION){
		if( (wParam == WM_LBUTTONDOWN) || (wParam == WM_NCLBUTTONDOWN) ){
			MOUSEHOOKSTRUCT *mhs = (MOUSEHOOKSTRUCT*)lParam;
			HWND caller = FindWindow("Pipette", NULL);
			if(caller != NULL){
				PostMessage(caller, WM_USER+123, 0, MAKELPARAM(mhs->pt.x, mhs->pt.y));
			}
		}
	}
	return CallNextHookEx(g_hMouseHook, nCode, wParam, lParam);
}


M.f.g.
SleepProgger
 
Ich denke nicht, dass du einen Fehler gemacht hast; dein Programm passt wohl nur unglücklicherweise in die Heuristiken von AntiVir. Wenn ein Trojaner auch mit ähnlicher Struktur munter rumhookt kann man nichts machen außer für dein Programm eine Ausnahmeregel zu definieren.
Nicht ganz zum Topic: Ich würde den Einsatz von Programmiertechniken, die auch in Viren vorkommen nicht als Fehler bezeichnen. Du richtest ja nicht absichtlich Schaden an, bzw wenn doch wäre es auch kein Fehler, da der Schaden ebenfalls gewollt ist. Wenn dann läge der Fehler bei Avira, da sie nicht in der Lage sind Tojaner von harmlosen Code zu unterscheiden </meinung>
 
Ich würde den Einsatz von Programmiertechniken, die auch in Viren vorkommen nicht als Fehler bezeichnen. Du richtest ja nicht absichtlich Schaden an, bzw wenn doch wäre es auch kein Fehler, da der Schaden ebenfalls gewollt ist. Wenn dann läge der Fehler bei Avira, da sie nicht in der Lage sind Tojaner von harmlosen Code zu unterscheiden </meinung>

Naja, das Problem ist wohl daß Antivir nicht unterscheiden kann ob das was da passiert zum Wohle des Users ist und nicht zu seinem Schaden. Ein bekannter Keylogger ist wohl genauso schädlich wie ein selbstgeschriebender Keylogger den man einem Freund unterjubelt. Wenn du dafür eine Lösung findest wirst du verdammt reich und berühmt werden.

Ich bin zwar in dem Bereich kein Spezialist, aber ich denke du wirst mit dem Fehlalarm leben müssen.
 
Zurück
Oben