“Są na tym świecie rzeczy, które się fizjonomom nie śniły!” – kto kojarzy taki cytat? W programowaniu są z kolei obszary, w które zapuszczają się nieliczni-li jedynie śmiałkowie.
Good news everyone: ci śmiałkowie zebrali się do kupy i napisali książkę. Ksiązkę, którą każdy CRUDowiec powinien dostać pod choinkę.
O jakie obszary chodzi? I co to za książka? Cyk:
Kilkunastu uznanych speców, pod okiem innych uznanych speców, napisało księgę opisującą tajemnice skrywane przez przeróżne technologie. Znajdziemy tam zarówno ogólne koncepcje związane z RE (Reverse Engineering), jak i rozdziały poświęcone .NETowi i Pythonowi. Na uwagę zasługuje bardzo ciekawy rozdział o wstrzykiwaniu kodu w inne procesy. W sumie dostajemy 12 części traktujących o okolicach inżynierii wstecznej właśnie.
Pozycja ta wyszła całkiem niedawno i aktualnie jest w promocji. Lećcie i bierzcie póki ciepłe <link>!
W książce palce maczał Gynvael Coldwind, z którym miałem przyjemność nagrać podcast. Do posłuchania tutaj: DevTalk#33: O programowaniu z Gynvaelem Coldwindem.
Konkurs
I uwaga, uwaga, achtung!
Mam do rozdania trzy (słownie: trzy) egzemplarze tej książki. Co zrobić, aby wygrać? Wykonać jedno z zadań:
- opisz działanie dowolnego obfuskatora dla platformy .NET
- napisz artykuł opisujący dowolny dekompilator dla .NET, np. dnSpy, IL Spy, Reflector
- opisz jedną z metod powodujących błąd dekompilacji za pomocą dnSpy, IL Spy, Reflectora lub innego narzędzia
- napisz program, który po uruchomieniu wykona kod niewidoczny podczas dekompilacji
Zadania tekstowe (1-3) mogą być opublikowane w dowolnym, dostępnym publicznie, miejscu. Może być to Twój blog, może być Medium, może być jako gist na GitHubie… Język: polski lub angielski. Jeśli artykuł będzie wysokiej jakości i wyrazisz taką wolę to pomyślimy nad publikacją go tutaj, na devstyle. Rozwiązanie zadania to umieszczenie linku w komentarzu do tego posta.
Rozwiązanie zadania z kodowaniem (4) musi być umieszczone na GitHubie, a link do niego wpisany w komentarzu pod tym postem.
Lista zwycięzców zostanie ogłoszona we środę 21 grudnia. Do roboty! :)
P.S.
Jako devstyle.pl objąłem patronat medialny nad książką. I dobrze.
Biorąc pod uwagę, że jako jedno z miejsc docelowe jest wskazane “Medium” to rozumiem, że tekst może być po angielsku.
Pozdrawiam,
Paweł
Tak, dzięki, już poprawiam w poście.
4) używająć kompilacji expressionów, wykonuje switch, którego nie ma z
https://github.com/Makciek/SwitchExpression
Warto przeczytać jak zabezpieczać programy przed nielegalnym użytkowaniem. Bo niby jest HASP, i inne cuda, a okazuje się że wystarczy parę NOP-ów żeby to obejść. Patrzyłem w spis treści i widzę że nie ma o wstrzykiwaniu się do JVM. Temat zbyt banalny ? (Sam się wstrzykuje do JVM z Weblogiciem)
Hmm, świetny pomysł na arta. I… chyba napiszę bo aż mnie korci. Choć pewnie będzie nie do końca na temat, ale będę chciała pokazać ciekawy myk.
https://gist.github.com/matjanos/74b4661db8cf73507f950ab1fb183b51
Syntactic sugar vs dotPeek
Kuba,
Nie wiem do ktorego punktu przypisać ten komentarz.
3 oczywiście!
OKej… choć nie widzę tutaj błędu dekompilacji. Nic się nie wywala, nic nie rzuca błędem.
Ale fajnie pokazana zależność using/IDispisable z try/finally :).
Dekomplilacja w mojej ocenie powinna odwzorować kod tak jak został on napisany. Tutaj pokazuje coś innego niż napisał programista, więc popełnił błąd. Starałem się go pokazać i wyjaśnić dlaczego wystąpił :)
Aaa, OKej. Choć chodziło o co innego (widocznie moja wina, nie do końca dobrze wytłumaczyłem): o wywalenie się narzędzia do dekompilacji. Tak jak przedstawiono to chociażby w komentarzu niżej, u Pawła Łukasika.
Mimo niezrozumienia mam nadzieję, że to co napisałem kogoś zainteresuje i pokaże coś fajnego :)
Jak dokładnie rozumieć punkt 4 “napisz program, który po uruchomieniu wykona kod niewidoczny podczas dekompilacji” – czy za niewidoczny można rozumieć kod zaszyfrowany? Czy np. wy-Emit-owany kod w runtime będzie ok? Czy chodzi o powiązanie np. techniki z punktu 3 z kodem?
Pozdrawiam,
Paweł
Paweł,
Oba zaproponowane przez Ciebie sposoby interpretacji są OK.
Hmm, jak napisałam, tak zrobiłam. Obsuwa czasowa wynikała z przegranej walki z IDE i załamaniem nerwowym z tego powodu. Zainspirowałeś mnie do napisania tego: http://piatkosia.k4be.pl/wordpress/2016/12/18/ilspy-szpiegujemy-szpiega/
Możesz być z siebie dumny:)
Piatkosia,
Jestem dumny i z siebie i z Ciebie, książka frunie! :)
Zgłoszenie konkursowe.
Punkt 3:
http://blog.octal.pl/2016/11/emitbyte-one-cool-il-directive-that-can-do-evil.html
Pozdrawiam,
Paweł Łukasik
Paweł,
Bardzo fajnie, keep’em coming! Książka wędruje do Ciebie :).
[…] aplikacją pierwszej potrzeby, zwłaszcza w kontekście szybszego pisania kodu, ale zainspirowany inicjatywą Maćka postanowiłem opisać dekompilator, którego osobiście używam. Choć nie jest on przeze mnie zbyt […]
Zadanie nr 2: codefaster.pl/dekompilacja-przy-pomocy-dotpeek
Mam nadzieję, że zdążyłem :)
Code faster,
Zdążyłeś, elegancko, książka jest Twoja :).