Estoy intentando recrear un método que usa una aplicación programada en visual basic 6. He podido recrearlo todo excepto una pequeña parte que no consigo entender. He estado usando ollydbg, también he intentado decompilar la aplicación con VB Decompiler y he obtenido esto (publico solo el trozo que no entiendo):
Código:
loc_004EC3E6: var_eax = Combo3.AddItem "All", var_6C
loc_004EC407: var_eax = %fobj
loc_004EC44F: var_eax = Combo3.AddItem "HighLighted", var_6C
loc_004EC470: var_eax = %fobj
loc_004EC492: var_8C = Combo2.ListCount
loc_004EC4BC: setg bl
loc_004EC4C1: var_eax = %fobj
loc_004EC4CA: If ebx Then
loc_004EC4D0:
loc_004EC4F3: var_8C = Combo2.ListCount
loc_004EC525: var_D4 = var_8C - 0001h
loc_004EC533: var_eax = %fobj
loc_004EC53F: If ebx <= 0 Then
loc_004EC566: var_ret_7 = ebx
loc_004EC576: var_ret_7 = Combo2.ItemData
loc_004EC5A1: setg al
loc_004EC5AC: var_eax = %fobj
loc_004EC5B5: If %fobj Then
loc_004EC5C5: Set var_50 = %fobj
loc_004EC5D8: var_10C = var_50
loc_004EC5DE: var_ret_8 = ebx
loc_004EC5EC: var_ret_8 = Combo2.ItemData
loc_004EC613: var_2C = var_94
loc_004EC616: var_eax = %fobj
loc_004EC627: var_3C = var_34
loc_004EC62A: End If
loc_004EC635: 00000001h = 00000001h + var_34
loc_004EC642: GoTo loc_004EC539
loc_004EC647: End If
loc_004EC655: Set var_54 = CInt(1)
loc_004EC657: var_A0 = var_54
loc_004EC688: var_4C = Combo2.List(var_3C)
loc_004EC6CF: var_eax = Combo2.AddItem var_4C, var_6C
loc_004EC722: var_eax = Combo2.RemoveItem var_3C
loc_004EC743: var_eax = %fobj
loc_004EC765: var_8C = Combo2.ListCount
loc_004EC78F: setg bl
loc_004EC799: setg dl
loc_004EC7A3: var_eax = %fobj
loc_004EC7AC: If edx <> 0 Then GoTo loc_004EC4D0
loc_004EC7B2: End If
Más o menos lo que he podido ver es que borra los ítems de un combobox siguiendo un patrón específico, pero no consigo entenderlo.
Lo que busco aquí es que alguien me pueda dar una pista o explicar cómo funciona esto para poderlo recrear y obtener el mismo resultado. Aparte de esto, también he estado utilizando OllyDbg, aunque tengo que decir que no tengo mucha idea de como funciona, ya que es la primera vez que lo empleo.
Para poder poner un poco en contexto, este es un caso de prueba que he utilizado, en el combobox (Combo2 en el código decompilado) hay estos ítems:
Código:
Abrera
Cervelló
Moyanés
Papiol
San
Test
Una vez se ejecuta esta parte del código, pasamos a tener estos:
Código:
Cervelló
Moyanés
Papiol
San
Por algún motivo, el algoritmo elige eliminar estos dos, pero no siempre son el primero o el último, en este caso que he probado sí, pero no es siempre igual.
Código:
Test
Abrera
Para que podáis ver el código este en ejecución, he grabado un video inspeccionando el código este:
Por lo que he visto parece que hay dos bucles, que eligen los índices y cuando se cumple una condición, sale, pero no consigo entenderlo.
¿Alguna idea de más o menos cómo funciona?, si os falta más información o algo decídmelo y lo pongo.
He preguntado en otras comunidades, pero nadie me ha podido/querido ayudar, os agradecería mucho que le echarais un vistazo, llevo bastantes días, pero no consigo avanzar.