Hi Guglielmo,

> Am 14.09.2015 um 10:14 schrieb Guglielmo Braguglia <guglie...@braguglia.ch>:
> 
> Hi Matthias,
> I see that "Receigen" is still updated and, probably, is one of the best 
> tools.
> 
> About the described procedure and how to make the OS X external ... I don't 
> know, I don't have tested with last versions of OS X and Xcode. So ... try 
> and let we know :)
> 
The reason why i asked was to avoid buying receigen.app and then finding out 
that it does not work anymore. 

But i will take the risk and will let you know. 



Regards,

Matthias


> Guglielmo
> 
>> Matthias Rebbe | M-R-D <mailto:matthias_livecode_150...@m-r-d.de>
>> 13 Sep 2015 23:32 pm
>> Hi,
>> 
>> is this still the recommended way to integrate a validation? Or are the 
>> information and the recommended tools and downloads outdated?
>> 
>> Regards,
>> 
>> Matthias
>> 
>> 
>> 
>> _______________________________________________
>> use-livecode mailing list
>> use-livecode@lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your subscription 
>> preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
>> Guglielmo Braguglia <mailto:guglie...@braguglia.ch>
>> 30 May 2012 20:50 pm
>> Dear members of this list,
>> 
>> all of you, with your posts, your information and your suggestions, have 
>> helped me a lot of times so, this time, I would like to freely share 
>> something that, I hope, useful for all member involved in development of OSX 
>> application with LiveCode and interested in publishing their App in Mac 
>> Apple Store ...
>> 
>> ... a Livecode OSX External to validate the MAS Receipt.
>> 
>> As you probably already know, a user can download from the MAS the purchased 
>> App on 5 different devices, but ... if inside your App you don't validate 
>> the "MAS Receipt", ANY user _can make a copy_ and distribute your App 
>> without any control !
>> 
>> Unfortunately, the code to validate the MAS Receipt, can't be still the same 
>> because, otherwise, it will be too easy for crackers to discover the weak 
>> point and to patch the code once and for all. For this reason I think, Apple 
>> has not provided a fixed 'call' to use, but has provided some guidelines :
>> 
>> https://developer.apple.com/library/mac/#releasenotes/General/ValidateAppStoreReceipt/_index.html
>> 
>> As you can see, to write a good MAS Receipt Validation code, is not so 
>> simple, but for this, fortunately, there is on the App Store, a very good 
>> program, called *Receigen*.
>> _Each time_ you run, Receigen generates a complex C  "MAS Receipt 
>> Validation" source code, where the constants and the strings are 
>> re-obfuscated, the checks are performed differently, and the code flow 
>> changes, so … each time a different, _unique_ code ! (more info on : 
>> http://receigen.etiemble.com/index.php)
>> 
>> So, starting from this, I developed a very simple External for LiveCode, to 
>> call the validation process from inside our applications. :-)
>> 
>> You can download the following items from my web server :
>> 
>>    - All you need to build YOUR validation External : 
>> http://www.phoenixsea.ch/downloads/phxMASValidate.zip
>> 
>>    - A simple test program that shows how to dynamically load and how to 
>> call the External : 
>> http://www.phoenixsea.ch/downloads/phxMASValidate_TestProgram.zip
>> 
>>    - An 8 minutes video showing "How To Do" : 
>> http://www.phoenixsea.ch/downloads/phxMASValidate.mov
>>    ... about this video ... I know that probably the slides go too quickly, 
>> but you can still use the pause/resume button to stop and resume the video.
>> 
>> Now, to briefly explain "How to do" ...
>> 
>> 1. with Receigen.app generate your MAS Receipt Validation C code (/DON'T 
>> FORGET to flag the "Perform only receipt checks" on Advanced Settings/) and 
>> save in a file named*receigen.h*
>> 
>> 2. go inside phxMASValidate folder and _*replace*_ the file : 
>> phxMASValidate/phxvalidate/src/receigen.h with your just generated
>> 
>> 3. go back inside : phxMASValidate/phxvalidate/ , start XCode and open the 
>> project phxvalidate.xcodeproj
>> 
>> 4. to avoid problems, first do a "Clean" so ... from the menu bar, select 
>> Product -> Clean
>> 
>> 5. verify that the 'Release' build is selected, so ... from the menu bar, 
>> select Product -> Edit Scheme and verify that the Build Configuration is on 
>> *Release*
>> 
>> 6. still to avoid problems, put YOUR bundle identifier for this external, so 
>> ... click on the left pane, on the first item (/the project name, with blue 
>> small icon/) and in the central pane, on the *Info *TAB, the first row is 
>> 'Bundle Identifier' ... change it (/e.g. com.yourname.phxvalidate/)
>> 
>> 7. build the external, so ... from the menu bar, select Product -> Build ... 
>> XCode must say : 'Build Succeeded'
>> 
>> 8. you can close XCode ... your external is ready ! You will find it in : 
>> phxMASValidate/phxvalidate/_build/Release/phxvalidate.bundle
>> 
>> 9. Include this external into your livecode app and, on the preOpenStack 
>> (/... but I suggest to call also in different points of the code to make 
>> harder the work to crackers/) and call :
>> 
>>    put phxValidateMAS(the filename of this stack) into tRetCode
>> 
>> where the *phxValidateMas* is the name of the C call that you find into my 
>> source code; the parameter is the Path to the REAL executable that you find 
>> inside your Mac .app and tRetCode is the return code (/... 0 if all is OK/).
>> 
>> That's all ...
>> 
>> _Important note_ :
>> fortunately/unfortunately, LiveCode is not a real common language so, as far 
>> as I know, there are not LiveCode decompilers and it's not so easy to debug 
>> a livecode application. The weakness is exactly the external, which is a 
>> real OSX executable easy to debug and to replace.
>> About debugging ... Receigen creates a quite complex code to debug, but ... 
>> anybody can easily replace the bundle with another one with just 'return 0' 
>> as return value for my validation call.
>> To avoid this, you MUST find a way to _validate the external_ BEFORE using 
>> it.
>> I have spoken with the author of Receigen and, after having explained the 
>> situation, he also suggested to protect the External with different checking.
>> 
>> So, in my programs, I obfuscate the following values :
>> 
>>    - the MD5 of the External CODE (/the real one that you find *_INSIDE_ 
>> *the External bundle/)
>>    - the SHA1
>>    - the size in bytes
>> 
>> ... and I will check the values each time, before calling the External ! 
>> Quite difficult to work around ...
>> 
>> If you need, don't hesitate to contact me.
>> 
>> Guglielmo
>> 
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode@lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription 
> preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode


_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to