标签归档:labview密码破解

Labview密码破解+防止Labview密码破解方法

labview 密码破解, labview 忘记密码,labivew 密码忘了,问问QQ:1425939287,速度一流,价格优惠
LabVIEW开发环境提供了两种方式保护程序原始码的安全性,一个是设定VI的密码.另一个是移除VI的Block Diagram ,也就是VI的程序逻辑部分.
NI官方网站的说明也非常详细可以参考” Security of LabVIEW VI Password Protection vs. Removing VI Block Diagrams ” ,虽然此篇文章并没有明确指出Password Protect VI加密的演算法类型,怀疑使用了RSA方式加密, RSA非常难于破解,但是事无绝对RSA目前已被证实可经由碰撞而产生另一组解,因此并非完美的加密方式,官方文章也提到Password Protect VI的加密流程也可能因LabVIEW本身程序码被逆向工程,跳过了判断验证密码的程序导致即使加密,却被轻松破解的结果。 labview 忘记密码,labivew 密码忘了,问问QQ:1425939287。 因此NI提供了Removing Block Diagram VI的方式,让该VI只保存人机介面与编译过的Binary Code.此方式仍被破解的可能性只有对方能解读该Binary Code在该平台(x86 …etc)对应的逻辑,因效益太低可能性微乎其微,因该不会有人会想做这种事情.此方式的缺点是该VI仅能提供同样的LabVIEW版本与使用的平台环境,例如abc.vi是在LabVIEW 2012,x86 Win7底下进行Removing Block Diagram后, abc.vi未来只能在LabVIEW 2012,x86 Win7的环境下被呼叫使用,因此若要支持多个版本,则须提供相对应的abc.vi. Removing Block Diagram VI的流程如下:
1.建立一个vi,范例用一个简单的加法运算,并加入专案 labview 密码破解, labview 忘记密码,labivew 密码忘了,问问QQ:1425939287
2.在专案的Builed Specifications项目右键选择New,然后再选择Source Distribution.
3.在Source File选项中将目标abc.vi设为Always Included.
4.在source File Settings选项中点到abc.vi ,然后在右边选单会有个Remove block diagram ,把这个选项打勾.
(后面会再多做一个连Remove front panel打勾的比较)
5.之后点Build按钮后就会生成不含Block Diagram的vi了.由上图可以比较一下
abc.vi为原始vi…… 13KB
abc_RemovingBlackDiagram.vi为移除Block Diagram….. ..6KB
abc_RemovAnything.vi为移除Front Panel与Block Diagram…… 3KB
6.将移除Block Diagram的vi拿到另外一台电脑上用LabVIEW 2013的环境打开就会跳出这个画面, 底下红色框框里显说Block Diagram已被移除,因此LabVIEW 2013无法进行转换.
接着用之前文章 提到的程序稍微修改一下​​,可以读取储存vi的每个部分,简单说明几个部分的名字代表的意义(猜的),

labview 密码破解, labview 忘记密码,labivew 密码忘了,问问QQ:1425939287
VICD = VI compiled Data , 这是该vi程序码compile 成machine code的资料.
BDPW = Block Diagram PassWord ,这是该vi被设Password Protect VI后的密码生成RSA存放的位置,前32 byte就是该vi被设密码后的RSA值,后面64 byte可能用来计算vi资料是否遭窜改或毁损(猜的)
FPHb , FPSE为Front Panel资料,详细意义不明
BDHb , BDSE为Block Diagram资料 ,详细意义不明
上面两张图是abc.vi与abc_RemovingBlackDiagram.vi的比较
可以看到VICD并未改变, BDHb , BDSE都被移除.
上面这张图是 abc_RemovAnything.vi 与 abc_RemovingBlackDiagram.vi的比较
可以看到VICD并未改变, FPHb , FPSE和其他一些东西都被移除.
结论:
1.Password Protect VI极有可能用RSA加密算法
2.Removing Block Diagram VI无法还原成可编辑的vi
3.就保护程序码而言Removing Block Diagram VI比Password Protect VI来的安全,但使用此vi进行开发非常不方便.

LabVIEW 使用 dll

labview密码破解请联系QQ:1425939287,速度一流,价格优惠

最近有网友来信询问于在LabVIEW 中如何使用” User32.dll ”中API EnumWindows ,由于它是使用callback 的方式传回资料因此需封装成dll 的形式给LabVIEW 使用,本篇将介绍此过程的程序撰写方式。
在LabVIEW 中若想要使用dll 来注册Event ,dll 必须加入extcode.h 这个头文件和使用Library 档labview.lib 或labviewv.lib 。
对于到底是使用labview.lib 或labviewv.lib ,根据这篇文章(labview.lib or labviewv.lib?[http://forums.ni.com/t5/LabVIEW/labview-lib-or-labviewv-lib/ td-p/2916894]) ,我的理解是为了对应不同版本的LabVIEW RunTime ,应该要使用labviewv.lib 。
首先由微软的MSDN 查看EnumWindows 的使用说明:
BOOL WINAPI EnumWindows(
_In_ WNDENUMPROC lpEnumFunc,
_In_ LPARAM lParam
);
Parameters
lpEnumFunc [in]
Type: WNDENUMPROC
A pointer to an application-defined callback function. For more information, see EnumWindowsProc .
lParam [in]
Type: LPARAM
An application-defined value to be passed to the callback function.
Return value
Type:
Type: BOOL
If the function succeeds, the return value is nonzero.
由此可看出EnumWindows 需要输入的参数,lpEnumFunc 就是callback函数的原型,要传入实作函数程序码的位址,lParam 则是输入的参数,要传入未定的资料型态位址。
接着再看看EnumWindowsProc的函数原型定义:
BOOL CALLBACK EnumWindowsProc(
_In_ HWND hwnd,
_In_ LPARAM lParam
);
Parameters
hwnd [in]
A handle to a top-level window.
lParam [in]
The application-defined value given in EnumWindows or EnumDesktopWindows .
Return value
To continue enumeration, the callback function must return TRUE ; to stop enumeration, it must return FALSE .
由此可知EnumWindowsProc 这个callback 函数的原型声明方式,当callback发生时系统会提供 hwnd 就是我们想要列举的程序handle值,而lParam 在这边并没有用到。
有了这些资讯就可以开始编写提供给LabVIEW 的dll 了,首先先定义回传给LabVIEW的资料型态,由于希望取得的是目标程序的类别字串和视窗名称自串,因此宣告一个结构包和两个字串:
typedef struct tagStrRec {
LStrHandle Str1;
LStrHandle Str2;
} StrRec, *StrRecPtr;
这样的话在LabVIEW 的部分就可以解成cluster 包含两个String 的结构。
接着宣告全局变数用于储存LabVIEW UserEvent的位址和常数。

//labview 密码破解, Labview 忘记密码请找QQ:1425939287

// 纪录LabVIEW UserEvent的位址
LVUserEventRef EnumWindowsEvent;
// 预设最长字串长度为256 Bytes
#define STRING_LENGHT 256
然后再宣告dll 输出的函数:
// 用于注册LabVIEW事件
MgErr __declspec(dllexport) __cdecl RegisterEnumWindowsEvent(LVUserEventRef *value);
// 用于呼叫dll 内EnumerateWindows
void __declspec(dllexport) __cdecl EnumerateWindows(void);
实作这两个函数与callback 函数就完成dll 的部分。

labview 密码破解, Labview 忘记密码请找QQ:1425939287
MgErr __declspec(dllexport) __cdecl RegisterEnumWindowsEvent(LVUserEventRef *value)
{
// 用于纪录LabVIEW 程序内Event 的位址
EnumWindowsEvent = *value;
return 1;
}
void __declspec(dllexport) __cdecl EnumerateWindows(void)
{
// 透过dll 呼叫EnumWindows ,并传入dll内宣告的callback函数位址。

//labview 密码破解, Labview 忘记密码 请找QQ:1425939287

EnumWindows(EnumWindowsProc, NULL);
}
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
char class_name[STRING_LENGHT];
char title[STRING_LENGHT];
StrRec returnData;
// init labview string
returnData.Str1=(LStrHandle)DSNewHandle(sizeof(int32)+STRING_LENGHT*sizeof(uChar));
returnData.Str2=(LStrHandle)DSNewHandle(sizeof(int32)+STRING_LENGHT*sizeof(uChar));
// get windows class and title data
GetClassName(hwnd,class_name, sizeof(class_name));
GetWindowText(hwnd,title,sizeof(title));
// convert char arr to labview string
PopulateStringHandle(returnData.Str1,class_name);
PopulateStringHandle(returnData.Str2,title);
// use labview event to send back data
PostLVUserEvent(EnumWindowsEvent,(void *)&returnData);
return TRUE;
}
LabVIEW 程序的部分主要就是dll 的呼叫与User Event 的注册