Autor
|
Tema: [PREGUNTA] Convertir una declaracion API de C# a VB6 (problema con punteros) (Leído 7,212 veces)
|
el_c0c0
Desconectado
Mensajes: 307
|
Es raro entonces es como decir que la funcion esta mal porque el RETN forma parte de ella pues los POP por algo deben estar no seguramente usaba registros o variables locales... cuanto era el valor de RETN? Ninguno. es un RETN solo. Ademas, el IDA decia bp-based frame... por ende, es CDECL. Era un poco ambiguo para mi (primera vez que me pasa esto, sin que el VB diga lo de "Convencion de llamadas no valido"). En fin, ahora resta descubrir la declaracion de una funcion que exporta, pero no esta declarada en el codigo de C#.
|
|
|
En línea
|
'- coco "Te voy a romper el orto"- Las hemorroides
|
|
|
x64core
Desconectado
Mensajes: 1.908
|
Ninguno. es un RETN solo. Ademas, el IDA decia bp-based frame... por ende, es CDECL. Era un poco ambiguo para mi (primera vez que me pasa esto, sin que el VB diga lo de "Convencion de llamadas no valido").
En fin, ahora resta descubrir la declaracion de una funcion que exporta, pero no esta declarada en el codigo de C#.
ningun valor en el RETN? se supone que debe de haber un RETN 04h que es el puntero al array... sin poder ver codigo ni nada a lo mucho que llega uno es adivinando prueba modificando a RETN 04h... Esperemos a que dice Karcrack muestra el desemsamblado
|
|
|
En línea
|
|
|
|
el_c0c0
Desconectado
Mensajes: 307
|
ningun valor en el RETN? se supone que debe de haber un RETN 04h que es el puntero al array... sin poder ver codigo ni nada a lo mucho que llega uno es adivinando prueba modificando a RETN 04h... Esperemos a que dice Karcrack muestra el desemsamblado Nop. Como es CDECL, el RETN no tiene nada... es decir, si uno prepara el stack previo a la llamada, uno mismo debe hacer pop por cada parametro. Entonces la DLL no los quita del stack al volver... En fin, el desensamblado (parcial, solo de la funcion que no se si estoy pasandole bien los argumentos) esta aqui: http://pastebin.com/yb5Jeu7yNo esta entero. Pero es igual a la funcion por la cual cree el post. La dll por si te interesa, esta aca http://www.mediafire.com/?c8movap40k83qraSi no estan instalados los drivers, va a tirar error al llamar a cualquier funcion, ya que no se carga siquiera.
|
|
|
En línea
|
'- coco "Te voy a romper el orto"- Las hemorroides
|
|
|
x64core
Desconectado
Mensajes: 1.908
|
Entonces no es stdcall se supone que si era stdcall, Bueno revisando un poco la funcion yo encontre el codigo siguiente, se supone que es llamar a la funcion ReadDataFromTPM ... El Codigo del pastebin que subiste es el de la funcion ReadCertFromTPM... X_100033F0: push ebp X_100033F1: mov ebp, esp X_100033F3: push -0x1 X_100033F5: push 0x1000c3b8 X_100033FA: mov eax, fs:[0x0] X_10003400: push eax X_10003401: sub esp, 0x8 X_10003404: push ebx X_10003405: push esi X_10003406: push edi X_10003407: mov eax, [0x1001001c] X_1000340C: xor eax, ebp X_1000340E: push eax X_1000340F: lea eax, [ebp-0xc] X_10003412: mov fs:[0x0], eax X_10003418: mov [ebp-0x10], esp X_1000341B: mov esi, [ebp+0x8] X_1000341E: xor ebx, ebx X_10003420: cmp esi, ebx X_10003422: jz 0x10003463 X_10003424: push 0x18 X_10003426: mov [ebp-0x4], ebx X_10003429: call 0x100036a0 X_1000342E: add esp, 0x4 X_10003431: cmp eax, ebx X_10003433: mov [ebp-0x14], eax X_10003436: jz 0x10003463 X_10003438: lea ecx, [ebp+0xb] X_1000343B: call 0x10002470 X_10003440: lea eax, [ebp-0x14] X_10003443: push eax X_10003444: push 0x18 X_10003446: push 0x3 X_10003448: lea ecx, [ebp+0xb] X_1000344B: mov byte [ebp-0x4], 0x1 X_1000344F: call 0x100026e0 X_10003454: cmp eax, ebx X_10003456: mov [ebp-0x4], bl X_10003459: jz 0x10003478 X_1000345B: lea ecx, [ebp+0xb] X_1000345E: call 0x10002480 X_10003463: or eax, -0x1 X_10003466: mov ecx, [ebp-0xc] X_10003469: mov fs:[0x0], ecx X_10003470: pop ecx X_10003471: pop edi X_10003472: pop esi X_10003473: pop ebx X_10003474: mov esp, ebp X_10003476: pop ebp X_10003477: ret
el parametro se recupera aquí: X_1000341B: mov esi, [ebp+0x8] sino me equivoco se tendria que depurar para ver adonde se pierde la pila ED: bueno igual ahora que releo los post entonces el problema era la convecion
|
|
« Última modificación: 19 Marzo 2012, 09:56 am por RHL »
|
En línea
|
|
|
|
el_c0c0
Desconectado
Mensajes: 307
|
si, con cobein habiamos visteo que al final era cdecl por eso mismo. es decir que con ReadDataFromTPM ya estamos listos (y funcionando).
Pero en el pastebin esta OTRA funcion, que es una que NO se cuantos parametros tiene. Teoricamente es 1 solo, un puntero a un array, pero no le cambia ningun byte. Estamos hablando de ReadCertFromTPM.
saludos
|
|
|
En línea
|
'- coco "Te voy a romper el orto"- Las hemorroides
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
pregunta convertir
« 1 2 »
Programación Visual Basic
|
thearing
|
12
|
6,308
|
19 Marzo 2011, 04:31 am
por raul338
|
|
|
Pregunta tonta sobre declaracion...
« 1 2 »
.NET (C#, VB.NET, ASP)
|
Edu
|
13
|
7,004
|
20 Marzo 2011, 23:05 pm
por Edu
|
|
|
¿Atan() Siempre devuelve 0? (posible problema con la declaración de las varibles
Programación C/C++
|
carlmycol
|
1
|
1,916
|
4 Abril 2013, 17:49 pm
por isseu
|
|
|
Problema con orden de declaración de 2 clases
Programación C/C++
|
xRodak
|
1
|
1,288
|
16 Enero 2014, 07:07 am
por Beakman
|
|
|
(Consulta) - Declaracion de punteros en Null
Programación C/C++
|
palacio29
|
2
|
1,527
|
16 Mayo 2019, 09:29 am
por MAFUS
|
|