9
votes

Java Antivirus ... Est-ce possible? Comment?

est-il possible d'écrire un programme antivirus en Java, comme celui-ci, il peut intercepter un programme d'être exécuté? Puis-je avoir un contrôle aussi profond du système d'exploitation en Java?

mise à jour: Qu'en est-il de C #? mêmes restrictions s'appliquent ou c'est une meilleure façon?


2 commentaires

S'il vous plaît ne faites pas. Techniquement, cela est possible même avec PHP.


Ce serait probablement la même chose avec C #. Peut-être un peu plus facile, mais vous devrez toujours écrire plus de code de niveau bas que C #.


7 Réponses :


12
votes

Avoir une telle influence sur le système d'exploitation est possible. Il n'y a que le problème que vous perdrez la plate-forme de l'indépendance ou au moins d'écrire le code pour chaque plate-forme donnée en raison de la raison pour laquelle de telles actions nécessitent un accès assez profond du système qui pourrait être poursuivi avec JNI , qui lierait la méthode que vous utilisez dans le système d'exploitation.


2 commentaires

Ouais. JNI serait nécessaire pour cela et à ce stade, vous n'écrivez plus à Pure Java.


Il pourrait être piraté avec JNI, vous permettant d'écrire C ++ que des mascarades comme java ...



1
votes

Comme Hallodu dit, il est techniquement possible avec l'utilisation de JNI. Toutefois, la plupart des programmes antivirus utilisent une sorte de pilote pour intercepter des fichiers ouverts et les numériser avant de permettre au système d'exploitation de continuer à utiliser le fichier. Cela étant le cas, la quantité de code natif que vous deviez écrire (en C ou éventuellement C ++) serait substantielle et risque de dépasser votre code Java.

Lorsque vous écrivez des applications de niveau Low-ISH, je m'en tiens à C. Cependant, il pourrait être logique de coder les choses comme l'interface graphique dans une langue de niveau supérieur, bien que Java ne soit pas mon choix là-bas, car c'est gentil D'une douleur à l'interface avec C. Personnellement, je ferais toute la maudle chose en C juste parce que le mélange de langues tend à être une douleur. Si je avait pour mélanger des langues, mes choix seraient par C et Python, tout simplement parce que CTTYPES rend interfaçant avec C vraiment facile.


4 commentaires

Je ne pense pas que cela soit pertinent, l'OP sonne comme si l'objectif est d'écrire toute la solution en Java.


Peut-être que ma mention de python n'est peut-être pas totalement pertinente, mais je l'utilise en grande partie comme une comparaison de JNI, que vous devriez admettre, est une sorte de douleur à travailler.


JNA (Java Native Access) fonctionne bien lorsque vous devez interfacer le code C avec Java.


Joli! Je ne savais même pas que cela existait. Cela fait longtemps que je devais interfacer C et Java Code.



5
votes

Je ne pense pas que ce type de contrôle est possible avec Java, principalement parce qu'il utilise un VM et est blindé du système d'exploitation. Ou plutôt le système d'exploitation est blindé du Java VM. Ceci est par conception.

édité pour ajouter pour plus de clarté: je suppose que vous souhaitez écrire toute la solution en Java et ne pas mélanger les langues.


0 commentaires

0
votes

Il est possible avec le JNI . Vous utiliseriez surtout Java pour une interface graphique et C / C ++ pour tout autre type d'antivirus.


0 commentaires

2
votes

Je ne suis pas convaincu que cela fonctionnerait même avec JNI.

Dans le cas de "Intercepting" lorsque le système d'exploitation démarre un nouveau processus (ou écrit à un fichier ou autre), vous devez écrire une sorte de pilote ou de module de noyau qui se comporte dans le système d'exploitation. Ce pilote / module est très certainement écrit dans le code compilé natif. Le système d'exploitation est donc celui en charge ici et appellera éventuellement votre module natif.

Alors, comme je le vois, Java n'est même pas impliqué ici.

C'est l'approche de base de toute façon. Il peut être possible d'utiliser quelque chose comme pam sous Linux, qui est configurable pour faire presque n'importe quoi liée à la sécurité et aux autorisations de fichiers / de processus et peut appeler d'autres processus pour faire ses enchères. Semblait bien loin d'exécuter une instance JVM pour chaque nouveau processus que le système d'exploitation essaie de démarrer.


0 commentaires

0
votes

Quel est le point de faire votre propre antivirus? C'est beaucoup de travail, mais je suppose que ce serait cool si vous en avez fait un portable qui bloque et supprime tous les plus méchants. Si vous devez persister, clamav , c'est une source ouverte et une très bonne protection en temps réel) mais programmée en C ++.


2 commentaires

Je pense à un nouveau type d'antivirus, donc je devrai avoir le même accès des traditionnels


Aussi loin que je sache, c'est la seule source ouverte, ou du moins au moins, le seul qui est toujours maintenu activement. Mais si vous le pouvez sous supporter le code source, je suis sûr que faire un scanner en temps réel ne serait pas trop chaleureux?



0
votes

Votre meilleur pari peut être d'écrire l'interface graphique et une grande partie de la logique en Java, puis d'avoir une back-end c ou c ++ qui fait la scanie.

Vous pouvez ensuite réutiliser l'avant à travers les plates-formes et conserver les éléments spécifiques à la plate-forme dans les niveaux inférieurs.

De cette façon, vous pouvez utiliser les forces des deux langues - l'indépendance de la plate-forme Java et la facilité d'utilisation et la capacité de C / C ++ à accéder directement à la plate-forme sous-jacente.


0 commentaires