<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-650001352631255056</id><updated>2026-06-22T12:23:18.200+02:00</updated><category term="advanced programming technique"/><category term="assembly language"/><category term="low level development"/><category term="system prorgamming"/><category term="programming"/><category term="linux"/><category term="system internals"/><category term="windows internals"/><category term="software protection"/><category term="dll injection"/><category term="flat assembler"/><category term="obfuscation"/><category term="anti piracy"/><category term="code injection"/><category term="exception handling"/><category term="information"/><category term="kernel module"/><category term="64 bit"/><category term="API import"/><category term="code obfuscation"/><category term="kernel"/><category term="virtual machine"/><category term="enumerate threads"/><category term="system call"/><category term="API export"/><category term="C"/><category term="CreateRemoteThread"/><category term="basics"/><category term="data obfuscation"/><category term="device drivers"/><category term="dump"/><category term="dynamic encryption"/><category term="emulator"/><category term="encryption"/><category term="export table"/><category term="framework"/><category term="hardware platform"/><category term="misc_register"/><category term="misc_unregister"/><category term="miscellaneous character driver"/><category term="protectors"/><category term="shared object"/><category term="sigaction"/><category term="signal"/><category term="suspend thread"/><category term="threads"/><category term="vectored exception handling"/><category term="EnumProcessModules"/><category term="Rust"/><category term="Solana"/><category term="Windows 7"/><category term="analysis"/><category term="ann"/><category term="artificial neural network"/><category term="blockchain"/><category term="event handler"/><category term="evolution"/><category term="expert systems"/><category term="fake dll"/><category term="forums"/><category term="genetic algorithm"/><category term="genetic programming"/><category term="hardware emulation"/><category term="macro"/><category term="memory dump"/><category term="memory management"/><category term="newsgroups"/><category term="optimization"/><category term="packers"/><category term="pointers"/><category term="programming technique"/><category term="ptrace"/><category term="quadratic equation"/><category term="reverse"/><category term="software architecture"/><category term="software engineering"/><category term="structured exception handling"/><category term="sys_call_table"/><category term="trolling"/><category term="trolls"/><title type='text'>System Programming</title><subtitle type='html'>This blog is dedicated to low level programming in Assembler and C  in either *Nix or Windows based operating systems.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://syprog.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://syprog.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Alexey Lyashko</name><uri>http://www.blogger.com/profile/13663908781307440762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>36</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-650001352631255056.post-5770230783411246203</id><published>2026-06-18T22:24:21.402+02:00</published><updated>2026-06-18T23:40:49.908+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="blockchain"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="Rust"/><category scheme="http://www.blogger.com/atom/ns#" term="software architecture"/><category scheme="http://www.blogger.com/atom/ns#" term="software engineering"/><category scheme="http://www.blogger.com/atom/ns#" term="Solana"/><title type='text'>The Wrong Guarantee</title><summary type="text">Why Rust Was the Wrong Proxy for Solana On-Chain CompetenceOn February 2, 2022, an attacker drained approximately $320 million from the Wormhole bridge.[1] Wormhole had undergone multiple third-party audits, including recent Neodyme reports covering the Solana contracts and other components in January 2022 — weeks before the exploit. The code was written in Rust. It compiled without errors. The </summary><link rel='replies' type='application/atom+xml' href='http://syprog.blogspot.com/feeds/5770230783411246203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://syprog.blogspot.com/2026/06/the-wrong-guarantee.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/5770230783411246203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/5770230783411246203'/><link rel='alternate' type='text/html' href='http://syprog.blogspot.com/2026/06/the-wrong-guarantee.html' title='The Wrong Guarantee'/><author><name>Alexey Lyashko</name><uri>http://www.blogger.com/profile/13663908781307440762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-650001352631255056.post-8513419614713487357</id><published>2018-08-17T20:55:00.002+02:00</published><updated>2018-08-18T11:09:50.480+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="assembly language"/><category scheme="http://www.blogger.com/atom/ns#" term="basics"/><category scheme="http://www.blogger.com/atom/ns#" term="flat assembler"/><category scheme="http://www.blogger.com/atom/ns#" term="hardware platform"/><category scheme="http://www.blogger.com/atom/ns#" term="low level development"/><category scheme="http://www.blogger.com/atom/ns#" term="system internals"/><category scheme="http://www.blogger.com/atom/ns#" term="system prorgamming"/><title type='text'>Idea for a New Book on x86 Assembly</title><summary type="text">

Good time of the day, my dear readers!





It has [again] been too long since my last post - I admit the guilt. This time of silence, however, was not spent in vain. I have collected much more knowledge, gained much more experience and, as a result, have much more to share with you in a hope that it will be useful.








I always wanted to write a book on Intel Assembly language (&quot;Mastering </summary><link rel='replies' type='application/atom+xml' href='http://syprog.blogspot.com/feeds/8513419614713487357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://syprog.blogspot.com/2018/08/idea-for-new-book-on-x86-assembly.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/8513419614713487357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/8513419614713487357'/><link rel='alternate' type='text/html' href='http://syprog.blogspot.com/2018/08/idea-for-new-book-on-x86-assembly.html' title='Idea for a New Book on x86 Assembly'/><author><name>Alexey Lyashko</name><uri>http://www.blogger.com/profile/13663908781307440762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-650001352631255056.post-1865063014657214925</id><published>2018-03-17T18:48:00.001+02:00</published><updated>2018-03-17T18:48:48.361+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="basics"/><category scheme="http://www.blogger.com/atom/ns#" term="C"/><category scheme="http://www.blogger.com/atom/ns#" term="pointers"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="programming technique"/><title type='text'>Pointers in C (demystified)</title><summary type="text">


I have
recently realized that I have not been posting here for almost precisely two years,
which is an unforgivable pause for a blogger. Hope my readers would forgive me
this. Thinking of what I should write about next, I realized that I have entirely forgotten about an essential thing. The thing, I would probably
say. Which is, it is not only what I want to write about, but also what my
</summary><link rel='replies' type='application/atom+xml' href='http://syprog.blogspot.com/feeds/1865063014657214925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://syprog.blogspot.com/2018/03/pointers-in-c-demystified.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/1865063014657214925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/1865063014657214925'/><link rel='alternate' type='text/html' href='http://syprog.blogspot.com/2018/03/pointers-in-c-demystified.html' title='Pointers in C (demystified)'/><author><name>Alexey Lyashko</name><uri>http://www.blogger.com/profile/13663908781307440762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-650001352631255056.post-3472059765981460601</id><published>2018-03-12T22:49:00.000+02:00</published><updated>2018-03-12T22:49:40.437+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="advanced programming technique"/><category scheme="http://www.blogger.com/atom/ns#" term="assembly language"/><category scheme="http://www.blogger.com/atom/ns#" term="dynamic encryption"/><category scheme="http://www.blogger.com/atom/ns#" term="emulator"/><category scheme="http://www.blogger.com/atom/ns#" term="flat assembler"/><category scheme="http://www.blogger.com/atom/ns#" term="kernel module"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><title type='text'>&quot;Mastering Assembly Programming&quot; - the review</title><summary type="text">

I have recently been contacted by one of my respected readers, who has not only purchased the book but also offered to write a review once he is done reading it. Given the fact that, by now, I have not received much feedback on the book at all, I agreed, although felt a bit uncomfortable. After all, this is my first book and the only reviews I saw this far were those written by the editorial </summary><link rel='replies' type='application/atom+xml' href='http://syprog.blogspot.com/feeds/3472059765981460601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://syprog.blogspot.com/2018/03/mastering-assembly-programming-review.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/3472059765981460601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/3472059765981460601'/><link rel='alternate' type='text/html' href='http://syprog.blogspot.com/2018/03/mastering-assembly-programming-review.html' title='&quot;Mastering Assembly Programming&quot; - the review'/><author><name>Alexey Lyashko</name><uri>http://www.blogger.com/profile/13663908781307440762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-650001352631255056.post-4061963671140377070</id><published>2017-09-27T23:43:00.003+02:00</published><updated>2017-09-27T23:43:40.007+02:00</updated><title type='text'>My First Book is Out</title><summary type="text">
Dear readers,

this post is going to be just a few lines long. After a long period of silence, the first thing I am going to do is announce the publishing of my first book &quot;Mastering Assembly Programming&quot;, which you may find here.

Please do not judge too hard. It is, after all, my first one :)

P.S. I have been too quiet for too long. Will post another article in a day or too.
</summary><link rel='replies' type='application/atom+xml' href='http://syprog.blogspot.com/feeds/4061963671140377070/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://syprog.blogspot.com/2017/09/my-first-book-is-out.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/4061963671140377070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/4061963671140377070'/><link rel='alternate' type='text/html' href='http://syprog.blogspot.com/2017/09/my-first-book-is-out.html' title='My First Book is Out'/><author><name>Alexey Lyashko</name><uri>http://www.blogger.com/profile/13663908781307440762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-650001352631255056.post-5088265610329748039</id><published>2015-04-03T00:08:00.000+02:00</published><updated>2017-09-18T00:26:09.150+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="64 bit"/><category scheme="http://www.blogger.com/atom/ns#" term="advanced programming technique"/><category scheme="http://www.blogger.com/atom/ns#" term="assembly language"/><category scheme="http://www.blogger.com/atom/ns#" term="kernel"/><category scheme="http://www.blogger.com/atom/ns#" term="kernel module"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="low level development"/><category scheme="http://www.blogger.com/atom/ns#" term="system internals"/><category scheme="http://www.blogger.com/atom/ns#" term="system prorgamming"/><title type='text'>Linux Loadable Kernel Module in Assembly</title><summary type="text">

Hello everyone! First of all, sorry for being silent for the last two years. There have been certain reasons for this. Anyway, I am back and I am going to share a portion of what I&#39;ve learnt over this period.



Before I begin, as usual, a note for nerds: the code in this article is for demonstration purposes only and does not contain certain things, like error checking, that would otherwise be</summary><link rel='replies' type='application/atom+xml' href='http://syprog.blogspot.com/feeds/5088265610329748039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://syprog.blogspot.com/2015/04/linux-loadable-kernel-module-in-assembly.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/5088265610329748039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/5088265610329748039'/><link rel='alternate' type='text/html' href='http://syprog.blogspot.com/2015/04/linux-loadable-kernel-module-in-assembly.html' title='Linux Loadable Kernel Module in Assembly'/><author><name>Alexey Lyashko</name><uri>http://www.blogger.com/profile/13663908781307440762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-650001352631255056.post-1017134613268517255</id><published>2013-01-10T15:37:00.000+03:00</published><updated>2013-01-10T15:48:03.622+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="advanced programming technique"/><category scheme="http://www.blogger.com/atom/ns#" term="evolution"/><category scheme="http://www.blogger.com/atom/ns#" term="expert systems"/><category scheme="http://www.blogger.com/atom/ns#" term="genetic algorithm"/><category scheme="http://www.blogger.com/atom/ns#" term="genetic programming"/><category scheme="http://www.blogger.com/atom/ns#" term="optimization"/><category scheme="http://www.blogger.com/atom/ns#" term="quadratic equation"/><title type='text'>Genetic Algorithms. Lame Example - Solving Quadratic Equation</title><summary type="text">

Source code to this article may be found here.

There are numerous resources on the Internet, that provide description of the theory of Genetic Algorithms and theoretical explanation thereof. I, however, have found a bit more then none giving a real example (I may have not searched that good, though). Therefore, I decided to try and implement the theory into a live example. While there are </summary><link rel='replies' type='application/atom+xml' href='http://syprog.blogspot.com/feeds/1017134613268517255/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://syprog.blogspot.com/2013/01/genetic-algorithms-lame-example-solving.html#comment-form' title='30 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/1017134613268517255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/1017134613268517255'/><link rel='alternate' type='text/html' href='http://syprog.blogspot.com/2013/01/genetic-algorithms-lame-example-solving.html' title='Genetic Algorithms. Lame Example - Solving Quadratic Equation'/><author><name>Alexey Lyashko</name><uri>http://www.blogger.com/profile/13663908781307440762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPNExJiSq-iX3WWAIKebQWI6zkBZMfinu5kiZeJcd7bkslQWuj4BZIpH3YozaC_kSt9vy2_NC96_YLB0m7dGfUwhD1DtPruqrkg_dIHXwSw39JKDpcto6ynhKBmzjbCLzPM9eWz5aplSFz/s72-c/Values+history.png" height="72" width="72"/><thr:total>30</thr:total></entry><entry><id>tag:blogger.com,1999:blog-650001352631255056.post-5200386433399866210</id><published>2012-10-22T17:20:00.001+03:00</published><updated>2012-10-26T13:21:15.503+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="advanced programming technique"/><category scheme="http://www.blogger.com/atom/ns#" term="analysis"/><category scheme="http://www.blogger.com/atom/ns#" term="anti piracy"/><category scheme="http://www.blogger.com/atom/ns#" term="C"/><category scheme="http://www.blogger.com/atom/ns#" term="code injection"/><category scheme="http://www.blogger.com/atom/ns#" term="CreateRemoteThread"/><category scheme="http://www.blogger.com/atom/ns#" term="dll injection"/><category scheme="http://www.blogger.com/atom/ns#" term="dump"/><category scheme="http://www.blogger.com/atom/ns#" term="enumerate threads"/><category scheme="http://www.blogger.com/atom/ns#" term="exception handling"/><title type='text'>Exception Driven &quot;Debugging&quot;: Getting behind anti debugging tricks.</title><summary type="text">

Of course, every debugging is exception driven. At least because a breakpoint generates debug exception wich is passed to debugger. In this article, however, I will refer to regular exceptions.



There are tens if not hundreds of software protectors used by software vendors around the globe. Some are good, some are less good, in either case, vendors rarely use them in a proper way, thinking </summary><link rel='replies' type='application/atom+xml' href='http://syprog.blogspot.com/feeds/5200386433399866210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://syprog.blogspot.com/2012/10/exception-driven-debugging-getting.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/5200386433399866210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/5200386433399866210'/><link rel='alternate' type='text/html' href='http://syprog.blogspot.com/2012/10/exception-driven-debugging-getting.html' title='Exception Driven &quot;Debugging&quot;: Getting behind anti debugging tricks.'/><author><name>Alexey Lyashko</name><uri>http://www.blogger.com/profile/13663908781307440762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-650001352631255056.post-5187030264380644289</id><published>2012-08-31T20:35:00.000+03:00</published><updated>2012-08-31T20:35:37.230+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="advanced programming technique"/><category scheme="http://www.blogger.com/atom/ns#" term="emulator"/><category scheme="http://www.blogger.com/atom/ns#" term="hardware emulation"/><category scheme="http://www.blogger.com/atom/ns#" term="hardware platform"/><category scheme="http://www.blogger.com/atom/ns#" term="memory management"/><category scheme="http://www.blogger.com/atom/ns#" term="virtual machine"/><title type='text'>Emulation of Hardware. CPU &amp; Memory</title><summary type="text">

There are tens of hardware platforms (although, some people would say that there is only one - computer ;-) ). Each one has its own advantages over others and disadvantages as well. For example Intel is the most used platform for desktops, ARM and MIPS are widely used in embedded systems and so on. Sometimes, a need may arise to test/debug executable code written for platform other then the one</summary><link rel='replies' type='application/atom+xml' href='http://syprog.blogspot.com/feeds/5187030264380644289/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://syprog.blogspot.com/2012/08/emulation-of-hardware-cpu-memory.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/5187030264380644289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/5187030264380644289'/><link rel='alternate' type='text/html' href='http://syprog.blogspot.com/2012/08/emulation-of-hardware-cpu-memory.html' title='Emulation of Hardware. CPU &amp; Memory'/><author><name>Alexey Lyashko</name><uri>http://www.blogger.com/profile/13663908781307440762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-650001352631255056.post-7453853235641373965</id><published>2012-05-30T04:36:00.000+03:00</published><updated>2012-05-30T15:32:33.361+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="advanced programming technique"/><category scheme="http://www.blogger.com/atom/ns#" term="assembly language"/><category scheme="http://www.blogger.com/atom/ns#" term="code injection"/><category scheme="http://www.blogger.com/atom/ns#" term="CreateRemoteThread"/><category scheme="http://www.blogger.com/atom/ns#" term="dll injection"/><category scheme="http://www.blogger.com/atom/ns#" term="enumerate threads"/><category scheme="http://www.blogger.com/atom/ns#" term="suspend thread"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows 7"/><category scheme="http://www.blogger.com/atom/ns#" term="windows internals"/><title type='text'>CreateRemoteThread. Bypass Windows 7 Session Separation</title><summary type="text">

Internet is full of programmers&#39; forums and those forums are full with questions about CreateRemoteThread Windows API function not working on Windows 7 (when trying to inject a DLL). Those posts made by lucky people, somehow, redirect you to the MSDN page dedicated to this API, which says: &quot;Terminal Services isolates each terminal session by design. Therefore,&amp;nbsp;CreateRemoteThread&amp;nbsp;fails</summary><link rel='replies' type='application/atom+xml' href='http://syprog.blogspot.com/feeds/7453853235641373965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://syprog.blogspot.com/2012/05/createremotethread-bypass-windows.html#comment-form' title='18 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/7453853235641373965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/7453853235641373965'/><link rel='alternate' type='text/html' href='http://syprog.blogspot.com/2012/05/createremotethread-bypass-windows.html' title='CreateRemoteThread. Bypass Windows 7 Session Separation'/><author><name>Alexey Lyashko</name><uri>http://www.blogger.com/profile/13663908781307440762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-650001352631255056.post-970124730316936988</id><published>2012-05-23T18:57:00.000+03:00</published><updated>2012-05-23T22:47:52.785+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="advanced programming technique"/><category scheme="http://www.blogger.com/atom/ns#" term="assembly language"/><category scheme="http://www.blogger.com/atom/ns#" term="event handler"/><category scheme="http://www.blogger.com/atom/ns#" term="exception handling"/><category scheme="http://www.blogger.com/atom/ns#" term="framework"/><category scheme="http://www.blogger.com/atom/ns#" term="low level development"/><category scheme="http://www.blogger.com/atom/ns#" term="software protection"/><category scheme="http://www.blogger.com/atom/ns#" term="system call"/><category scheme="http://www.blogger.com/atom/ns#" term="system prorgamming"/><category scheme="http://www.blogger.com/atom/ns#" term="virtual machine"/><title type='text'>Passing Events to a Virtual Machine</title><summary type="text">

The source code for this article may be found here.


Virtual machines and Software Frameworks are an initial part of our digital life. There are complex VM and simple Software Frameworks. These two articles (Simple Virtual Machine and Simple Runtime Framework by Example) show how easy it may be to implement one yourself. I did my best to describe the way VM code may interact with native code </summary><link rel='replies' type='application/atom+xml' href='http://syprog.blogspot.com/feeds/970124730316936988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://syprog.blogspot.com/2012/05/passing-events-to-virtual-machine.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/970124730316936988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/970124730316936988'/><link rel='alternate' type='text/html' href='http://syprog.blogspot.com/2012/05/passing-events-to-virtual-machine.html' title='Passing Events to a Virtual Machine'/><author><name>Alexey Lyashko</name><uri>http://www.blogger.com/profile/13663908781307440762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAtESwKxjYXFV0nIV-yvp7eIIg84sz5fn36OjM2KUyjwlHIbb9JgOwCdr_KCAFqAgs_5P68VwrZSXlMCUo_PvfPY_-sNPEEssiPfECiMGClX_8KxSa3PhaF4lyRNz3F1tO-7sVo98Lcflo/s72-c/complex_layout.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-650001352631255056.post-2341217846458134951</id><published>2012-05-19T17:53:00.001+03:00</published><updated>2012-05-20T22:55:54.398+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="advanced programming technique"/><category scheme="http://www.blogger.com/atom/ns#" term="anti piracy"/><category scheme="http://www.blogger.com/atom/ns#" term="assembly language"/><category scheme="http://www.blogger.com/atom/ns#" term="code obfuscation"/><category scheme="http://www.blogger.com/atom/ns#" term="data obfuscation"/><category scheme="http://www.blogger.com/atom/ns#" term="framework"/><category scheme="http://www.blogger.com/atom/ns#" term="obfuscation"/><category scheme="http://www.blogger.com/atom/ns#" term="protectors"/><category scheme="http://www.blogger.com/atom/ns#" term="system prorgamming"/><category scheme="http://www.blogger.com/atom/ns#" term="virtual machine"/><title type='text'>Simple Runtime Framework by Example</title><summary type="text">

Source code for this article may be found here.



These days we are simply surrounded by different software frameworks. Just to name a few: Java, .Net and, actually, many more. Have you ever wondered how those work or have you ever wanted or needed to implement one? In this article, I will cover a simple or even trivial runtime framework.



As usual - note for nerds:

The source code given in</summary><link rel='replies' type='application/atom+xml' href='http://syprog.blogspot.com/feeds/2341217846458134951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://syprog.blogspot.com/2012/05/simple-runtime-framework-by-example.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/2341217846458134951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/2341217846458134951'/><link rel='alternate' type='text/html' href='http://syprog.blogspot.com/2012/05/simple-runtime-framework-by-example.html' title='Simple Runtime Framework by Example'/><author><name>Alexey Lyashko</name><uri>http://www.blogger.com/profile/13663908781307440762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWj5XLdoMdQ5Xu4WYu9nsF03yElGSrrnqBDOujBUVypdqu_TpcpS2e2C25GpcQWoLHz_fTezfQKxupNvByxEaJNUszwJag7EVXbs4zAsQerSvKEeWzXc877SfqfH1n8Kykb9vuM4l6-pTi/s72-c/diagram1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-650001352631255056.post-6089582670241903286</id><published>2012-05-17T22:30:00.000+03:00</published><updated>2012-05-17T22:30:56.281+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="advanced programming technique"/><category scheme="http://www.blogger.com/atom/ns#" term="anti piracy"/><category scheme="http://www.blogger.com/atom/ns#" term="assembly language"/><category scheme="http://www.blogger.com/atom/ns#" term="code obfuscation"/><category scheme="http://www.blogger.com/atom/ns#" term="data obfuscation"/><category scheme="http://www.blogger.com/atom/ns#" term="encryption"/><category scheme="http://www.blogger.com/atom/ns#" term="obfuscation"/><title type='text'>Basics of Data Obfuscation</title><summary type="text">

Source code for this article may be found here.

One of the aspects of software anti RE (reverse engineering) protection is the need to protect sensitive data (for example decryption or license keys, etc.) There is quite a common practice of storing such data in encrypted form and using it by passing to a certain routine for decryption. I am not going to say, that this is not a good idea, but </summary><link rel='replies' type='application/atom+xml' href='http://syprog.blogspot.com/feeds/6089582670241903286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://syprog.blogspot.com/2012/05/basics-of-data-obfuscation.html#comment-form' title='17 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/6089582670241903286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/6089582670241903286'/><link rel='alternate' type='text/html' href='http://syprog.blogspot.com/2012/05/basics-of-data-obfuscation.html' title='Basics of Data Obfuscation'/><author><name>Alexey Lyashko</name><uri>http://www.blogger.com/profile/13663908781307440762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-650001352631255056.post-499505521824553078</id><published>2012-03-21T23:40:00.001+03:00</published><updated>2012-03-22T03:20:20.661+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="64 bit"/><category scheme="http://www.blogger.com/atom/ns#" term="advanced programming technique"/><category scheme="http://www.blogger.com/atom/ns#" term="assembly language"/><category scheme="http://www.blogger.com/atom/ns#" term="code injection"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="ptrace"/><category scheme="http://www.blogger.com/atom/ns#" term="shared object"/><category scheme="http://www.blogger.com/atom/ns#" term="system prorgamming"/><category scheme="http://www.blogger.com/atom/ns#" term="threads"/><title type='text'>Linux Threads Through a Magnifier: Remote Threads</title><summary type="text">

Source code for this article may be found here.

Sometimes, a need may rise to start a thread in a separate process and the need is not necessarily malicious. For example, one may want to replace library functions or to place some code between the executable and a library function. However, Linux does not provide a system call that would do anything similar to CreateRemoteThread Windows API </summary><link rel='replies' type='application/atom+xml' href='http://syprog.blogspot.com/feeds/499505521824553078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://syprog.blogspot.com/2012/03/linux-threads-through-magnifier-remote.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/499505521824553078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/499505521824553078'/><link rel='alternate' type='text/html' href='http://syprog.blogspot.com/2012/03/linux-threads-through-magnifier-remote.html' title='Linux Threads Through a Magnifier: Remote Threads'/><author><name>Alexey Lyashko</name><uri>http://www.blogger.com/profile/13663908781307440762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIizdc7Ghuw5mEgGLpWgAra8irVRlgd3yyw2IDw7HQR42E1I9r7m1MJF8OSYRQkIi-0r0fKpT3iKWX2dTsMuomB5pGjFRZLfMcWjAQx7mz6K-Ss7FZqTGl7fbEX7raTrXvAa_bt-lavPLx/s72-c/injector_output.png" height="72" width="72"/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-650001352631255056.post-532390071115378573</id><published>2012-03-17T20:10:00.000+03:00</published><updated>2012-03-17T20:10:22.063+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="64 bit"/><category scheme="http://www.blogger.com/atom/ns#" term="advanced programming technique"/><category scheme="http://www.blogger.com/atom/ns#" term="assembly language"/><category scheme="http://www.blogger.com/atom/ns#" term="flat assembler"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="low level development"/><category scheme="http://www.blogger.com/atom/ns#" term="system call"/><category scheme="http://www.blogger.com/atom/ns#" term="system prorgamming"/><category scheme="http://www.blogger.com/atom/ns#" term="threads"/><title type='text'>Linux Threads Through a Magnifier: Local Threads</title><summary type="text">

Source code for this article is here.



Threads are everywhere. Even now, when you browse this page, threads are involved in the process. Most likely, you have more than one tab opened in the browser and each one has at least one thread associated with it. The server supplying this page runs several threads in order to serve multiple connections simultaneously. There may be unnumbered examples</summary><link rel='replies' type='application/atom+xml' href='http://syprog.blogspot.com/feeds/532390071115378573/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://syprog.blogspot.com/2012/03/linux-threads-through-magnifier-local.html#comment-form' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/532390071115378573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/532390071115378573'/><link rel='alternate' type='text/html' href='http://syprog.blogspot.com/2012/03/linux-threads-through-magnifier-local.html' title='Linux Threads Through a Magnifier: Local Threads'/><author><name>Alexey Lyashko</name><uri>http://www.blogger.com/profile/13663908781307440762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-650001352631255056.post-854000350051437736</id><published>2012-03-06T21:31:00.000+03:00</published><updated>2012-03-06T21:31:56.381+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="advanced programming technique"/><category scheme="http://www.blogger.com/atom/ns#" term="API export"/><category scheme="http://www.blogger.com/atom/ns#" term="API import"/><category scheme="http://www.blogger.com/atom/ns#" term="assembly language"/><category scheme="http://www.blogger.com/atom/ns#" term="dll injection"/><category scheme="http://www.blogger.com/atom/ns#" term="export table"/><category scheme="http://www.blogger.com/atom/ns#" term="fake dll"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="system internals"/><category scheme="http://www.blogger.com/atom/ns#" term="system prorgamming"/><category scheme="http://www.blogger.com/atom/ns#" term="windows internals"/><title type='text'>Faking KERNEL32.DLL - an Amateur Sandbox</title><summary type="text">

As a part of my work (read &quot;fun&quot;) of maintaining this blog, I am constantly checking the statistic information on traffic sources and keywords (it&#39;s nice to know that people are getting here via Google) in order to see whether my readers are getting what they are looking for (personally, I see no reason in simply &quot;streaming my consciousness to the masses&quot; as this is not the point of this blog).</summary><link rel='replies' type='application/atom+xml' href='http://syprog.blogspot.com/feeds/854000350051437736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://syprog.blogspot.com/2012/03/faking-kernel32dll-amateur-sandbox.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/854000350051437736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/854000350051437736'/><link rel='alternate' type='text/html' href='http://syprog.blogspot.com/2012/03/faking-kernel32dll-amateur-sandbox.html' title='Faking KERNEL32.DLL - an Amateur Sandbox'/><author><name>Alexey Lyashko</name><uri>http://www.blogger.com/profile/13663908781307440762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3ymU1aPzp0tc3M8TA-u6n4jbq6u-89gW1mdtrGTq2H0zbtbR2iAj0P95q-Y43AyQQb76zsabyCHdyixzTjJ0jRaruOSbn5daqj5zbFOFLrll-70xBA86gn0del0MZsCo936nQ5YC56JKQ/s72-c/fake.png" height="72" width="72"/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-650001352631255056.post-4127750591142619571</id><published>2012-03-04T19:41:00.000+03:00</published><updated>2012-03-04T19:41:14.828+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="64 bit"/><category scheme="http://www.blogger.com/atom/ns#" term="advanced programming technique"/><category scheme="http://www.blogger.com/atom/ns#" term="ann"/><category scheme="http://www.blogger.com/atom/ns#" term="artificial neural network"/><category scheme="http://www.blogger.com/atom/ns#" term="assembly language"/><category scheme="http://www.blogger.com/atom/ns#" term="flat assembler"/><category scheme="http://www.blogger.com/atom/ns#" term="information"/><category scheme="http://www.blogger.com/atom/ns#" term="low level development"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><title type='text'>Trivial Artificial Neural Network in Assembly Language</title><summary type="text">
Source code for this article may be found here.


Note for nerds: The code shown in this article may be incomplete and may not contain all the security checks you would usually perform in your code as it is given here for demonstration purposes only. Downloadable source code may contain bugs (there is no software without bugs at all). It is provided as is without any warranty. You may use and </summary><link rel='replies' type='application/atom+xml' href='http://syprog.blogspot.com/feeds/4127750591142619571/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://syprog.blogspot.com/2012/03/trivial-artificial-neural-network-in.html#comment-form' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/4127750591142619571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/4127750591142619571'/><link rel='alternate' type='text/html' href='http://syprog.blogspot.com/2012/03/trivial-artificial-neural-network-in.html' title='Trivial Artificial Neural Network in Assembly Language'/><author><name>Alexey Lyashko</name><uri>http://www.blogger.com/profile/13663908781307440762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNAzdbuN35qnbM24Iglt_T4er8Rh1YdSQjvCyvTjzoIFZ3TZz5Kd2DA_0_xRkCD2xsCPGsH-KinJN6UApeQVMYkaNSFhXuPwSYGOI0e7pZiqXVUI9VLORVSg8qZb7r5_9lNAaLtkITud0g/s72-c/linked_list.png" height="72" width="72"/><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-650001352631255056.post-2606748251413121408</id><published>2012-03-02T17:35:00.000+03:00</published><updated>2012-03-02T17:35:02.736+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="advanced programming technique"/><category scheme="http://www.blogger.com/atom/ns#" term="code injection"/><category scheme="http://www.blogger.com/atom/ns#" term="dump"/><category scheme="http://www.blogger.com/atom/ns#" term="enumerate threads"/><category scheme="http://www.blogger.com/atom/ns#" term="information"/><category scheme="http://www.blogger.com/atom/ns#" term="memory dump"/><category scheme="http://www.blogger.com/atom/ns#" term="packers"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="protectors"/><category scheme="http://www.blogger.com/atom/ns#" term="reverse"/><category scheme="http://www.blogger.com/atom/ns#" term="suspend thread"/><category scheme="http://www.blogger.com/atom/ns#" term="windows internals"/><title type='text'>Defeating Packers for Static Analysis of Malicious Code</title><summary type="text">

I doubt whether there is anybody in either AV industry or among reverse engineers who does not know what a software packer is (for those who don&#39;t - this article may help). Malware research and reverse engineering forums are full of packers&#39; related questions, descriptions thereof, unpacking suggestions and links to both packers and unpackers. In short - people have been doing a lot of precious</summary><link rel='replies' type='application/atom+xml' href='http://syprog.blogspot.com/feeds/2606748251413121408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://syprog.blogspot.com/2012/03/defeating-packers-for-static-analysis.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/2606748251413121408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/2606748251413121408'/><link rel='alternate' type='text/html' href='http://syprog.blogspot.com/2012/03/defeating-packers-for-static-analysis.html' title='Defeating Packers for Static Analysis of Malicious Code'/><author><name>Alexey Lyashko</name><uri>http://www.blogger.com/profile/13663908781307440762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-650001352631255056.post-1332944228832664834</id><published>2012-03-02T00:01:00.000+03:00</published><updated>2012-03-05T17:17:37.618+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="advanced programming technique"/><category scheme="http://www.blogger.com/atom/ns#" term="anti piracy"/><category scheme="http://www.blogger.com/atom/ns#" term="assembly language"/><category scheme="http://www.blogger.com/atom/ns#" term="code obfuscation"/><category scheme="http://www.blogger.com/atom/ns#" term="dynamic encryption"/><category scheme="http://www.blogger.com/atom/ns#" term="encryption"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="obfuscation"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="software protection"/><title type='text'>Dynamic Code Encryption as an Anti Dump and Anti Reverse Engineering measure</title><summary type="text">

Source code for this article may be found here.


There has been said and written too much on how software vendors do not protect their products, so let me skip this. Instead, in this article, I would like to concentrate on those relatively easy steps, which software vendors have to take in order to enhance their protection (using packers and protectors is good, but certainly not enough) by not</summary><link rel='replies' type='application/atom+xml' href='http://syprog.blogspot.com/feeds/1332944228832664834/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://syprog.blogspot.com/2012/03/dynamic-code-encryption-as-anti-dump.html#comment-form' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/1332944228832664834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/1332944228832664834'/><link rel='alternate' type='text/html' href='http://syprog.blogspot.com/2012/03/dynamic-code-encryption-as-anti-dump.html' title='Dynamic Code Encryption as an Anti Dump and Anti Reverse Engineering measure'/><author><name>Alexey Lyashko</name><uri>http://www.blogger.com/profile/13663908781307440762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCoX1muqG_uw_RySws2II5WlsAqFlpc-caFKQe-DeCt1b4B7lOs9LB8ubEzT1aO-kJ9YttHvSkxugjw7b8gC_Z0ylexs74kDroEhSf6rvoV14I5ktT_YGfNHAOAY2mKS5q0AA5TsQaEFg4/s72-c/encrypted.png" height="72" width="72"/><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-650001352631255056.post-642362464048843815</id><published>2012-02-29T22:05:00.000+03:00</published><updated>2012-02-29T22:05:01.176+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="advanced programming technique"/><category scheme="http://www.blogger.com/atom/ns#" term="exception handling"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="sigaction"/><category scheme="http://www.blogger.com/atom/ns#" term="signal"/><category scheme="http://www.blogger.com/atom/ns#" term="system internals"/><category scheme="http://www.blogger.com/atom/ns#" term="system prorgamming"/><category scheme="http://www.blogger.com/atom/ns#" term="vectored exception handling"/><category scheme="http://www.blogger.com/atom/ns#" term="windows internals"/><title type='text'>Vectored Exception Handling for Linux</title><summary type="text">

Source code for this article may be found here.





The title of this article may look weird. In deed, why would someone want to use Vectored Exception Handling in Linux, while this OS provides a perfectly working mechanism - signals? Well, there are several possible answers:


Many programmers, who started their career with Windows programming, are getting a bit frustrated when it comes to </summary><link rel='replies' type='application/atom+xml' href='http://syprog.blogspot.com/feeds/642362464048843815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://syprog.blogspot.com/2012/02/vectored-exception-handling-for-linux.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/642362464048843815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/642362464048843815'/><link rel='alternate' type='text/html' href='http://syprog.blogspot.com/2012/02/vectored-exception-handling-for-linux.html' title='Vectored Exception Handling for Linux'/><author><name>Alexey Lyashko</name><uri>http://www.blogger.com/profile/13663908781307440762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkEpUb5ycvXN67HXQc30lGSrhdz7Z26Mrd_M35_kviwXTKCYAf5XTGljj5X20LTsgdeaxzZ8i9n7Mste2XDxu0IN6cZkPweUvtaOgrr-mrBll8Alfem9eWyxuhz7J8VpXAy8h1hfWPQP8X/s72-c/veh_h_1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-650001352631255056.post-2345998786235988403</id><published>2012-02-27T18:42:00.000+03:00</published><updated>2012-02-29T16:37:07.175+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="advanced programming technique"/><category scheme="http://www.blogger.com/atom/ns#" term="anti piracy"/><category scheme="http://www.blogger.com/atom/ns#" term="assembly language"/><category scheme="http://www.blogger.com/atom/ns#" term="code obfuscation"/><category scheme="http://www.blogger.com/atom/ns#" term="low level development"/><category scheme="http://www.blogger.com/atom/ns#" term="software protection"/><title type='text'>Basics of Executable Code Obfuscation</title><summary type="text">

Source code for this article may be found here.


The problem of software security has already been raised in my previous articles more that once. This article is not an exception.&amp;nbsp;



Majority of software vendors position themselves as number one in the industry, even though there are always more then 1 number 1. But what unites them all (well, almost all) in reality, it the fact that </summary><link rel='replies' type='application/atom+xml' href='http://syprog.blogspot.com/feeds/2345998786235988403/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://syprog.blogspot.com/2012/02/basics-of-executable-code-obfuscation.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/2345998786235988403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/2345998786235988403'/><link rel='alternate' type='text/html' href='http://syprog.blogspot.com/2012/02/basics-of-executable-code-obfuscation.html' title='Basics of Executable Code Obfuscation'/><author><name>Alexey Lyashko</name><uri>http://www.blogger.com/profile/13663908781307440762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjco2lZtg58Qq3ccFve8EAJBzkCpEFryCkUIcdjYIbJaCkPNB0WpD5VIZz6uc4rfA3UqcY1nZG8wWzXSFWJgejy5sNX0yOVDhbkrckhD2iBaCEX8mV7b-AW0ubiUw6ygKrWbOSdyYgKHorg/s72-c/obfuscated_main.png" height="72" width="72"/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-650001352631255056.post-2175929236870449590</id><published>2011-12-25T01:50:00.000+03:00</published><updated>2011-12-25T01:50:29.107+03:00</updated><title type='text'>Merry Christmas!</title><summary type="text">


</summary><link rel='replies' type='application/atom+xml' href='http://syprog.blogspot.com/feeds/2175929236870449590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://syprog.blogspot.com/2011/12/merry-christmas.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/2175929236870449590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/2175929236870449590'/><link rel='alternate' type='text/html' href='http://syprog.blogspot.com/2011/12/merry-christmas.html' title='Merry Christmas!'/><author><name>Alexey Lyashko</name><uri>http://www.blogger.com/profile/13663908781307440762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-650001352631255056.post-4385184818371876682</id><published>2011-12-22T01:16:00.000+03:00</published><updated>2011-12-25T16:18:43.991+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="advanced programming technique"/><category scheme="http://www.blogger.com/atom/ns#" term="assembly language"/><category scheme="http://www.blogger.com/atom/ns#" term="flat assembler"/><category scheme="http://www.blogger.com/atom/ns#" term="low level development"/><category scheme="http://www.blogger.com/atom/ns#" term="software protection"/><category scheme="http://www.blogger.com/atom/ns#" term="virtual machine"/><title type='text'>Simple Virtual Machine</title><summary type="text">

Sample code for this article may be found here.

In computing, Virtual Machine (VM) is a software implementation of either existing or a fictional hardware platform. &amp;nbsp;VM&#39;s are generally divided into two classes - system VM (VM which is capable of running an operating system) and process VM (the one that only can run one executable, roughly saying). Anyway, if you are just interested in the</summary><link rel='replies' type='application/atom+xml' href='http://syprog.blogspot.com/feeds/4385184818371876682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://syprog.blogspot.com/2011/12/simple-virtual-machine.html#comment-form' title='21 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/4385184818371876682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/4385184818371876682'/><link rel='alternate' type='text/html' href='http://syprog.blogspot.com/2011/12/simple-virtual-machine.html' title='Simple Virtual Machine'/><author><name>Alexey Lyashko</name><uri>http://www.blogger.com/profile/13663908781307440762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0Zi5L2S6duMMdJXr6ZNnQ3GsF7P27rOJbZnry_CnhoDJL3Z3_hbNz0FbqpBM8FOHkREa2tjsE-QXHYlYgp1n1PSDikeM77r471cRS2wtGKWddsHRsx-hG1fLN05QfPA93RGjwHmNbQmP-/s72-c/asm_constants.png" height="72" width="72"/><thr:total>21</thr:total></entry><entry><id>tag:blogger.com,1999:blog-650001352631255056.post-1551666526496328776</id><published>2011-12-19T21:57:00.000+03:00</published><updated>2011-12-19T21:57:04.928+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="advanced programming technique"/><category scheme="http://www.blogger.com/atom/ns#" term="EnumProcessModules"/><category scheme="http://www.blogger.com/atom/ns#" term="information"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="low level development"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="shared object"/><category scheme="http://www.blogger.com/atom/ns#" term="system internals"/><category scheme="http://www.blogger.com/atom/ns#" term="system prorgamming"/><title type='text'>Listing Loaded Shared Objects in Linux</title><summary type="text">
I have recently come across several posts on the Internet where guys keep asking for Linux analogs of Windows API. One of the most frequent one is something like &quot;EnumProcessModules for Linux&quot;. As usual, most of the replies are looking like &quot;why do you need that?&quot; or &quot;Linux is not Windows&quot;. Although, the last one is totally true, it is completely useless. As to &quot;why do you need that?&quot; - why do </summary><link rel='replies' type='application/atom+xml' href='http://syprog.blogspot.com/feeds/1551666526496328776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://syprog.blogspot.com/2011/12/listing-loaded-shared-objects-in-linux.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/1551666526496328776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/1551666526496328776'/><link rel='alternate' type='text/html' href='http://syprog.blogspot.com/2011/12/listing-loaded-shared-objects-in-linux.html' title='Listing Loaded Shared Objects in Linux'/><author><name>Alexey Lyashko</name><uri>http://www.blogger.com/profile/13663908781307440762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-650001352631255056.post-8157141856964186563</id><published>2011-12-16T00:50:00.001+03:00</published><updated>2012-09-16T15:05:21.887+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="advanced programming technique"/><category scheme="http://www.blogger.com/atom/ns#" term="code injection"/><category scheme="http://www.blogger.com/atom/ns#" term="dll injection"/><category scheme="http://www.blogger.com/atom/ns#" term="information"/><category scheme="http://www.blogger.com/atom/ns#" term="low level development"/><category scheme="http://www.blogger.com/atom/ns#" term="obfuscation"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="software protection"/><category scheme="http://www.blogger.com/atom/ns#" term="system prorgamming"/><category scheme="http://www.blogger.com/atom/ns#" term="windows internals"/><title type='text'>Executable Code Injection the Interesting Way</title><summary type="text">

So. Executable code injection. In general, this term is associated with malicious intent. It is true in many cases, but in, at least, as many, it is not. Being malware researcher for the most of my career, I can assure you, that this technique appears to be very useful when researching malicious software, as it allows (in most cases) to defeat its protection and gather much of the needed </summary><link rel='replies' type='application/atom+xml' href='http://syprog.blogspot.com/feeds/8157141856964186563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://syprog.blogspot.com/2011/12/executable-code-injection-interesting.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/8157141856964186563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/650001352631255056/posts/default/8157141856964186563'/><link rel='alternate' type='text/html' href='http://syprog.blogspot.com/2011/12/executable-code-injection-interesting.html' title='Executable Code Injection the Interesting Way'/><author><name>Alexey Lyashko</name><uri>http://www.blogger.com/profile/13663908781307440762</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9NSLBBNWxXvFnKCSegOwyD1y1dVPGEoLp2r_GZw219m2Z1kIIlihgecHxNsjaqC0AAsdkKq2o72jwyM7pflf6vLjSzky1PXRM5Te0froW7izRyUCvtyOToSutA37MsehXcyQHvetcGKu2/s72-c/layout.png" height="72" width="72"/><thr:total>2</thr:total></entry></feed>