Autor
|
Tema: Alguien me explica esto...soy novato (Leído 4,803 veces)
|
catalinilla
Desconectado
Mensajes: 28
|
//******************** Program Entry Point ******** :101397DD 55 push ebp :101397DE 8BEC mov ebp, esp :101397E0 53 push ebx :101397E1 8B5D08 mov ebx, dword ptr [ebp+08] :101397E4 56 push esi :101397E5 8B750C mov esi, dword ptr [ebp+0C] :101397E8 57 push edi :101397E9 8B7D10 mov edi, dword ptr [ebp+10] :101397EC 85F6 test esi, esi :101397EE 7509 jne 101397F9 :101397F0 833D7CF8281000 cmp dword ptr [1028F87C], 00000000 :101397F7 EB26 jmp 1013981F
* Referenced by a (U)nconditional or (C)onditional Jump at Address: |:101397EE(C) | :101397F9 83FE01 cmp esi, 00000001 :101397FC 7405 je 10139803 :101397FE 83FE02 cmp esi, 00000002 :10139801 7522 jne 10139825
* Referenced by a (U)nconditional or (C)onditional Jump at Address: |:101397FC(C) |
* Possible StringData Ref from Code Obj ->"" | :10139803 A1A00F1F10 mov eax, dword ptr [101F0FA0] :10139808 85C0 test eax, eax :1013980A 7409 je 10139815 :1013980C 57 push edi :1013980D 56 push esi :1013980E 53 push ebx :1013980F FFD0 call eax :10139811 85C0 test eax, eax :10139813 740C je 10139821
* Referenced by a (U)nconditional or (C)onditional Jump at Address: |:1013980A(C) | :10139815 57 push edi :10139816 56 push esi :10139817 53 push ebx :10139818 E815FFFFFF call 10139732 :1013981D 85C0 test eax, eax
* Referenced by a (U)nconditional or (C)onditional Jump at Address: |:101397F7(U) | :1013981F 7504 jne 10139825
* Referenced by a (U)nconditional or (C)onditional Jump at Address: |:10139813(C) | :10139821 33C0 xor eax, eax :10139823 EB4E jmp 10139873
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses: |:10139801(C), :1013981F(C) | :10139825 57 push edi :10139826 56 push esi :10139827 53 push ebx :10139828 E8F6FAFFFF call 10139323 :1013982D 83FE01 cmp esi, 00000001 :10139830 89450C mov dword ptr [ebp+0C], eax :10139833 750C jne 10139841 :10139835 85C0 test eax, eax :10139837 7537 jne 10139870 :10139839 57 push edi :1013983A 50 push eax :1013983B 53 push ebx :1013983C E8F1FEFFFF call 10139732
* Referenced by a (U)nconditional or (C)onditional Jump at Address: |:10139833(C) | :10139841 85F6 test esi, esi :10139843 7405 je 1013984A :10139845 83FE03 cmp esi, 00000003 :10139848 7526 jne 10139870
* Referenced by a (U)nconditional or (C)onditional Jump at Address: |:10139843(C) | :1013984A 57 push edi :1013984B 56 push esi :1013984C 53 push ebx :1013984D E8E0FEFFFF call 10139732 :10139852 85C0 test eax, eax :10139854 7503 jne 10139859 :10139856 21450C and dword ptr [ebp+0C], eax
* Referenced by a (U)nconditional or (C)onditional Jump at Address: |:10139854(C) | :10139859 837D0C00 cmp dword ptr [ebp+0C], 00000000 :1013985D 7411 je 10139870
* Possible StringData Ref from Code Obj ->"" | :1013985F A1A00F1F10 mov eax, dword ptr [101F0FA0] :10139864 85C0 test eax, eax :10139866 7408 je 10139870 :10139868 57 push edi :10139869 56 push esi :1013986A 53 push ebx :1013986B FFD0 call eax :1013986D 89450C mov dword ptr [ebp+0C], eax
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses: |:10139837(C), :10139848(C), :1013985D(C), :10139866(C) | :10139870 8B450C mov eax, dword ptr [ebp+0C]
* Referenced by a (U)nconditional or (C)onditional Jump at Address: |:10139823(U) | :10139873 5F pop edi :10139874 5E pop esi :10139875 5B pop ebx :10139876 5D pop ebp :10139877 C20C00 ret 000C
|
|
|
En línea
|
|
|
|
Tinkipinki
Desconectado
Mensajes: 242
|
Hola catalinilla: Pues en principio pareceria codigo desensamblado con W32Dsm.....pero ssupongo que no querias preguntar esto. Para que te puedan responder mas debidamente tendrias que explicar que es lo que no entiendes o que es lo que quieres que te expliquen.
saludos
|
|
|
En línea
|
|
|
|
catalinilla
Desconectado
Mensajes: 28
|
Tinkipinki gracias por responder, esta parte de codigo me interesa para saltar la proteccion de un programa, pero lo que no se es cada linea del codigo que es lo que hace realmente para poder entenderlo y poder hacer el cambio. Un salu2
|
|
|
En línea
|
|
|
|
adastra
Endless Learner
Ex-Staff
Desconectado
Mensajes: 885
http://thehackerway.com/
|
El código que estas viendo, es código en Assembly y evidentemente, para poder cambiarlo necesitas en primer lugar, aprender el lenguaje. Por ejemplo, instrucciones como estas: 101397DD 55 push ebp :101397DE 8BEC mov ebp, esp :101397E0 53 push ebx :101397E1 8B5D08 mov ebx, dword ptr [ebp+08] Indican, dirección de memoria, operación a realizar y register manipulado en este caso han sido ebp, esp y ebx los registers afectados. Lo que pides no es sencillo, programar en assembly es destinto a programar en lenguajes de alto nivel como C/C++ o Java, el paradigma cambia... Si quieres comenzar a entender un poco sobre como funciona ASM y como manipular la memoria del sistema (que es al final de cuentas lo que se hace con Assembly) leete esta serie de tutos, aquí esta la primera parte: http://thehackerway.com/2011/04/10/assembly-en-gnulinux-para-hackers-parte-i/Saludos.
|
|
|
En línea
|
|
|
|
|
catalinilla
Desconectado
Mensajes: 28
|
Gracias Adastra y Иōҳ por responder, vereis yo algo ya se, la cuestion es que si entro en la llamada:
10139828 E8F6FAFFFF call 10139323
que me manda aqui:
* Referenced by a CALL at Address: |:10139828 | :10139323 55 push ebp :10139324 8BEC mov ebp, esp :10139326 51 push ecx :10139327 51 push ecx :10139328 837D0C01 cmp dword ptr [ebp+0C], 00000001 :1013932C 56 push esi :1013932D 0F8593000000 jne 101393C6 :10139333 53 push ebx :10139334 57 push edi :10139335 33FF xor edi, edi :10139337 897D0C mov dword ptr [ebp+0C], edi :1013933A E815060000 call 10139954 :1013933F E80A060000 call 1013994E :10139344 57 push edi
* Possible Reference to Dialog: | :10139345 68AC121F10 push 101F12AC :1013934A 57 push edi :1013934B 8BF0 mov esi, eax :1013934D FF7508 push [ebp+08] :10139350 8B5E08 mov ebx, dword ptr [esi+08] :10139353 E8F0050000 call 10139948 :10139358 85C0 test eax, eax :1013935A 741E je 1013937A :1013935C E891F8FFFF call 10138BF2 :10139361 8B7804 mov edi, dword ptr [eax+04] :10139364 85FF test edi, edi :10139366 7419 je 10139381 :10139368 8B07 mov eax, dword ptr [edi] :1013936A 8BCF mov ecx, edi :1013936C FF5058 call [eax+58] :1013936F 85C0 test eax, eax :10139371 750E jne 10139381 :10139373 8B07 mov eax, dword ptr [edi] :10139375 8BCF mov ecx, edi :10139377 FF5070 call [eax+70]
y cambio el jne por un je en :1013932D entro al programa y todo el menu me funciona bien, excepto un icono de dcho menu que si le doy se me sale el programa, con lo cual quiere decir que estoy muy cerca de conseguirlo y es por eso el descifrar esa parte del codigo, que algo se me estara pasando. Un salu2
|
|
|
En línea
|
|
|
|
adastra
Endless Learner
Ex-Staff
Desconectado
Mensajes: 885
http://thehackerway.com/
|
Vale, como ya sabras la instrucción JNE/JE es un salto condicional (lo mismo que viene a ser un "goto" en otros lenguajes de programación), en el caso de JNE/JE depende directamente del valor del register EFLAGS para que se llame el salto condicional a la dirección de memoria indicada, si al ejecutarse esa instrucción el programa esta finalizando de forma inesperada, es debido a que la dirección de memoria a la que se hace referencia es invalida o inexistente... (si necesitas profundizar un poco más sobre comparaciones y paridad con el register EFLAGS, fijate en este enlace: http://thehackerway.com/2011/04/20/assembly-en-gnulinux-para-hackers-newbies-parte-vii/ ) Ahora, yo que haria? 1. Si utilizas gdb pondria un punto de interrupción justo antes de que se ejecute esa instrucción y miraria los valores que tienes los registers (especialmente EFLGAS) con "info registers". 2. Me aseguraria que la dirección de memoria a la que se va "redireccionar" el ESP, realmente existe. He visto un poco el fragmento de codigo que has posteado, en: :1013932D 0F8593000000 jne 101393C6 Dice que se va a direcciónar el ESP a la dirección "101393C6" sino existe paridad con EFLAGS, pero donde esta esa dirección en tu codigo? lo pregunto porque no la veo por ningun sitio, si lo que has posteado es el código completo, ese puede ser el fallo. Saludos.
|
|
|
En línea
|
|
|
|
catalinilla
Desconectado
Mensajes: 28
|
Hola de nuevo, la direccion es esta:
* Referenced by a (U)nconditional or (C)onditional Jump at Address: |:1013932D(C) | :101393C6 837D0C00 cmp dword ptr [ebp+0C], 00000000 :101393CA 7546 jne 10139412
* Possible Reference to Dialog: | :101393CC 68D0E72810 push 1028E7D0 :101393D1 E85A050000 call 10139930 :101393D6 8BF0 mov esi, eax :101393D8 E871050000 call 1013994E :101393DD 897008 mov dword ptr [eax+08], esi :101393E0 E80DF8FFFF call 10138BF2 :101393E5 8B4004 mov eax, dword ptr [eax+04] :101393E8 85C0 test eax, eax :101393EA 7407 je 101393F3 :101393EC 8B10 mov edx, dword ptr [eax] :101393EE 8BC8 mov ecx, eax :101393F0 FF5270 call [edx+70]
* Referenced by a (U)nconditional or (C)onditional Jump at Address: |:101393EA(C) | :101393F3 E832050000 call 1013992A :101393F8 6AFF push FFFFFFFF :101393FA E825050000 call 10139924 :101393FF E83E050000 call 10139942 :10139404 6A01 push 00000001
* Possible Reference to Dialog: | :10139406 6860F82810 push 1028F860 :1013940B E80E050000 call 1013991E :10139410 EB30 jmp 10139442
* Referenced by a (U)nconditional or (C)onditional Jump at Address: |:101393CA(C) | :10139412 837D0C03 cmp dword ptr [ebp+0C], 00000003 :10139416 752A jne 10139442
* Possible Reference to Dialog: | :10139418 68D0E72810 push 1028E7D0 :1013941D 8D4DF8 lea ecx, dword ptr [ebp-08] :10139420 E8B7F5FFFF call 101389DC :10139425 E800050000 call 1013992A :1013942A 6AFF push FFFFFFFF :1013942C E8F3040000 call 10139924 :10139431 FF7508 push [ebp+08] :10139434 E8DF040000 call 10139918 :10139439 8B45FC mov eax, dword ptr [ebp-04] :1013943C 8B4DF8 mov ecx, dword ptr [ebp-08] :1013943F 894804 mov dword ptr [eax+04], ecx
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses: |:10139410(U), :10139416(C) | :10139442 6A01 push 00000001 :10139444 58 pop eax
|
|
|
En línea
|
|
|
|
adastra
Endless Learner
Ex-Staff
Desconectado
Mensajes: 885
http://thehackerway.com/
|
De acuerdo, en este caso, nuevamente lo que te comente anteriormente, puntos de interrumpción en la instrucción :101393C6 837D0C00 cmp dword ptr [ebp+0C], 00000000 y ver los valores de las variables y registers, es la única forma de saber exactamente que es lo que esta pasando... Suerte nena
|
|
|
En línea
|
|
|
|
catalinilla
Desconectado
Mensajes: 28
|
Graciassssssssss Adastra por la explicacion tan extraordinaria, voy a ver si resuelvo algo. Un salu2
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Alguien me explica como va esto...?
Scripting
|
gonzalo57
|
4
|
4,025
|
26 Junio 2012, 00:51 am
por gonzalo57
|
|
|
Alguien me explica esto?
.NET (C#, VB.NET, ASP)
|
gonzalo57
|
1
|
2,264
|
28 Octubre 2012, 15:56 pm
por seba123neo
|
|
|
Alguien me explica para que sirve esto ?
Programación C/C++
|
johndoe1337
|
3
|
2,875
|
26 Noviembre 2013, 23:27 pm
por ivancea96
|
|
|
Alguien me explica esto sobre discos duros
Foro Libre
|
WIитX
|
0
|
1,625
|
2 Diciembre 2013, 19:50 pm
por WIитX
|
|
|
alguien me explica esto?
Sugerencias y dudas sobre el Foro
|
thecloudff7
|
6
|
4,594
|
29 Julio 2015, 17:07 pm
por Eleкtro
|
|