Dll call analyzer

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 16:14

Armageddon_2k

Trotse eigenaar: Yamaha R6

Topicstarter
Hey mensen,

Ik zit hier met een klein probleemje, ik heb een software pakket (SIMBApro) waar een API bij zit en een dll die gebruikt wordt om onder andere projecten aan te maken en imports uit te voeren.
Alles behalve de import call is goed omschreven. 3 keer raden welke call ik nodig heb |:(
Lang verhaal kort, wat stappen verder wat dll's ge analyseerd.
Ik heb inmiddels de 2 aanroepen die ik nodig heb ("SIMBA2_SDB20xxImport" en "SIMBA2_SDBImport"), ook op internet niets over te vinden..
Nu ben ik dus nog opzoek naar de juiste aanroep van de functie, de eerste 2 waarden heb ik door trail-and-error wat weten te beredeneren (door de retun waarde van de functie).
Maar ik kom niet tot het goeie resultaat.

Mijn vraag:
Is het mogelijk (en zo ja: hoe?) om zelf een dll te maken die een soort van imitatie is van de bestaande dll.
Deze dll aan te roepen vanuit het orginele pakket (SIMBApro), en deze aanroepen te analyseren.
Ik heb namelijk de dll naam en de functie naam, maar ik weet niet hoe ik dit het beste kan aanpakken en hoe ik een "debug" van de imitatie dll zou moeten doen.

[--------------------IDEE--------------------]
Een dll die 1 specifieke aanroep accepteert: SIMBA2_SDB20xxImport
En dan een messagebox laat zien van de gebruikte argumenten.
Hoe zou ik dit kunnen doen?

[--------------------Update---------16:18------]
Helaas, heb net een dll gemaakt met allemaal optional arguments, en deze worden naar een messagebox gezet zodra de functie wordt aangeroepen.
Alleen ben ik tot de conclusie gekomen dat SIMBApro geen gebruik maakt van de dll met deze functie.
De dll roept dus het programma aan en niet anders om :(
Wordt waarschijnlijk wachten op de maker van het programma..

[ Voor 21% gewijzigd door Armageddon_2k op 21-09-2009 16:20 ]


Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Nu online

Haan

dotnetter

Waarom vraag je het niet aan de maker van het softwarepakket? :?

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 16:14

Armageddon_2k

Trotse eigenaar: Yamaha R6

Topicstarter
Haan schreef op maandag 21 september 2009 @ 11:27:
Waarom vraag je het niet aan de maker van het softwarepakket? :?
Omdat die niet reageren op emails.
Dat was namelijk ook mijn 1e ingeving.
Ik ben nu bezig het hoofd programma te decompilen en analizeren, kijken of ik daaruit de aanroep kan vissen.

[ Voor 26% gewijzigd door Armageddon_2k op 21-09-2009 11:43 ]


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:06

gorgi_19

Kruimeltjes zijn weer op :9

Als het een .Net applicatie is, kan je reflector gebruiken :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 16:14

Armageddon_2k

Trotse eigenaar: Yamaha R6

Topicstarter
gorgi_19 schreef op maandag 21 september 2009 @ 11:50:
Als het een .Net applicatie is, kan je reflector gebruiken :)
Het is een vb(6) applicatie met (volgens de makers) een API die voornamelijk uit pascal calls bestaat.
De .net reflector kan ik dus niet gebruiken helaas.

Acties:
  • 0 Henk 'm!

  • leuk_he
  • Registratie: Augustus 2000
  • Laatst online: 15-07 15:35

leuk_he

1. Controleer de kabel!

Debuggen, breakpoint zetten op moment van call. callstack bekijken.

Zelf nooit gedaan, maar lijkt me de methode om zo goed mogelijk te raden.

Need more data. We want your specs. Ik ben ook maar dom. anders: forum, ff reggen, ff topic maken
En als je een oplossing hebt gevonden laat het ook ujb ff in dit topic horen.


Acties:
  • 0 Henk 'm!

  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 16:14

Armageddon_2k

Trotse eigenaar: Yamaha R6

Topicstarter
leuk_he schreef op maandag 21 september 2009 @ 11:57:
Debuggen, breakpoint zetten op moment van call. callstack bekijken.
Zelf nooit gedaan, maar lijkt me de methode om zo goed mogelijk te raden.
Ik kan het orginele programma natuurlijk niet zo goed gaan debuggen :P heb daar de source niet van liggen.
Ik zoek een manier om zelf een "imitatie" dll te maken en te kijken wat de functie aanroep is.

Acties:
  • 0 Henk 'm!

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 10-08 02:59

Gerco

Professional Newbie

Armageddon_2k schreef op maandag 21 september 2009 @ 12:09:
Ik kan het orginele programma natuurlijk niet zo goed gaan debuggen :P heb daar de source niet van liggen.
Ik zoek een manier om zelf een "imitatie" dll te maken en te kijken wat de functie aanroep is.
Om te debuggen heb je natuurlijk de sourcecode niet nodig. Je kan prima met elke debugger een programma op een willekeurig punt onderbreken en de assembly code, de stack, etc bekijken. Daaruit kun je dan (met wat moeite) wel de parameters van de aanroep afleiden.

Als je geen debugger weet, probeer dan iets als OllyDbg.
OllyDbg is a 32-bit assembler level analysing debugger for Microsoft® Windows®. Emphasis on binary code analysis makes it particularly useful in cases where source is unavailable.
De tutorial Loaddll is misschien wel handig. OllyDbg kan namelijk stand alone DLLs debuggen. Wanneer je dan de DLL van het programma pakt kun je wellicht het aantal parameters achterhalen.

[ Voor 23% gewijzigd door Gerco op 21-09-2009 12:46 ]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Acties:
  • 0 Henk 'm!

  • NC83
  • Registratie: Juni 2007
  • Laatst online: 21-08 21:44
Anders is er natuurlijk altijd nog depends.exe dit geeft alle dll calls voor een programma weer en kan dit ook doen voor dlls.

ex-FE Programmer: CMR:DiRT2,DiRT 3, DiRT Showdown, GRID 2, Mad Max


Acties:
  • 0 Henk 'm!

  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 16:14

Armageddon_2k

Trotse eigenaar: Yamaha R6

Topicstarter
Gerco schreef op maandag 21 september 2009 @ 12:31:
De tutorial Loaddll is misschien wel handig. OllyDbg kan namelijk stand alone DLLs debuggen. Wanneer je dan de DLL van het programma pakt kun je wellicht het aantal parameters achterhalen.
Hmmz helaas, net even een poging gedaan, willekeurig dll kan ik met loaddll doen, maar ik krijg bij mij dll een foutmelding, en krijg de dll analyze popup er niet bij.
NC83 schreef op maandag 21 september 2009 @ 12:38:
Anders is er natuurlijk altijd nog depends.exe dit geeft alle dll calls voor een programma weer en kan dit ook doen voor dlls.
De calls van de functie zijn niet het probleem, ik wil weten welke parameters ik de call mee moet geven, en dit kan ik niet doen met depends.

[ Voor 40% gewijzigd door Armageddon_2k op 21-09-2009 13:13 ]


Acties:
  • 0 Henk 'm!

  • leuk_he
  • Registratie: Augustus 2000
  • Laatst online: 15-07 15:35

leuk_he

1. Controleer de kabel!

Armageddon_2k schreef op maandag 21 september 2009 @ 13:10:
[...]
Hmmz helaas, net even een poging gedaan, willekeurig dll kan ik met loaddll doen, maar ik krijg bij mij dll een foutmelding, en krijg de dll analyze popup er niet bij.
Wat voor melding? kun je daar iets aan doen? foutmelding door google gehaald?

zoekterm "reverse engineering" kan je wellicht verder helpen?

Need more data. We want your specs. Ik ben ook maar dom. anders: forum, ff reggen, ff topic maken
En als je een oplossing hebt gevonden laat het ook ujb ff in dit topic horen.


Acties:
  • 0 Henk 'm!

  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 16:14

Armageddon_2k

Trotse eigenaar: Yamaha R6

Topicstarter
leuk_he schreef op maandag 21 september 2009 @ 13:34:
[...]

Wat voor melding? kun je daar iets aan doen? foutmelding door google gehaald?
zoekterm "reverse engineering" kan je wellicht verder helpen?
Ik krijg de melding: Unable to locate dll (links onderin de status balk)
Kan verder wel handmatig door de calls heen lopen maar wordt er nog niet veel wijzer van omdat ik er nog niet helemaal uit kan halen wat wel en niet procedure argumenten zijn.

Google is my friend dus dat heb ik al geprobeerd :)
Pagina: 1