Developers Club geek daily blog

Steam CEG from Valve and what it is eaten with. Introduction

1 year ago

It is a little determinations

CEG (Custom Executable Generation, Russian. Generation of the Unique Performed File) — a security feature from piracy (it is as if paradoxical did not sound), developed by the great and awful company Valve in 2009. It was initially planned that the new security feature will be used nearly at each game released in Steam. However, having reviewed the priorities, the Valve company understood that if the potential developer wants to use such 'happiness' in newly made game, then it would be desirable to pay also not the cheap price. Therefore, historically it developed that CEG is used only by the large companies which are able to afford it.
The essence of this protection consists in the following: as soon as the downloading game from service of digital distribution Steam comes to an end, on the personal computer of the client the "naked", not signed yet performed file is loaded. Then, on the same client computer, the digital certificate and by means of special library SteamServices.dll (which loading, is by the way, made in TEMP) is loaded and a special key with AES the mentioned performed file is signed by enciphering above.

Actually, fast review of protection

"And what then practical value of such 'protection' if it only also does what just signs the performed file?" — you ask. And here I will answer — not everything so simply as it seems at first sight. The matter is that when drawing the digital signature on the file, information on folders and files which are present at client system, and also some iron gathers. In an effect, collected information, also finds the place in the performed file. And this information will be really unique as the following components are considered: a time stamp of files and folders in unix style (date of creation, last modification date), unique keys of the register (and also check whether the client of Steam is installed on the PC, by means of the same orthodox register), the number of files in the set directory, the ID processor, serial number of the hard drive. It should be noted that the last two — are used only in the latest CEG versions (for example, such games as: XCOM: Enemy Within, Grid Autosport, DiRT Rally).


So, what we have — a such binding of the 'unique' performed file to iron and files of the client PC. Well it or is bad? In general — good idea and implementation. Minus in all this if, let us assume, you went to the dacha to friends and took with themselves a complete backup of favourite game with this CEG, having reset it on the portable carrier and hoping that you will be able quietly to play. But there was unexpected — the Internet does not work for the friend! But on the notebook Steam is set. It does not matter, you do recovery of a backup embroider games in the offline Steam mode, you click "to Play", but nothing occurs! And all because iron and other components about which it was written above do not match iron of your friend. And without access to a wide area network, at you just it will not turn out to start in any way game as for obvious reasons it is impossible to generate the new performed file. Or it is possible to start the performed file after all?
In the following part of article the speech about whether it is possible to disaccustom completely to CEG the performed file will go, having near at hand a debugger and software development environment (A Visual Studio, for example).
Whether it was interesting to you to learn about the CEG technology?

132 persons voted. 33 persons refrained.

The users only registered can participate in poll. Enter, please.

Read more »

Rising of a razrabotchikonomika (termination)

1 year ago
(beginning of article here)

Risk management at investment into programmer talents

On the other hand — this effect has no name; perhaps, it should be named "desyatikradnichestvo"bad developers will cost to you not insignificant deterioration in labor productivity. No, for a number of the hardly perceptible reasons they are capable to sabotage complex program system catastrophically. The bad developer who constructed threateningly complete of errors or worse than ever the designed system in its basis planted the ticking time bomb and to rake ruins after it jerks, attachments will be required, it is thousandfold exceeding saved on start. Worse than that, work on removal of debris will demand attraction of efforts of much bigger number of good developers, and on more progressive tense.

In this moment software development is the complete antithesis to other industries — we will tell, space — in which incompetence and gross errors are much more obvious; it is easier to find and correct them at early stages until the cost of such correction grew to heaven yet. (Like construction of the airplane in which during real operation fatal defect was found) also much easier to hold the delayed crises from distribution, to isolate and correct.

Read more »

Sociology of algorithms: As the financial markets and high-frequency trade (Part 2) are connected

1 year ago

Earlier we published in our blog first partresearches of sociology of financial algorithms executed by professor of the Higher school of social sciences of Edinburgh of Donald Mackenzie. Today we present to yours continuation of this interesting work — in the second part it is about different types of HFT requests, dark-pools and the connected ekologiya of the financial markets.

Read more »

The overview of an example of application of training with a reinforcement with use of TensorFlow

1 year ago
КПДВ. В Karpathy game играет нейронная сеть

Hi everyone!
I think that many heard about Google DeepMind. About that as they train programs to play the games Atari better than the person. Today I want to provide you article about how to make something similar. This article is an overview of idea and a code of an example of application Q-learning which is a special case of training with a reinforcement. The example is based on article of employees of Google DeepMind.

Read more »

It is a little sugar in combination theory

1 year ago
Hello, habr!

Each programmer respecting himself knows that deep enclosure — bad style. But there are algorithms which are implemented by the cascade of nested loops (3 and more). In this article I want to tell how it is possible to cope with a problem of nested loops at search of combinations in favourite language D.

Read more »

PROLOG for programmers

1 year ago
Language of logical programming PROLOG (further – the PROLOGUE) is represented to most of programmers something confused and of little use for practical application. At the same time, the Internet is based on the symbolic information therefore practically all modern programmers face need to process character data structures, and for this purpose and language of logical programming the PROLOGUE is intended. This language – ideal for work with character structures, text files and for creation of intellectual programs.

Read more »

Results of the 2015th year for C ++

1 year ago
Perhaps, I will tell a banal thing, but last year was good year for With ++!

Just facts:
  • There was a Visual Studio of 2015 with excellent support of opportunities With ++ 14/17 and even several experimental things
  • There was long-awaited GCC 5.0
  • With ++ gained serious popularity. Somewhere since July — the third place in Tiobe Ranking
  • At the CppCon 2015 conference several important announcements were made

And now about this and another is a little more detailed

Read more »

Some modern approaches in the field of natural languag processing

1 year ago
The results of scientific researches received in recent years in problems of voice recognition [1], machine translation [2], determination of a shade of the sentence [3] and word classes [4] showed prospects of neural network algorithms of deep learning in comparison with classical methods of natural languag processing (natural language processing). However, in the field of question-answer and dialogue systems still there are many unresolved tasks [5, 6]. In this article the overview of results of application of modern algorithms for problems of processing and a natural language understanding is given. The overview contains the description of several different approaches and does not apply for completeness of researches.

Human: how many legs does a cat have?
Machine: four, i think.
Human: What do you think about messi?
Machine: he ’s a great player.
Human: where are you now?
Machine: i ’m in the middle of nowhere.

(from article A Neural Conversational Model. KDPV from the movie Ex Machina)

Read more »

Creation of function on Rust which returns String or &str;

1 year ago

From the translator

КДПВ It is the last article from a cycle about work with lines and memory in Rust from Herman Radtke which I transport. Me it seemed to the most useful, and initially I wanted to begin transfer with it, but then it seemed to me that other articles in a series are necessary too, for creation of a context and introduction to simpler, but very important, the language moments without which this article loses the usefulness.

We learned how to create function which accepts String or &str; (English) as argument. Now I want to show you how to create function which returns String or &str;. Still I want to discuss why it can be necessary for us.

Read more »

De-anonymization of the programmer is possible not only through the source code, but also through the compiled binary file

1 year ago
It is no secret that many software developers open source and not only, for various reasons wish to save the anonymity. Quite recently the group of researchers published work in which methods of de-anonymization of the programmer on its coding style through the analysis of source codes are described. Authors claim that to them the medium accuracy of identification managed to reach in 94%.

By means of creation of abstract syntax trees on the basis of analysis of a source text, they managed to select steady distinguishers when writing a code which are difficult for hiding even purposefully. Using machine learning and a set evristik, it was succeeded to achieve the impressive accuracy of determination of authorship among selection of 1600 Google Code Jam programmers.

In the new work, researchers showed that de-anonymization is possible also through the analysis of already compiled binary files in lack of source codes (video of the presentation of the report). This time for research source codes of 600 participants of Google Code Jam which were compiled in the performed files were used, and then were exposed to analysis. Thanks to the fact that tasks at competitions were identical to all the difference of files consisted substantially in programming style, but not in algorithm. Initially, at assembly of binary files were disconnected optimization of the compiler and the obfuskation of source codes was not applied. But, according to authors of work, some distinguishers remain also at application of these methods of concealment of authorship, reducing de-anonymization accuracy to 65%.

Read more »