special features required

Hii'm testing wybase to determine if it can perform the following task:First of all I have a windows application installed on many clients in diferent locations in the city, that needs to be checked periodically against a server which has current and valid versi (dll's, exe and all). I've been tampered in the past so I hash installed files against hash of files on server to determine whether to update files, delete or detect tampered files. When I find a tampered dll I need to register that issue on my database with some additional data from the client who had the tampered file (s). Which parts of the mentioned problem can be performed completely with wybuild and what with application logic.What happens when a file is no longer in use? Does wybuild delete it?I appreciate your prompt answer.

Regards edotom

When I find a tampered dll I need to register that issue on my database with some additional data from the client who had the tampered file (s).

wyUpdate doesn't work like that. You can modify it to do that, but it's pointless and won't stop cracking. See: Snake oil.

What happens when a file is no longer in use? Does wybuild delete it?

If you have a file in one version and the file is missing from the next version in wyBuild, then wyBuild sees that as meaning "delete that file".

HiI'm well aware of uselessness of protection against tampering. It's just a requirement that I identify which locations have tampered files (imagine you have a company where all of your employees are supposed to use your inventory software so you can control that no one is manipulating data entry. Then you find that someone has tampered your software and started playing around with the inventory. If you identify clearly who tampered your software then you can audit closely inventory movements made on that place.) Is it clear what I need to do? I won't be using visual control (user won't have a menu option). I want to do everything in the background.I was trying to get some C# examples in the site, but the closest was some c++ examples or clicks on automatic updater. I want to have more control of what's happening behind the curtains, if you know what I mean.

Kindly advice,

Regards

Edotom

Is it clear what I need to do?

Yes, you're trying to do the impossible. If you narrow the scope of your problem I might be able to help you. But there's no way for a cracked system to detect if it is cracked and then report back (because the cracking would, by definition, remove the ability to detect the cracking).

I was trying to get some C# examples in the site, but the closest was some c++ examples or clicks on automatic updater. I want to have more control of what's happening behind the curtains, if you know what I mean.

Get the AutomaticUpdater source code. It has examples in C# showing how to use the AutomaticUpdater backend class.

Hicurrently we have a database where all files names are stored with their current hash. Every new deployment updates files hash and versi on that database. Now, Every time the user activates the local application there is a method that calculates every local file hash and compares it with its counterpart on our database. If they're not equal then a file was tampered or modified.

kindly advice

Regards

Edotom

What are you actually trying to accomplish? Is it that some customers are submitting "bad data" to servers you control? If that's the case, then filter & process the data on your servers.

If you're trying to prevent cracking then, like I said, you can't. There's no way to prevent cracking. You might find companies willing to sell you garbage saying that they can prevent cracking. But, well, there's no way to sugar coat it: they're lying to get your money.

That's exactly the problem. I've detected that on some places, undetectable data (apparently valid) was entered using tampered versions of the software. Right now, the only way of knowing suspicious data (that should be phisically cheched) is by comparing dll client hashes vs hash versions on our servers. Of course it's impossible to avoid tampering, but detecting a tampered dll is not, so far. What I see right is that i'm gonna have to use a combination of our current checking method and your software. Our application is a combination of different Windows forms projects that invoke each other for different tasks. The started Project is Windows form Project that performs hash validation and software update. I copied client.wyc, wyserver.wys and wyserver.wys to bin/debug of that Project.

I added a reference to AutomaticUpdater.dll.

I declared a class variable:static AutomaticUpdaterBackend auBackend;

I created the following method that is called on main()

private void backendWyUpdate() {

auBackend = new AutomaticUpdaterBackend { //TODO: set a unique string. For instance, "appname-companyname" GUID = "MyOwnApp.20141119",

// With UpdateType set to Automatic, you're still in charge of // checking for updates, but the AutomaticUpdaterBackend // continues with the downloading and extracting automatically. UpdateType = UpdateType.Automatic

};

auBackend.ProgressChanged += auBackend_ProgressChanged; auBackend.ReadyToBeInstalled += auBackend_ReadyToBeInstalled; auBackend.UpdateSuccessful += auBackend_UpdateSuccessful; auBackend.CheckingFailed += auBackend_CheckingFailed; auBackend.ExtractingFailed += auBackend_ExtractingFailed; auBackend.DownloadingFailed += auBackend_DownloadingFailed; auBackend.UpToDate += auBackend_UpToDate; auBackend.Initialize();

//TODO: use the failed events for logging & error reporting: // CheckingFailed, DownloadingFailed, ExtractingFailed, UpdateFailed

// the functions to be called after all events have been set. auBackend.AppLoaded();

// sees if you checked in the last 10 days, if not it rechecks CheckEvery10Days();

// Blocks until "resetEvent.Set()" on another thread //resetEvent.WaitOne();

}

The problem: no event is triggered. As you can see, UpdateType = UpdateType.Automatic, so according to answers to similar questions on fums that should work.

Kindly advice.

Edgar Moreno

Nevermind. I found an incompatibilty with current process flow when calling referred method. I changed a few lines in our process logic and finally I've got it working.