37 votes

Quel est le hack le plus cool que vous ayez vu ou fait?

En tant que programmeurs, nous avons mis en place tous les un vraiment cool de programme ou reconstitué certains matériels d'une manière intéressante pour résoudre un problème. Aujourd'hui, je pensais au sujet de ces hacks et comment certains d'entre eux sont obsolètes par les nouvelles technologies (par exemple, vous n'avez plus besoin de pirater votre Tivo pour ajouter un port réseau). Dans le monde du logiciel, nous prenons les choses comme le glisser-déposer sur une page web pour acquise, mais pas trop il y a longtemps que c'était une assez excitant hack ainsi.

Une des plus belles matériel hacks que j'ai vu a été fait par un ancien collègue de travail, une société de télécommunications ans. Il avait un petit portable à la télévision dans son bureau et il la suivrait tout au long de la journée tout en travaillant. Pour sortir avec elle, il versa un commutateur de marche/arrêt qui a été activé par l'intermédiaire de ses pattes sous son bureau.

Ce qui est le plus cool de matériel ou de logiciel de hack que vous avez personnellement vu ou fait? Ce hack vous travaillez sur le droit maintenant?

54voto

Tom Ritter Points 44352

49voto

Tim Farley Points 5809

Je me souviens de ce hack comme étant écrit par Bob Smith, qui a fait les vieux DOS de l'ère gestionnaire de mémoire appelé 386MAX (ou "386 au Max"). Il ne faisait pas partie du produit, c'est un petit programme utilitaire il fouettée et posté quelque part. Cependant, sur le web, la seule référence à cette technique, je trouve, c'est un DDJ sans-papiers Coin de la colonne à partir de novembre 1996 par Robert Collins.

Le Problème

Avant Intel introduction de l' instruction CPUID, il a été difficile de vérifier le type exact et le niveau de révision de la CPU sur votre système. Il s'avère que dans la plupart des versions de l'386 et plus tard, il y avait vraiment une ID du CPU, mais c'est seulement visible à un moment: juste après le processeur a été remis à zéro dans le registre EDX. (Il a été supposé que le BIOS de l'ordinateur serait le seul logiciel légitimement intéressés par cette).

Problème: comment un programme normal de récupérer cette valeur de registre si nous ne sommes pas le BIOS?

Matériel De Fond

Ce hack invoqué six distinctes particularités de l'IBM PC compatible ordinateurs. Ils ont été comme suit:

  1. En commençant par IBM et plus tard, il y a un moyen de désactiver indépendamment de l'A20 ligne de l'adresse sur le bus.
  2. La plupart des ordinateurs n'ont pas de mémoire RAM installée sur très haut des adresses mémoire, juste en dessous de la ROM du BIOS.
  3. La plupart des IBM PC ordinateurs de bus de retour 0xFF lorsque vous lisez un emplacement de la mémoire qui n'a pas de mémoire qui y est installé.
  4. 0xFF 0xFF 0xFF etc illégale est une opcode sur les Processeurs Intel.
  5. Si vous installez un gestionnaire d'exception dans la mémoire, il doit survivre à un soft reboot sur la plupart des Processeurs de cette époque (386 à travers 486).
  6. Lors de la réinitialisation logicielle ou matérielle, les processeurs Intel saut à une adresse qui est au sommet de mémoire adressable, moins de 16 octets, qui est pourquoi la ROM du BIOS est placé là.

Le programme des connaissances combinées de tous ces morceaux de trivia pour atteindre l'objectif.

Le Hack

Le résultat a été une ligne de commande DOS programme, qui a réalisé les opérations suivantes:

  • Installé illégale d'un opcode gestionnaire d'exception
  • Éteint l'A20 ligne de l'adresse sur le bus
  • Soft-redémarré le CPU (je crois que c'est par le biais d'un appel BIOS)

Lorsque le soft reboot s'est produite, le processeur va essayer de sauter vers le haut de la mémoire, moins de 16 octets, qui est l'endroit où la ROM code de démarrage est situé. Cependant, depuis l'A20 a été éteint, il serait en fait le saut vers le haut de la mémoire, moins de 16 octets de moins d'un mégaoctet. Sur la plupart des Ordinateurs, il n'y a pas de mémoire là. Alors qu'il allait chercher une série d'octets 0xFF de cette inexistante de RAM, et d'essayer de l'exécuter. Cela permettrait de créer un illégales opcode exception.

Son gestionnaire d'exception serait alors arracher la valeur de EDX (le CPUID) et à ranger quelque part qu'il pouvait trouver. Il serait alors nettoyer le gâchis (tour de l'A20 sur le dos, flip arrière du mode protégé en mode réel pour le DOS) et de contrôle de retour pour le code original.

Quand il travaillait, c'était génial à voir. Voilà, c'était une simple ligne de commande DOS programme qui vous donnent la CPUID valeur.

Bien sûr, il y avait inévitablement des Ordinateurs qui n'ont pas été "tout à fait compatible", qui se planter horriblement lors de l'exécution de cette. Ah bien.

41voto

Zachary Yates Points 4952

Eh bien, ce n'est pas le plus cool, mais c'est vraiment drôle (pour les programmeurs).

Nous avons construit une ad-hoc query builder pour un résumé de la base de données du projet. Il y avait quelques ajaxy parties et l'idée de base est que si vous avez changé quelque chose sur la page, la recherche automatique re-couru à lui-même. (Il a été provoqué par l'événement onBlur de tous les widgets)

Nous n'avions donc pas vraiment l'utilité d'une "Recherche" ou "Exécuter la Requête" bouton. Cette confusion, les utilisateurs à n'en plus finir. Nous avons donc ajouté un bouton de recherche qui n'a rien fait. Il s'est assis juste là.

Cela a fonctionné parce que chaque fois que vous avez cliqué sur le bouton de recherche, l'événement onBlur du champ que vous avez été dans le feu.

Cela fait de notre base d'utilisateurs très heureux. Les choses simples.

32voto

Ferruccio Points 51508

Ce n'était pas un hack que j'ai fait, mais plutôt quelqu'un, j'ai travaillé il y a longtemps m'a dit à ce sujet (il a fait le hack).

Il semble qu'il a travaillé pour quelqu'un qui était aveugle et qui avait besoin d'un moyen de lire des fichiers texte. Donc, il a compris comment traduire les fichiers texte en braille et les imprimer à l'aide de différents personnages comme . et :

Les imprimantes à l'époque, étaient les imprimantes à impact, de sorte que quand un personnage a été imprimé, le mécanisme d'impression a frappé le papier assez fort pour laisser une impression qui peut être perçu. Depuis l'impression formée sur le dos de la feuille de papier, il avait pour imprimer un inversée en arrière braille en sorte que, lorsque le document a été tourné autour d'elle était correcte.

Bien sûr, l'acte de lecture éliminé les dépressions, donc c'était un lire-une fois le mécanisme, mais j'ai toujours pensé que c'était une assez cool hack.

24voto

Cody Brocious Points 24042

Tout en travaillant sur le reverse-engineering de l'effort de l'iPhone, j'ai trouvé une vulnérabilité dans la bande de base (la puce qui gère la téléphonie et du transporteur de verrouillage) qui vous permettent d'écrire des zéros de façon arbitraire. Si cela semble inutile au premier abord, il est rapidement devenu évident que cela pourrait faire beaucoup plus que ce que j'avais d'abord pensé. Avec la façon dont le BRAS fonctionne, certains sauts pourrait être rendue caduque par la rédaction d'un unique zéro dans la cible, provoquant le chemin de l'exécution de toujours continuer à avancer. Ceci a permis à un logiciel de déverrouillage, mais a été rapidement remplacé par un autre plus robuste hack qui vous a permis de reflasher la bande de base entièrement.

Toujours sacrément fier de ce hack, indépendamment de son inutilité maintenant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X