|
Hey, great article. He says, "While I believe that for completeness I should describe how you use LicFileLicenseProvider, I also believe that anyone serious about licensing their software will most likely avoid such a simple scheme in favor of their own, more creative schemes, one of which I'll introduce to you after describing LicFileLicenseProvider."
I was pretty quickly convinced of as much last night as I explored the "documentation."
THANKS A BUNCH!
|
|
|
|
|
Denis and I are hashing out some ideas about licensing. Hopefully we will come up with a boilerplate which will solve issues right out of the box.
|
|
|
|
|
Ouch. I haven't even done this before (ILDASM), and (I'm wondering if I have my head up my hind), but I'd certainly tend to assume that I'm looking at my source as CIL.
?
.method family hidebysig instance valuetype [System.Drawing]System.Drawing.Color
Color_IncOrDecLum(valuetype [System.Drawing]System.Drawing.Color C,
int32 LumDif) cil managed
{
// Code size 85 (0x55)
.maxstack 14
IL_0000: ldarga C
IL_0004: call instance bool [System.Drawing]System.Drawing.Color::get_IsEmpty()
IL_0009: brtrue IL_0053
IL_000e: ldarg.2
IL_000f: brfalse IL_0053
IL_0014: ldarga C
IL_0018: call instance uint8 [System.Drawing]System.Drawing.Color::get_A()
IL_001d: ldarga C
IL_0021: call instance uint8 [System.Drawing]System.Drawing.Color::get_R()
IL_0026: ldarg.2
IL_0027: add
IL_0028: call int32 ADVANCEIS.Controls_N.GCServer_Base::RectifyTo_0_255(int32)
IL_002d: ldarga C
IL_0031: call instance uint8 [System.Drawing]System.Drawing.Color::get_G()
IL_0036: ldarg.2
IL_0037: add
IL_0038: call int32 ADVANCEIS.Controls_N.GCServer_Base::RectifyTo_0_255(int32)
IL_003d: ldarga C
IL_0041: call instance uint8 [System.Drawing]System.Drawing.Color::get_B()
IL_0046: ldarg.2
IL_0047: add
IL_0048: call int32 ADVANCEIS.Controls_N.GCServer_Base::RectifyTo_0_255(int32)
IL_004d: call valuetype [System.Drawing]System.Drawing.Color [System.Drawing]System.Drawing.Color::FromArgb(int32,
int32,
int32,
int32)
IL_0052: ret
IL_0053: ldarg.1
IL_0054: ret
} // end of method GCServer_Base::Color_IncOrDecLum
|
|
|
|
|
I've run it all a few more times.
Step 1 [Examining] :
Successful
Step 2 [Protection Layer 1] :
Successful
Step 3 [Protection Layer 2] :
Information: DEMO MODE! Obfuscation(50%).
Successful
Step 4 [Resign Assembly] :
Successful
.NET Assembly Successfully Protected
New Protected Version Of Your .NET Assembly Created In:
C:\VS2005\N\GC\obj\Release\GCControls_N_Secure\GCControls_N.dll
As to what this means... "Information: DEMO MODE! Obfuscation(50%)."... I do not know.
This is not looking good. It's like all settings are ignored in trial mode, or... ehem. Have you looked at your output with ILDasm? I'm getting the same thing every time -- readable IL, not even obsfucated.
|
|
|
|
|
Send me your test program and I'll NR it for you.
I thought the demo output was pretty descriptive - it only obfuscated half your code.
Xenocode only obfuscates 10% of the code and only hides 50% of strings in demo mode.
Glen Harvy
|
|
|
|
|
No can send the demo, but I sure do appreciate the offer. I can't get a rise out of Denis. I surely would like to know what's going on here. I have the settings tweaked that should be protecting output. I would think NR would like to show that off in demo mode. This stuff is simple. It shouldn't be a big deal.
|
|
|
|
|
I dunno where you are but Denis probably isn't even at work yet - he is in Germany.
I don't want to do their technical support but if you send me the .nrpoj file I can glance over that and see if there are any obvious setup problems.
Cheers,
Glen Harvy
|
|
|
|
|
I think my first mail should have caught him.
Thanks again for the offer again. Maybe you might want to do a little beta *installation* testing for a free license when I get this rolling? That should be more fun.
Just for the heck of it I looked things over again and decided to turn Compact Framework compatibility off. (I guess I was stupid to think the option meant extended versatility.)
So now when I protect, I get this (different) message string:
Step 1 [Examining] :
Successful
Step 2 [Protection Layer 1] :
Successful
Step 3 [Protection Layer 2] :
Successful
Step 4 [Resign Assembly] :
Successful
.NET Assembly Successfully Protected
New Protected Version Of Your .NET Assembly Created In:
C:\VS2005\N\GC\obj\Release\GCControls_N_Secure\GCControls_N.dll
Please Only Ship Your Protected Assembly Together With 'GCControls_N_nat.dll'
-----
What do you know. That's the first I saw a *nat.dll, and *nat.dll cannot be disassembled. Nor does my GCControls_N.dll seem to have but a little information in it now -- and not much at that.
I don't know what to make of the resource multiplication yet. We have grown from a 60K library to two libraries, one being 67K and the other (*nat.dll) being a whopping 212. Ouch. I expect that means ultimate distributables will be bloated that much.
I am a happier camper however with the arfie dog part barking.
Researching what I can do with a license scheme. I think the cleanest thing will be to do as you have -- write your own.
|
|
|
|
|
There ya go - it worked.
I have compression turned on and the .exe that I distribute is 791k verses about 1.8 meg for the executable and three included dll's.
Glen Harvy
|
|
|
|
|
Wow. Pretty interesting content in *nat.dll, including a string, "This program must be run under Win32"
I wonder if that has anything to do with the 64-bit behavior. In any case, some of the widely spaced strings have me wondering what I'm looking at here (in Notepad). Have you looked at this stuff?
|
|
|
|
|
That's interesting - perhaps NR will explain it.
I haven't bothered with looking at theend result - just as long as no one can easily de-obfuscate it I'm happy.
Glen Harvy
|
|
|
|
|
mike montagne wrote: This is not looking good. It's like all settings are ignored in trial mode, or... ehem. Have you looked at your output with ILDasm? I'm getting the same thing every time -- readable IL, not even obsfucated.
I can send you a screen shot if you like:
---------------------------
ERROR
---------------------------
error : 'D:\VS2005 Projects\MyClubV2\bin\Debug\myclubv2_Secure\myclubv2.exe' has no valid CLR header and cannot be disassembled
---------------------------
OK
---------------------------
Cheers,
Glen Harvy
|
|
|
|
|
I'll get back to you in a bit. I can't send the demo, but... at least it looks like your installation is working. I have no idea why mine won't NR as advertised.
BIG THANKS.
|
|
|
|
|
|
Yes, I have. I tried their online demo, but it doesn't tell me much. I have the download, but haven't installed it yet. I have no idea if it will fill my needs, and I'm not really very hopeful because I know that if I were documenting either product I'd try to make the features I'm looking for jump right out at you. I'm still waiting on answers from Denis at .NET Reactor.
|
|
|
|
|
I am trying to remove a specific column from a listView. The column disapears, but the Items.Subitems do not change at all, and the result is I got mixed columnHeaders and items. What is more surprising is when I am debuging. Then I see that, for example, columnHeaders form 19 become 18, but Items.Subitems stay 19. And in the end of the debuging I see the listView the way it should be! Have no idea why, but when I'm debuging slowly the Remove is ok. Without breakpoints - not ok.
Any help will be appreciated.
10x
-- modified at 12:41 Tuesday 6th March, 2007
P.S. I have just tried with RemoveAt and same ****.
|
|
|
|
|
First post, so hi to all the regulars.
I have a combo box to which I have bound an object. I've set the datasource to my object and the display member to the 'name' property. The combo box picks up the 'name' but only for the first item in the list - for the rest it displays the fully qualified name: that is <namespace>.<class name="">. For example:
ComboBox -> Copy
Plugin.Move
Plugin.Properties
Plugin.Show
The 'name' property is definitely bound and reordering the list proves it's always the first item that fails.
Has anyone come across this before? Any help appreciated.
|
|
|
|
|
i have an image with size "for example" 600*600 and i need to convert it to 200*200..
how is that???
thanks allot
|
|
|
|
|
Create a new Bitmap object with the size you want, use the Graphics.FromImage method to get a graphics object for the image, and use that to draw the original image onto the new image at the correct size.
---
single minded; short sighted; long gone;
|
|
|
|
|
thanks allot for reply
but a code example will be better.
thanks
|
|
|
|
|
using (Bitmap bitmap = new Bitmap(200, 200, PixelFormats.Format24bppRgb))
{
using (Graphics gfx = Graphics.FromImage(bitmap))
{
gfx.DrawImage(originalImage, 0, 0, 200, 200);
}
bitmap.Save(@"filename.bmp", ImageFormats.Bmp);
} Or something like that.
|
|
|
|
|
thanks allot
i will try it
it converts from a higher resolution to a lower one, is not it?
|
|
|
|
|
That depends on what you mean by resolution.
It converts an image of any size to the specificed size, regardless if the original image is larger or smaller.
---
single minded; short sighted; long gone;
|
|
|
|
|
thanks allot
it really did the job.
|
|
|
|
|
I have control Lable on Form , I wanted to update text propertrty of that control from another class in same namepsace so I expose that label control visa public property . and now I m using that property in my other class for setting text fro that lable .. but the new text is not displaying on Form ???
What I am doing wrong here ???
Class Form1 {
public string updatelable
{
get
{
return label.text ;
}
set
{
label.Text = (string)value;
}
and using it in my other class as
Form1 f = new Form1();
f.updatelable = "abc";
but its not working... what I m doing wrong here ???
Thanks
HELLO
|
|
|
|