Wpis z mikrobloga

via Wykop Mobilny (Android)
  • 0
Czy jest możliwe wyciągnięcie z ramu pliku na którym się obecnie pracuje?

Mam program (windows, prawdopodobnie napisany w #java) który służy do tworzenia programów (struktura plików jak w xml, czyli można otworzyć notatnikiem) na centralkę testującą wiązki elektryczne. Jednak ten program zapisuje w pliku sumę kontrolną #crc . Gdy centralka testującą wykryje różnice między CRC zapisanym w programie a CRC obliczonym przez nią wyrzuca błąd i nie pozwala uruchomić programu.

Obstawiam (nie znam się na #reverseengineering #inzynieriawsteczna) że program póki jest w pamięci ram ma w miejscu CRC jakąś zmienną którą potem podmienia, i myślałem w ten sposób dojść do tego.

Generatory CRC na necie nie potrafią odtworzyć CRC wygenerowanego przez program. Jakieś pomysły? Pisze w #python więc może ktoś ma doświadczenie z podobnymi rzeczami.
  • 14
via Wykop Mobilny (Android)
  • 0
@NewEpisode: Jeśli uda Ci się wyciągnąć z niego .jar albo .class to możesz to wrzucić do Intellij i próbować debugowac. Ale to nie będzie łatwe bo jest to dość niestandardowy przypadek
@NewEpisode Możesz zdumpować z JVM klasy na wiele sposobów. Najłatwiejszy to chyba uruchomienie tej Jarki z Java agentem który zrzuci to co ładuje class loader, ewentualnie mozesz natywnie shookować defineClass/użyć JVMTI. W razie czego dawaj znać pomogę :)
@NewEpisode: Za pomocą programów jak DetectItEasy możesz po sygnaturach zobaczyć na przykład jakim kompilatorem był kompilowany dany program, wtedy możesz wykluczyć czy to java czy nie. Z ramu jak najbardziej możesz odczytać wszystko, z poziomu usermode masz od tego funkcje takie jak ReadProcessMemory. Ja bym do tego podszedł w inny sposób, znalazł miejsce w programie w którym jest tworzona suma kontrolna i zreversował algorytm jej tworzenia.