Sunday, May 13, 2012

Automatic binary hardening with Autoconf

How do you protect a C program against memory corruption exploits? We should try to write code with no bugs, but we also need protection against any bugs which may lurk. Put another way, I try not to crash my bike but I still wear a helmet.

Operating systems now support a variety of tricks to make life difficult for would-be attackers. But most of these hardening features need to be enabled at compile time. When I started contributing to Mosh, I made it a goal to build with full hardening on every platform, not just proactive distributions like Ubuntu. This means detecting available hardening features at compile time.

Mosh uses Autotools, so this code is naturally part of the Autoconf script. I know that Autotools has a bad reputation in some circles, and I'm not going to defend it here. But a huge number of existing projects use Autotools. They can benefit today from a drop-in hardening recipe.

I've published an example project which uses Autotools to detect and enable some binary hardening features. To the extent possible under law, I waive all copyright and related or neighboring rights to the code I wrote for this project. (There are some third-party files in the m4/ subdirectory; those are governed by the respective licenses which appear in each file.) I want this code to be widely useful, and I welcome any refinements you have.

This article explains how my auto-detection code works, with some detail about the hardening measures themselves. If you just want to add hardening to your project, you don't necessarily need to read the whole thing. At the end I talk a bit about the performance implications.

How it works

The basic idea is simple. We use AX_CHECK_{COMPILE,LINK}_FLAG from the Autoconf Archive to detect support for each feature. The syntax is

AX_CHECK_COMPILE_FLAG(flag, action-if-supported, action-if-unsupported, extra-flags)

For extra-flags we generally pass -Werror so the compiler will fail on unrecognized flags. Since the project contains both C and C++ code, we check each flag once for the C compiler and once for the C++ compiler. Also, some flags depend on others, or have multiple alternative forms. This is reflected in the nesting structure of the action-if-supported and action-if-unsupported blocks. You can see the full story in configure.ac.

We accumulate all the supported flags into HARDEN_{C,LD}FLAGS and substitute these into each Makefile.am. The hardening flags take effect even if the user overrides CFLAGS on the command line. To explicitly disable hardening, pass

./configure --disable-hardening

A useful command when testing is

grep HARDEN config.log

Complications

Clang will not error out on unrecognized flags, even with -Werror. Instead it prints a message like

clang: warning: argument unused during compilation: '-foo'

and continues on blithely. I don't want these warnings to appear during the actual build, so I hacked around Clang's behavior. The script wrap-compiler-for-flag-check runs a command and errors out if the command prints a line containing "warning: argument unused". Then configure temporarily sets

CC="$srcdir/scripts/wrap-compiler-for-flag-check $CC"

while performing the flag checks.

When I integrated hardening into Mosh, I discovered that Ubuntu's default hardening flags conflict with ours. For example we set -Wstack-protector, meaning "warn about any unprotected functions", and they set --param=ssp-buffer-size=4, meaning "don't protect functions with fewer than 4 bytes of buffers". Our stack-protector flags are strictly more aggressive, so I disabled Ubuntu's by adding these lines to debian/rules:

export DEB_BUILD_MAINT_OPTIONS = hardening=-stackprotector
-include /usr/share/dpkg/buildflags.mk

We did something similar for Fedora.

Yet another problem is that Debian distributes skalibs (a Mosh dependency) as a static-only library, built without -fPIC, which in turn prevents Mosh from using -fPIC. Mosh can build the relevant parts of skalibs internally, but Debian and Ubuntu don't want us doing that. The unfortunate solution is simply to reimplement the small amount of skalibs we were using on Linux.

The flags

Here are the specific protections I enabled.

  • -D_FORTIFY_SOURCE=2 enables some compile-time and run-time checks on memory and string manipulation. This requires -O1 or higher. See also man 7 feature_test_macros.

  • -fno-strict-overflow prevents GCC from optimizing away arithmetic overflow tests.

  • -fstack-protector-all detects stack buffer overflows after they occur, using a stack canary. We also set -Wstack-protector (warn about unprotected functions) and --param ssp-buffer-size=1 (protect regardless of buffer size). (Actually, the "-all" part of -fstack-protector-all might imply ssp-buffer-size=1.)

  • Attackers can use fragments of legitimate code already in memory to stitch together exploits. This is much harder if they don't know where any of that code is located. Shared libraries get random addresses by default, but your program doesn't. Even an exploit against a shared library can take advantage of that. So we build a position independent executable (PIE), with the goal that every executable page has a randomized address.

  • Exploits can't overwrite read-only memory. Some areas could be marked as read-only except that the dynamic loader needs to perform relocations there. The GNU linker flag -z relro arranges to set them as read-only once the dynamic loader is done with them.

    In particular, this can protect the PLT and GOT, which are classic targets for memory corruption. But PLT entries normally get resolved on demand, which means they're writable as the program runs. We set -z now to resolve PLT entries at startup so they get RELRO protection.

In the example project I also enabled -Wall -Wextra -Werror. These aren't hardening flags and we don't need to detect support, but they're quite important for catching security problems. If you can't make your project -Wall-clean, you can at least add security-relevant checks such as -Wformat-security.

Demonstration

On x86 Linux, we can check the hardening features using Tobias Klein's checksec.sh. First, as a control, let's build with no hardening.

$ ./build.sh --disable-hardening
+ autoreconf -fi
+ ./configure --disable-hardening
...
+ make
...
$ ~/checksec.sh --file src/test
No RELRO       No canary found  NX enabled  No PIE

The no-execute bit (NX) is mainly a kernel and CPU feature. It does not require much compiler support, and is enabled by default these days. Now we'll try full hardening:

$ ./build.sh
+ autoreconf -fi
+ ./configure
...
checking whether C compiler accepts -fno-strict-overflow... yes
checking whether C++ compiler accepts -fno-strict-overflow... yes
checking whether C compiler accepts -D_FORTIFY_SOURCE=2... yes
checking whether C++ compiler accepts -D_FORTIFY_SOURCE=2... yes
checking whether C compiler accepts -fstack-protector-all... yes
checking whether C++ compiler accepts -fstack-protector-all... yes
checking whether the linker accepts -fstack-protector-all... yes
checking whether C compiler accepts -Wstack-protector... yes
checking whether C++ compiler accepts -Wstack-protector... yes
checking whether C compiler accepts --param ssp-buffer-size=1... yes
checking whether C++ compiler accepts --param ssp-buffer-size=1... yes
checking whether C compiler accepts -fPIE... yes
checking whether C++ compiler accepts -fPIE... yes
checking whether the linker accepts -fPIE -pie... yes
checking whether the linker accepts -Wl,-z,relro... yes
checking whether the linker accepts -Wl,-z,now... yes
...
+ make
...
$ ~/checksec.sh --file src/test
Full RELRO     Canary found     NX enabled  PIE enabled

We can dig deeper on some of these. objdump -d shows that the unhardened executable puts main at a fixed address, say 0x4006e0, while the position-independent executable specifies a small offset like 0x9e0. We can also see the stack-canary checks:

b80:  sub   $0x18,%rsp
b84:  mov   %fs:0x28,%rax
b8d:  mov   %rax,0x8(%rsp)

      ... function body ...

b94:  mov   0x8(%rsp),%rax
b99:  xor   %fs:0x28,%rax
ba2:  jne   bb4 <c_fun+0x34>

      ... normal epilogue ...

bb4:  callq 9c0 <__stack_chk_fail@plt>

The function starts by copying a "canary" value from %fs:0x28 to the stack. On return, that value had better still be there; otherwise, an attacker has clobbered our stack frame.

The canary is chosen randomly by glibc at program start. The %fs segment has a random offset in linear memory, which makes it hard for an attacker to discover the canary through an information leak. This also puts it within thread-local storage, so glibc could use a different canary value for each thread (but I'm not sure if it does).

The hardening flags adapt to any other compiler options we specify. For example, let's try a static build:

$ ./build.sh LDFLAGS=-static
+ autoreconf -fi
+ ./configure LDFLAGS=-static
...
checking whether C compiler accepts -fPIE... yes
checking whether C++ compiler accepts -fPIE... yes
checking whether the linker accepts -fPIE -pie... no
...
+ make
...
$ file src/test
src/test: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux),
statically linked, for GNU/Linux 2.6.26, not stripped
$ ~/checksec.sh --file src/test
Partial RELRO  Canary found     NX enabled  No PIE

We can't have position independence with static linking. And checksec.sh thinks we aren't RELRO-protecting the PLT — but that's because we don't have one.

Performance

So what's the catch? These protections can slow down your program significantly. I ran a few benchmarks for Mosh, on three test machines:

  • A wimpy netbook: 1.6 GHz Atom N270, Ubuntu 12.04 i386

  • A reasonable laptop: 2.1 GHz Core 2 Duo T8100, Debian sid amd64

  • A beefy desktop: 3.0 GHz Phenom II X6 1075T, Debian sid amd64

In all three cases I built Mosh using GCC 4.6.3. Here's the relative slowdown, in percent.

Protections Netbook Laptop Desktop
Everything 16.0 4.4 2.1
All except PIE 4.7 3.3 2.2
All except stack protector 11.0 1.0 1.1

PIE really hurts on i386 because data references use an extra register, and registers are scarce to begin with. It's much cheaper on amd64 thanks to PC-relative addressing.

There are other variables, of course. One Debian stable system with GCC 4.4 saw a 30% slowdown, with most of it coming from the stack protector. So this deserves further scrutiny, if your project is performance-critical. Mosh doesn't use very much CPU anyway, so I decided security is the dominant priority.

172 comments:

  1. Does this work on the BSDs?

    ReplyDelete
    Replies
    1. Hello everyone..Welcome to my free masterclass strategy where i teach experience and inexperience traders the secret behind a successful trade.And how to be profitable in trading I will also teach you how to make a profit of $12,000 USD weekly and how to get back all your lost funds feel free to email me on(brucedavid004@gmail.com) or whataspp number is +22999290178







      Hello everyone..Welcome to my free masterclass strategy where i teach experience and inexperience traders the secret behind a successful trade.And how to be profitable in trading I will also teach you how to make a profit of $12,000 USD weekly and how to get back all your lost funds feel free to email me on(brucedavid004@gmail.com) or whataspp number is +22999290178

      Delete
    2. Main Is Usually A Function: Automatic Binary Hardening With Autoconf >>>>> Download Now

      >>>>> Download Full

      Main Is Usually A Function: Automatic Binary Hardening With Autoconf >>>>> Download LINK

      >>>>> Download Now

      Main Is Usually A Function: Automatic Binary Hardening With Autoconf >>>>> Download Full

      >>>>> Download LINK 6V

      Delete
  2. The Autoconf code runs without error on all of the supported Mosh platforms, including FreeBSD. I'm not sure what set of protections you get on FreeBSD.

    ReplyDelete
  3. I just tested it on FreeBSD 9.0 for amd64 and we do get the full set of hardening features. This is using GCC 4.2.1 and GNU ld 2.17.50.

    ReplyDelete
  4. I believe for Mac OS X you need to use -Wl,-pie even with gcc. If you use "gcc -v" when linking on Mac OS X you won't see -pie being passed to the linker. Here's the output of "otool -h" on an executable built with -pie in LDFLAGS on Mac OS X 10.6:

    Mach header
    magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
    0xfeedfacf 16777223 3 0x80 2 11 1776 0x00000085

    Compare that to one built with -Wl,-pie

    Mach header
    magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
    0xfeedfacf 16777223 3 0x80 2 11 1776 0x00200085

    In /usr/include/mach-o/loader.h we find this:

    #define MH_PIE 0x200000 /* When this bit is set, the OS will
    load the main executable at a
    random address. Only used in
    MH_EXECUTE filetypes. */

    ReplyDelete
  5. @Todd C. Miller: Thanks, we'll look into that!

    ReplyDelete
  6. I think you'll find that it is not just clang that gives a non-fatal warning for unrecognized options. The HP-UX C compiler does this too. What you really want is to toggle the value of ac_c_werror_flag / ac_cxx_werror_flag like autoconf's -g checks do. Rather that twiddle ac_c_werror_flag directly I use AC_LANG_WERROR but since there is no (exported) way to restore ac_c_werror_flag the checks need to be at the end of the configure script. This is not a huge deal if you are careful, but it sure would be nice to be able to just toggle werror.

    ReplyDelete
  7. Put another way, I try not to crash my bike but I still wear a helmet.You can learn more: China Travel Agency | China tour operator | China tour packages

    ReplyDelete
  8. Yes, You are saying right the trading option with binary functions is called a binary option trading. To trade with efficient manner you need a platform.
    Source:Www.Trading-Binary-Options.Eu

    ReplyDelete
  9. I love it. I hope that more and more Blogger will use this feature in the future, because it just makes the internet better I think!
    India Vs West Indies Live Tv Telecast
    Fifa Futsal World Cup 2016 Broadcasting

    ReplyDelete
  10. Really I enjoy your site with effective and useful information. It is included very nice post with a lot of our resources.thanks for share. i enjoy this post. BinaryToday.com

    ReplyDelete
  11. Hello everyone..Welcome to my free masterclass strategy where i teach experience and inexperience traders the secret behind a successful trade.And how to be profitable in trading I will also teach you how to make a profit of $12,000 USD weekly and how to get back all your lost funds feel free to email me on(brucedavid004@gmail.com) or whataspp number is +22999290178

    ReplyDelete
  12. Hello everyone..Welcome to my free masterclass strategy where i teach experience and inexperience traders the secret behind a successful trade.And how to be profitable in trading I will also teach you how to make a profit of $12,000 USD weekly and how to get back all your lost funds feel free to email me on(brucedavid004@gmail.com) or whataspp number is +22999290178

    ReplyDelete
  13. I loved reading this! I try to just do my own thing on my blog http://www.gumawawebsite.blogspot.com but it’s nice to have people who inspire.

    ReplyDelete
  14. Connect Your HP Printer Using wps pin hp printer: · Once you go into all program section. · Thereafter, you need to go into printer setup and software option. Also visit - Wps Pin Hp Envy Printer

    ReplyDelete
  15. Thanks for sharing this informative blog. Keep sharing informative content blog.

    Thanks for sharing this informative blog. Keep sharing informative content blog.


    CRM software in Chennai
    helps in every business, no matter what the size of the business. This CRM software helps to organize and automate and improve their business. Salezshark having 15 yrs of experience Sale and marketing CRM solutions

    ReplyDelete
  16. https://primarychalkboard.blogspot.com/2015/11/read-like-techie-using-your-board-for.html?showComment=1624484384343#c807357169728536942
    https://fullcomicfrenzy.blogspot.com/2016/07/patent-litigation-as-branding-tool.html?showComment=1624484949244#c7103277414278957678
    https://howsweeteritis.blogspot.com/2011/11/how-to-generate-your-own-qr-codes.html?showComment=1624484917260#c7352650518745650061
    https://characterdesignnotes.blogspot.com/2010/11/nico-marlet.html?showComment=1624484721824#c7384407583429207550
    https://syafiqzulkarnain2.blogspot.com/2016/10/iphone-7-just-launched-but-attentions.html?showComment=1624484751179#c8694022359694255508
    https://notreadymaketonice.blogspot.com/2017/03/modern-mahogany-dining-room-interior.html?showComment=1624484799636#c2140063941327763495
    http://www.geekwithcurves.com/2010/02/meeting-felicia-day-dr-horrible.html?showComment=1624484810962#c634997335672489560
    https://veggieandtofu.blogspot.com/2011/05/an-elegant-architectural-masterpiece.html?showComment=1624484850246#c2371712671122579194
    https://thebestgifsforme.blogspot.com/2012/06/barney-from-how-i-met-your-mother-gifs.html?showComment=1624485384723#c679506645390791919
    https://ilovetocreateblog.blogspot.com/2015/09/puffy-paint-backpack-for-back-to-school.html?showComment=1624485394647#c1720272640561728281
    https://littlebitjohnny.blogspot.com/2014/07/download-free-total-video-converter-for.html?showComment=1624485456456#c3514330564562809484
    https://sihanandi.blogspot.com/2016/10/z3x-box-samsung-tool-pro-v-269-setup.html?showComment=1624485195400#c8170089753367527843
    https://sihanandi.blogspot.com/2016/09/z3x-box-samsung-tool-pro-v-267-setup.html?showComment=1624485221189#c7747729015119837040
    http://thepinetree.net/index.php/www.hervelegerdresssales.net/www.foxnews.com/weather/2014/01/26/freezing-temps-return-to-midwest-for-extended-stay/%E2%80%9Cwww.greetingsncards.blogspot.in/2016/03/index.php?module=announce&ANN_user_op=view&ANN_id=51016
    https://parisvsnyc.blogspot.com/2010/11/le-snack.html?showComment=1624485852309#c1089779776767810386
    https://indiafunworld.blogspot.com/2011/12/watch-star-wars-movie-in-cmd.html?showComment=1624485889641#c5663229786498290584
    https://ferraricars77.blogspot.com/2015/01/download-best-free-antivirus-for.html?showComment=1624486068498#c8658300091221398601
    https://mainisusuallyafunction.blogspot.com/2012/05/automatic-binary-hardening-with.html?showComment=1624486100227#c8167830562077840551

    ReplyDelete
  17. Good blog here! Your site will load soon! Host hostat stands, Are you moving?
    Can you use affiliate links that your t represents?
    media player classic home cinema with crack
    videoproc crack
    photostage slideshow producer pro crack
    <a href="https://cracksoftwares.co/media-player-classic-home-cinema-crack

    ReplyDelete
  18. Hey! This is my first visit to your blog.
    We are a collection of volunteers starting with one
    a new project in the community in the same niche.
    Your blog has provided us with useful information to work with. YOU
    did a fantastic job!
    nahimic crack
    nero platinum crack
    hide my ip license key crack

    ReplyDelete
  19. Hello colleagues, how are you and what do you want to say?
    The linked post was weirdly designed for me in my opinion.

    Hello colleagues, how are you and what do you want to say?Hello colleagues, how are you and what do you want to say?
    The linked post was weirdly designed for me in my opinion.

    Hello colleagues, how are you and what do you want to say?

    ReplyDelete

  20. Oh my goodness! Impressive article dude! Thanks, However I am having troubles with your RSS. I don’t understand the reason why I am unable to join it. Is there anybody having the same RSS issues? Anyone that knows the answer will you kindly respond? Thanx!!
    metro exodus gold edition crack
    shazam encore apk
    smoothvideo project svp crack
    tuxera ntfs crack

    ReplyDelete

  21. Wow, marvelous blog structure! How long have you ever been running a
    blog for? you make running a blog look easy.
    The entire glance of your web site is excellent, as smartly
    as the content!
    ccleaner pro crack
    panoramastudio pro
    zemana antimalware premium plus crack
    magix vegas movie studio crack

    ReplyDelete
  22. Hey there! I’ve been reading your web site for a while now and finally got the courage to go ahead and give you a shout out from Kingwood Texas! Just wanted to mention keep up the great job!
    beyond compare crack
    avast antivirus crack
    bitdefender total security key crack
    asc timetables crack

    ReplyDelete
  23. Oh my goodness! Impressive article dude! Thanks, However I am having troubles with your RSS. I don’t understand the reason why I am unable to join it. Is there anybody having the same RSS issues? Anyone that knows the answer will you kindly respond? Thanx!!
    soni typing tutor crack
    instasquare photo editor apkmod
    openvpn crack
    kmsauto lite crack

    ReplyDelete
  24. Beautifully written and done.
    I recently started creating blogs and noticed a lot of people are just repeating old content but adding
    very little in price. It's good to add a useful article of real value to your subscribers and me.
    vso downloader crack
    teamviewer crack
    auto tune vocal studio crack
    usb network gate crack

    ReplyDelete


  25. Oh my goodness! Impressive article dude! Thanks, However I am having troubles with your RSS. I don’t understand the reason why I am unable to join it. Is there anybody having the same RSS issues? Anyone that knows the answer will you kindly respond? Thanx!!
    avast antivirus crack

    ReplyDelete
  26. What’s up, after reading this awesome piece of writing i am also happy to share my experience here with mates.
    total xml converter crack
    pinegrow web editorcrack
    mcafee total protection
    destiny2 beyond light crack

    ReplyDelete
  27. Oh my goodness! Impressive article dude! Thanks, However I am having troubles with your RSS. I don’t understand the reason why I am unable to join it. Is there anybody having the same RSS issues? Anyone that knows the answer will you kindly respond? Thanx!!
    metro exodus cpy torrent crack
    picsart apk mod
    comodo antivirus crack
    expressvpn for chrome crack

    ReplyDelete
  28. What’s up, after reading this awesome piece of writing i am also happy to share my experience here with mates.
    the elder scrolls oblivion of the year edition deluxe gog crack
    bandicam crack
    toad for oracle crack

    ReplyDelete
  29. Never before have I seen an employee so dedicated, hard-working, and yet still tenacious at the same time. You’re an inspiration to all of us!

    tenorshare icarefone crack

    smadav pro crack

    ReplyDelete
  30. What’s up, after reading this awesome piece of writing i am also happy to share my experience here with mates.
    red giant trapcode suite crack
    dvd cloner platinum crack
    the golf club crack
    final fantasy shadowbringers crack

    ReplyDelete
  31. Thank you very much for sharing a great and important blog post. This is really the most necessary for us. I always visit this site and get valuable information.

    packers and movers in navi mumbai

    ReplyDelete
  32. It is one of useful information for me. Thanks for sharing with us.
    CenturyLink is a multinational telecommunication company. It offers a wide range of features of communication over the internet. Sometimes, due to slow internet speed, broken cable, and bandwidth connection, you may face CenturyLink WiFi Not Working Problems. To fix these issues you have to reset or restart your device or modem, and you can also contact to our Qwik Aid tech experts.

    ReplyDelete
  33. Nice Post! Thanks for giving me this information.
    Are you looking reliable and flexible Twin Channel for the Rolling Mill & TMT Bar? Akshi Engineers offer you one of the best options of Twin Channel for you at a cheap price. To know the best deal of Twin Channel for Rolling Mill, just dial our toll-free number +91-98106-62353, and you may also visit the website.

    ReplyDelete
  34. Thanks for the great message! I really enjoyed reading
    you could be a good writer. Evil Alvzis notes blog and testament
    will finally come back later. I want to support
    keep writing well, have a nice weekend!
    avast driver updater crack
    parallels desktop crack
    adobe premiere pro cc crack

    ReplyDelete
  35. I do agree with all the ideas you have presented in your post.
    They’re really convincing and will definitely work.
    Still, the posts are too short for beginners.
    Could you please extend them a little from next time?
    Thanks for the post.
    sid meiers civilization gathering storm update crack
    luxion keyshot pro crack
    corelcad crack

    ReplyDelete
  36. Thanks for sharing this informative blog. Keep sharing informative content blog.

    Contact US on Gigolo job in Amritsar

    ReplyDelete
  37. I read your post. It is an amazing post. Keep sharing again this type of post.
    Todd Peters Electric, an Electrician Riverside Ca service provider, has arrived to your door with extraordinary electrical solutions thanks to its professional and qualified electricians. We deliver high-quality electrical services by carefully analyzing and observing the needs and budgets of our clients. If you need an electrician, simply call our toll-free number or go to our website.

    ReplyDelete
  38. Nice Blog. Thanks for sharing with us. Such amazing information.
    Are you looking for Jio Tower Installation in your area? Do not be concerned. Jio Digital Tower has provided an online option for individuals to establish JIO Towers in their region on its website. For queries about tower installation on land or roof, please contact us or call us right now. In Major Cities, Tower Installation & Mobile Tower Services are also available.

    ReplyDelete
  39. This site have particular software articles which emits an impression of being a significant and significant for you individual, able software installation.This is the spot you can get helps for any software installation, usage and cracked.
    4k-video-downloader-crack
    3dyd-youtube-source-crack

    ReplyDelete
  40. So nice I am enjoying for that post as for u latest version of this Security tool Available
    3dmark-crack-2
    4k-video-downloader-crack
    3dyd-youtube-source-crack

    ReplyDelete
  41. Wonderful Information. Thanks for giving me this information.
    If you have any queries related to Coin Master Free Spins, you can contact our professionals. To know more information, visit our website.

    ReplyDelete


  42. Adobe Photoshop is a raster graphics editor developed and published by Adobe Inc. for Windows and macOS.
    It was originally created in 1988 by Thomas and John Knoll. Since then, the software has become the
    industry standard not only in raster graphics editing, but in digital art as a whole.
    Adobe Photoshop CC Crack

    ReplyDelete
  43. "I just want to say that your article is just as great. The clarity of your message is simple
    excellent and I can assume that you are an expert on this matter.
    Well, with your permission, let me introduce you to the feed to keep you updated on future posts.
    Shazam Encore Crack

    ReplyDelete
  44. Create message. Keep posting this kind of information on your blog.
    I am very impressed with your site.
    Hi, you've done a great job. I will definitely dig in and personally recommend it to my friends.
    I am sure they will find this site useful.
    sparkol videoscribe crack
    auslogics boostspeed crack
    coreldraw graphics suite 2018 crack
    sketch crack

    ReplyDelete
  45. You certainly are an industry expert in our niche. We’re honored that we can learn from you
    avira antivirus pro crack
    avira system speedup pro crack
    iobit smart defrag pro crack

    ReplyDelete
  46. Sonic Mania For PC is a gleaming new Sonic 2D adventure with 60 edges per second and jaw-dropping HD retro-style graphics.
    sonic mania pc crack

    ReplyDelete
  47. I like your all post. You have done really good work. Thank you for the information you provide, it helped me a lot. wahabtech.net I hope to have many more entries or so from you.
    Very interesting blog.
    Epubor Ultimate Converter Crack

    ReplyDelete
  48. acdsee photo editor crack is a complete resource for managing, watching, enhancing, acdsee photo editor crack and publishing digital photos. acdsee photo editor crack offers a new method for managing the application of changes in settings, new effective group features, lens modification, acdsee photo editor crack and extended innovative features with the help of Photoshop extensions

    ReplyDelete
  49. Woah! This site's template/theme appeals to me much.
    It's straightforward, yet it's effective. Getting the "perfect balance" might be difficult at times.
    between excellent usability and aesthetics, I think you did a fantastic job on this.
    Furthermore, the blog is quite rapid to load.
    I'm using Firefox. Fantastic website!
    open cloner ripper crack
    apeaksoft dvd creator crack
    axure rp crack
    winrar crack

    ReplyDelete


  50. Thanks for Sharing such an amazing article. Keep working... Your Site is very nice, and it's very helping us.. this post is unique and interesting, thank you for sharing this awesome information
    ESET Internet Security Crack

    ReplyDelete
  51. I was searching over search engines and found your blog and it really helps thank you very much…
    audials one platinum the leader of online stores for movies, music, TV, and DVDs. It’ll assist you to discover, record, download, convert, and luxuriate in free and legal music, movies, video, and radio around the clock. audials one platinum Audials One Crack may provide you with more music than you’ll ever hear and more videos than you’ll ever watch, and everybody for free of charge. audials one platinum you’d wish to urge the foremost entertainment out of the web and every one media, you’ll find the right squeeze Audials One. audials one platinum subscriptions, Video on Demand services, or DVD movies – the universal recorder can provide it! Besides, Audials One converts all media at absolutely the highest quality for PCs, smartphones, and tablets. audials one platinum

    ReplyDelete
  52. Thanks for the wonderful message! I really enjoyed reading
    You can be a good writer. Bad Alvzis Blog and Testament
    He'll be back later. I want to argue
    Keep up the good work, have a great weekend!
    And I appreciate your work, I'm a great blogger.
    This article bothered me a lot.
    I will bookmark your site and continue searching for new information.
    stellar data recovery for iphone crack
    iobit driver booster pro crack
    windows 8 professional crack
    backup maker professional crack

    ReplyDelete
  53. I like your all post. You Have Done really good Work On This Site. Thank you For The Information You provided. It helps Ma a Lot.
    it Is Very Informative Thanks For Sharing. I have also Paid This sharing. I am ImPressed For With your Post Because This post is very beneficial for me and provides new knowledge to me. This is a cleverly written article. Good work with the hard work you have done I appreciate your work thanks for sharing it. It Is a very Wounder Full Post.

    hasleo bitlocker anywhere crack
    hasleo bitlocker anywhere crack
    hasleo bitlocker anywhere crack
    hasleo bitlocker anywhere crack
    hasleo bitlocker anywhere crack
    hasleo bitlocker anywhere crack
    hasleo bitlocker anywhere crack
    hasleo bitlocker anywhere crack
    hasleo bitlocker anywhere crack
    hasleo bitlocker anywhere crack

    ReplyDelete
  54. He?lo to every one, it’s really a fastid?ou? for me to go to ?ee th?s website, it include? important Information.
    Serial Key Download
    Serial Key Download

    ReplyDelete
  55. This is such a great resource that you are providing and you give it away for free. I love seeingthat understand the value of providing a quality resource for free. Extremely helpful post. Keep it up. Regards

    ReplyDelete
  56. You have a great site, but I wanted to know if you know.
    Any community forum dedicated to these topics.
    What was discussed in this article? I really want to be a part of it.
    A society in which I can obtain information from others with knowledge and interest.
    Let us know if you have any suggestions. I appreciate this!

    careueves crack
    careueves crack
    careueves crack
    careueves crack
    careueves crack
    careueves crack
    careueves crack
    careueves crack
    careueves crack
    careueves crack

    ReplyDelete
  57. I like your all post. You have done really good work. Thank you for the information you provide, it helped me a lot. vstpirate.net I hope to have many more entries or so from you.
    Very interesting blog.
    iBackup Viewer Crack

    ReplyDelete
  58. I like your all post. You have done really good work. Thank you for the information you provide, it helped me a lot.I hope to have many more entries or so from you.
    Very interesting blog.

    xcrack.org
    IBM SPSS Statistics Crack
    YouTube By Click Crack
    MiniTool Power Data Recovery Crack
    Zoom Cloud Meetings Crack
    PUBG PC Crack
    Microsoft Project Crack
    Navicat Premium Crack

    ReplyDelete
  59. Hii there. I'm glad to visit this site everytime. amzaing videos are provided by this site. If you have any PC issues then visit this site I'm also glad with it.https://patchhere.com/psiphon-pro-registered-key/

    ReplyDelete
  60. It's really nice and meaningful. It's really cool blog. Linking is very useful thing. you have really helped lots of people who visit this blog and provide them useful information. Thanks for sharing and please update some more information here. The Dubai Mobile App Development provide good service of app development you visit here site for more info.

    ReplyDelete
  61. tokbet88.net Web lotto No.1 In asia and service 24hr all in Web Please Just Click link only and have a good luck.

    Tokbet88.net
    หวยออนไลน์

    ReplyDelete

  62. I’ve been surfing on the web more than 3 hours today, yet I never found any stunning article like yours.
    It’s alluringly worth for me.
    As I would see it, if all web proprietors and bloggers made puzzling substance as you did.
    the net will be in a general sense more beneficial than at whatever point in late memory.

    bitdefender internet security crack
    total excel converter crack free
    magix movie edit crack
    jetbrains clion crack license key
    avira phantom vpn pro crack

    I’ve been surfing on the web more than 3 hours today, yet I never found any stunning article like yours.
    It’s alluringly worth for me.
    As I would see it, if all web proprietors and bloggers made puzzling substance as you did.
    the net will be in a general sense more beneficial than at whatever point in late memory.

    bulk image downloader crack chrome
    earth view crack maps
    plagiarism checker crack
    htmlpad crack
    acronis true image crack 2

    ReplyDelete
  63. I was impressed by your writing. Your writing is impressive. I want to write like you.안전놀이터 I hope you can read my post and let me know what to modify. My writing is in I would like you to visit my blog.
    I was impressed by your writing. Your writing is impressive. I want to write like you.안전놀이터 I hope you can read my post and let me know what to modify. My writing is in I would like you to visit my blog.

    ReplyDelete
  64. I am very impressed with your post because this post is very beneficial for me and provide a new knowledge to me.
    Thanks for sharing this post is an excellent article. Keep it up. I use the same blogging platform that you have and have.
    it Is Very Informative Thanks For Sharing. I have also Paid This sharing. I am ImPressed For With your Post Because This post is very.
    excel 2010
    coreldraw x5
    windows 10 pro education crack
    altair embed
    avast antivirus

    ReplyDelete
  65. Gaming Inform is the choice of game lovers. All the games on your fingertips, Just click On Download Icon Then Run In Your Android Device Without Face Any issues

    ReplyDelete
  66. Hello, I just discovered your blog on Google and I like it.
    it's quite handy. I'll look at the Brussels sprouts.
    If you continue to do so in the future, I will appreciate it. Many people will benefit from it.
    based on your writing Greetings. Thanks for sharing.
    apowermanager crack
    apowermanager crack
    apowermanager crack
    apowermanager crack
    apowermanager crack
    apowermanager crack
    apowermanager crack
    apowermanager crack
    apowermanager crack
    apowermanager crack

    ReplyDelete
  67. I guess I am the only one who came here to share my very own experience. Guess what!? I am using my laptop for almost the

    past 6 years, but I had no idea of solving some basic issues. I do not know how to

    Download Cracked Pro Softwares
    But thankfully, I recently visited a website named Crack Softwares Free Download
    Serviio Pro Crack
    KMPlayer Crack
    Tuxera NTFS Crack

    ReplyDelete
  68. I like your all post. You have done really good work. Thank you for the information you provide, it helped me a lot. cractivator.com I hope to have many more entries or so from you.
    Very interesting blog.
    Edraw Crack

    ReplyDelete
  69. I guess I am the only one who came here to share my very own experience. Guess what!? I am using my laptop for almost the past 2 years, but I had no idea of solving some basic issues. I do not know how to Crack Softwares Free Download But thankfully, I recently visited a website named procrackerr
    Remote Computer Manager Crack

    ReplyDelete
  70. 토토사이트
    배트맨토토


    Thanks for writing such a good article, I stumbled onto your blog and read a few post. I like your style of writing very unique and interesting.

    ReplyDelete
  71. 스포츠토토티비
    스포츠중계


    It is a great website.. The Design looks very good.. Keep working like that!.

    ReplyDelete
  72. 스포츠토토
    메이저사이트 목록


    First You got a great blog .I will be interested in more similar topics. i see you got really very useful topics, i will be always checking your blog !

    ReplyDelete
  73. 성인웹툰 I was quite impressed with this valuable content this was purely interesting.


    ReplyDelete
  74. 스포츠토토 Impressive web site, Distinguished feedback that I can tackle. I am moving forward and may apply to my current job which is very enjoyable, but I need to additional expand.

    ReplyDelete
  75. I guess I am the only one who came here to share my very own experience. Guess what!? I am using my laptop for almost the

    past 6 years, but I had no idea of solving some basic issues. I do not know how to

    Download Cracked Pro Softwares
    But thankfully, I recently visited a website named Crack Softwares Free Download
    crack2dl.com
    ZookaWare Pro crack

    ReplyDelete
  76. I like your all post. You have done really good work. Thank you for the information you provide, it helped me a lot. I hope to have many more entries or so from you.
    Very interesting blog.
    softcrack.org
    xpress-vpn-crack

    ReplyDelete
  77. Excellent content. IN this quarantine I needs free software for my PC and I found a great website.https://cracksys.com/whatsapp-sender-pro-crack/

    ReplyDelete
  78. https://crackmypc.com/amibroker-crack-2/
    Free Download Latest version

    ReplyDelete
  79. Main Is Usually A Function: Automatic Binary Hardening With Autoconf >>>>> Download Now

    >>>>> Download Full

    Main Is Usually A Function: Automatic Binary Hardening With Autoconf >>>>> Download LINK

    >>>>> Download Now

    Main Is Usually A Function: Automatic Binary Hardening With Autoconf >>>>> Download Full

    >>>>> Download LINK

    ReplyDelete
  80. Really Good Work Done By You...However, stopping by with great quality writing, it's hard to see any good blog today.
    CRACKPEDIA
    VMware ThinApp Enterprise Crack
    Crack Softwares Free Download

    ReplyDelete
  81. Hi!
    This is very well written and it's so interesting.
    This is so awesome.
    But you should also see this...
    This site provides free serial/activation codes and license keys.
    Burp Suite Pro Crack
    PhpStorm Crack
    Sweet Home 3D Crack

    ReplyDelete
  82. Adobe Photoshop Crack
    I read this post your post so nice and very informative post thanks for sharing this post. Its Very Interesting, Good Job.

    ReplyDelete
  83. It's great to have you here. I really like the colours and theme.
    Is this your website? I'd like to start working on my project as soon as possible.
    If you don't mind, I was curious to know where you got this or what theme you're using.
    Thank you.

    Adobe Media Encoder Ios Mac Full Version Software Download

    ReplyDelete
  84. Buy arabica filter coffee powder at flavourcult.com

    ReplyDelete
  85. filter coffee powder online at flavourcult.com

    ReplyDelete
  86. Best dating & relationship software
    1000+ real profile listed on webportal & also play boy job Varanasi listed in dating portal

    ReplyDelete
  87. I’m slightly sure that at team of reliable packers and movers in bangalore will learn plenty of new stuff right here! Best of luck
    for the next!

    ReplyDelete
  88. you write very well I am a regular visitor to your blog. And thank you for taking the time to maintain a good website. I will be a regular visitor for a long time.
    support:경산출장마사지
    구미출장마사지
    경주출장마사지
    울진출장마사지
    광양출장마사지
    나주출장마사지
    목포출장마사지

    ReplyDelete

  89. Based on the popular webtoon, “Incomplete Life” struck quite the emotional chord with South Koreans as they could find themselves relating with the ordinariness of a full-time office worker, Doramasvip

    ReplyDelete

  90. I found one so useful website which doramasmp4flix Real Estate, transport service, job and event notification, directory

    ReplyDelete
  91. Dorama de Netflix que sigue la vida de una joven sin padres que vive con su tía y prima,,, cuevana.watch

    ReplyDelete
  92. Drama coreano que sigue a una pareja de casados que tienen 38 años de edad. El hombre se siente presionado por su esposa, doramasflix.net

    ReplyDelete
  93. Nice Post,
    Your content is very inspiring and appreciating I really like it. If you are also interested for play boy jobs please visit my site Call boy Jobs.

    ReplyDelete
  94. Good work done by your self .. i really appreciate your work and effort on this content. i hope that you will continue this effort.
    2022BITRECOVER PST CONVERTER WIZARD CRACK

    ReplyDelete
  95. Tableau Desktop activation key is one of the best business analytics and data visualization software.
    tableau desktop pro activation key

    ReplyDelete
  96. download a powerful data recovery & recover your all personal data.
    easeus data recovery license key

    ReplyDelete
  97. I read your post well. It's full of very interesting stories.It's great how you can think of that.

    ReplyDelete
  98. Well I think you provide a very lengthy code check it for short and easy code:https://apkomex.com/diamond-quest-2-mod-apk/

    ReplyDelete
  99. To get some exciting quest games check this:https://apkoryx.com/diamond-quest-2-mod-apkunlimited-everything/

    ReplyDelete
  100. This comment has been removed by the author.

    ReplyDelete
  101. Windows movie maker 2023 Crack is free to download make your movie using home windows moviemaker.

    ReplyDelete
  102. I have to thank you for the efforts in this blog. the quality is good

    ReplyDelete
  103. Really amazed with your writing talent. Thanks for sharing, Love your works

    ReplyDelete
  104. Fantastic website. A lot of helpful info here. Thanks to the effort you put into this blog

    ReplyDelete
  105. Extremely pleasant and fascinating post. Continue posting. We're waiting Thanks

    ReplyDelete
  106. Thanks for sharing the informative post. Keep on writing the same way you did here

    ReplyDelete
  107. I really like your post, I always like to read quality content and you have one

    ReplyDelete
  108. Thanks for sharing. It is such a very amazing post. Great job you made in this post

    ReplyDelete
  109. The website style is perfect; the articles are great. and you are great

    ReplyDelete
  110. I wanted to thanks for your time for this wonderful read.

    ReplyDelete
  111. Nice article. This is quite informative.

    ReplyDelete
  112. This is incredible, I feel really happy to have seen your webpage.

    ReplyDelete
  113. I like the helpful information you supply to your articles.

    ReplyDelete
  114. I'll bookmark your weblog and test again here regularly.

    ReplyDelete
  115. I am fairly certain I'll be informed many new stuff proper here!

    ReplyDelete