Un tres simple introduction au NDK Android sur un billet sympathique et a lire pour ceux qui veulent s'y mettre! (et le cross compilo facile c'est par la aussi!! :))
https://www.synthetos.com/blog/native-embedded-code-on-android/
Aller au contenu | Aller au menu | Aller à la recherche
lundi 19 mars 2012
Par eau le lundi 19 mars 2012, 18:04 - geeking
Un tres simple introduction au NDK Android sur un billet sympathique et a lire pour ceux qui veulent s'y mettre! (et le cross compilo facile c'est par la aussi!! :))
https://www.synthetos.com/blog/native-embedded-code-on-android/
mardi 9 novembre 2010
Par eau le mardi 9 novembre 2010, 23:15 - geeking
Je lis du code généré en ce moment... en particulier du code généré par Visual C++ avec des options "star-wars-security" blablabla mais c'est pas le sujet du jour...
Le sujet du jour c'est ma relative incompétence face a des choses comme:
[...] .text:0069979F mov eax, 66666667h .text:006997A4 imul ecx .text:006997A6 sar edx, 1 .text:006997A8 mov eax, edx .text:006997AA shr eax, 1Fh .text:006997AD add eax, edx [...]
alors dans ecx, j'ai la valeur 0x20000, après des tentatives rapides de compréhension, je me suis bon les "magic values", j'en vois de temps en temps, ca pue la "magic value" des trucs de compilo-salaud pour tenter d'avoir de la précisions en continuant a travailler avec des entiers et en base2, bref..
En cherchant un peu je suis tombe la dessus:
Et j'ai enfin compris ce que ce petit snippet de code faisait, alors d’après vous il se passe quoi ? et quel est l’algèbre applique a la valeur dans ecx!? :) (je mettrais a jour avec une explication si le lien n'est vraiment pas clair...)
peace!
jeudi 4 novembre 2010
Par poz le jeudi 4 novembre 2010, 16:31 - geeking
Un billet assez exhaustif, avec des exemples de code et d'output assembleur : c'est ici
lundi 16 août 2010
Par eau le lundi 16 août 2010, 17:29 - geeking
Je suis une grosse feignasse et je lis pas énormément de code, en ce moment je lis des trucs fait sur de l'ARM. En bonne grosse tanche, je n'avais jamais vu ces CMP suivi d'un CMPNE et d'un BXX ou un MOVXX etc.. (c'est en mode ARM only) ailleurs:
CMP R1,#1 CMPNE R2,#2 BEQ bleh
Heureusement qu'il y a l'internet poilu pour éclairer et donner des belles recettes.
J'ai trouve des gens qui parlent de comment on fait un poulet roti et comment voir si il est bien cuit!
Apparemment tu peux chainer des conditions tranquillement avec un petit "suffix" dans l'instruction (il y a des bits réservés dans l'instruction pour ces options ARM-only)
voila ca m'a rendu service aujourd'hui enjoy!
lundi 26 avril 2010
Par eau le lundi 26 avril 2010, 23:31 - geeking
En ce moment je bricole des trucs en assembleur x86/x86-64 et MIPS (wouhouu j'ai un loongson 2f!), alors du coup j'ai qqes liens:
Et j'en profite pour dire que pour tester il y a:
Et il y a aussi qqes petits liens classiques:
vendredi 21 août 2009
Par sbz le vendredi 21 août 2009, 22:46 - geeking
L'été sera chaud, l'été sera chaud, tellement chaud qu'on va se rappeler le kit de survie de l'unxien pour réaliser l'exploration de binaire. So, re en veux-tu, en voilà.
On commence par les trucs de bases gdb, objdump, readelf, elfdump, etc puis on s'attadera sur une suite ddd (le front end à gdb), kcachegrind (utile pour recomposer les call graphs), biew, xxd, od, hexedit (pour l'édition hexadécimale) et pour finir sur l'outil radare qui fait tout à la fois avec même des possiblités de scripting.
Et puis ici, une petite liste sympa des opcodes des caractères imprimables x86 et x64. Ah au fait un concept intéressant c'est les WAF, ca se passe ici.
A plus, en tongue sur la plage ;)
samedi 30 mai 2009
Par eau le samedi 30 mai 2009, 13:37 - geeking
Je me balladais tranquille, en week end et je suis tombe sur le lien suivant:
moi>Intel AES instruction set support?! hu?! depuis quand?!?!
J'ai vite lu la doc et j'ai voulu voir si mon CPU tout recent supportais cette joyeusete, Intel file du code, mais ca compilait pas direct alors j'ai vite refait tout simple..:
#include <stdio.h>
#include <unistd.h>
int chk_cpu_aes_support() {
unsigned int rc;
asm ("mov $0x01, %%eax\n\t"
"cpuid\n\t"
"mov %%ecx, %0\n\t"
:"=r"(rc)
: /* no inputs */
:"%ecx", "%eax"
);
return (rc & 0x2000000);
}
/* ORIGINAL INTEL CODE.
int Check_CPU_support_AES() {
#if defined(__INTEL_COMPILER)
int CPUInfo[4] = { -1 };
__cpuid(CPUInfo, 1);
return (CPUInfo[2] & 0x2000000);
#else
unsigned int a=1,b,c,d;
__cpuid(1, a,b,c,d);
return (c & 0x2000000);
#endif
}
*/
int main(int argc, char ** argv)
{
fprintf(stdout, "%08x(%d)\n", chk_cpu_aes_support(), chk_cpu_aes_support());
return 0;
}
Et tristesse...:
$ ./intelaesdetect 00000000 (0)
si qqun a un resultat "positif" n'hesitez pas a _COMMENTER_ juste que je sache quel series est capable de faire ca..
mardi 12 mai 2009
Par poz le mardi 12 mai 2009, 11:50 - geeking
Bon ben il a remis le couvert, le bougre. Cette fois, il explique comment fonctionne l'intéraction avec le matériel, via une bibliothèque d'abstration (comment discuter avec le port série, etc).
Le lien, c'est par ici.
Enjoy.
jeudi 7 mai 2009
Par eau le jeudi 7 mai 2009, 23:21 - geeking
Le soleil vient de se lever,
Encore une belle journée,
et il va bientôt arriver,
l'ami Ricoré !
Tuluuuuulululululutulutuut
Un joli debut de post d'un type
sympa qui reverse des programmes "pour le plaisir" le dimanche!
Marrant a lire, sympa pour demarrer son p'tit bout d'OS dans son coin, c'est un
peu comme deterrer des momies on apprends pleins de choses!