




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第第页蜗牛数学一年级蜗牛数学一年级
发表于:2023-05-25来源::点击数:标签:蜗牛一年级数学
对象::蜗牛数学一年级.exe下载/down/wn1.rar"工具:ollydbg1.08bw32dasmv10.0这个程序比较的麻烦,因为,算法在不同的两个地方,算法分析过程首先脱壳用w32Dasm反一下,找到字符串“注册成功”作如下分析==============
对象::蜗牛数学一年级.exe
(下载)
/down/wn1.rar"
工具:ollydbg1.08b
w32dasmv10.0
这个程序比较的麻烦,因为,算法在不同的两个地方,
算法分析过程
首先脱壳
用w32Dasm反一下,
找到字符串“注册成功”
作如下分析
==================================================================================
:004FCDC88BD8movebx,eax
:004FCDCA33C0xoreax,eax我在这里下断
:004FCDCC55pushebp
省掉M行代码
:004FCE678B15C48B5000movedx,dwordptr[00508BC4]
:004FCE6D8B12movedx,dwordptr[edx]
:004FCE6F8B9254040000movedx,dwordptr[edx+00000454]一直往上看
:004FCE75E81A7FF0FFcall00404D94关键call
:004FCE7A757Cjne004FCEF8关键跳转
:004FCE7C6A00push00000000
:004FCE7E668B0D2CCF4F00movcx,wordptr[004FCF2C]
:004FCE85B202movdl,02
*PossibleStringDataReffromCodeObj-"注册成功!感谢您的使用,有问题
请E-mai"
-"l给我或通过聊天工具联系。"
|
:004FCE87B838CF4F00moveax,004FCF38
:004FCE8CE89396F3FFcall00436524
==================================================================================
好了,运行OD
下断,注册拦住了,分析如下
==================================================================================
004FCDCA|.33C0XOREAX,EAX
004FCDCC|.55PUSHEBP
004FCDCD|.681BCF4F00PUSHunpacked.004FCF1B
004FCDD2|.64:FF30PUSHDWORDPTRFS:[EAX]
004FCDD5|.64:8920MOVDWORDPTRFS:[EAX],ESP
004FCDD8|.8D55FCLEAEDX,DWORDPTRSS:[EBP-4]
004FCDDB|.8B83680300MOVEAX,DWORDPTRDS:[EBX+368]
004FCDE1|.E8EA9BF6FFCALLunpacked.004669D0;取第一格注册码
004FCDE6|.8B55FCMOVEDX,DWORDPTRSS:[EBP-4];
13BD0F0是注册码第一部份,存入
004FCDE9|.A1C48B5000MOVEAX,DWORDPTRDS:[508BC4]
004FCDEE|.8B00MOVEAX,DWORDPTRDS:[EAX]
004FCDF0|.0548040000ADDEAX,448;eax是上一次输入的注册码,无聊
004FCDF5|.E8D27BF0FFCALLunpacked.004049CC
004FCDFA|.8D55F8LEAEDX,DWORDPTRSS:[EBP-8]
004FCDFD|.8B836C0300MOVEAX,DWORDPTRDS:[EBX+36C]
004FCE03|.E8C89BF6FFCALLunpacked.004669D0;取第二格注册码
004FCE08|.8B55F8MOVEDX,DWORDPTRSS:[EBP-8];
13A8860是注册码第二部分,再存入
004FCE0B|.A1C48B5000MOVEAX,DWORDPTRDS:[508BC4]
004FCE10|.8B00MOVEAX,DWORDPTRDS:[EAX]
004FCE12|.054C040000ADDEAX,44C;eax是上一次输入的注册码,无聊
004FCE17|.E8B07BF0FFCALLunpacked.004049CC
004FCE1C|.8D45F4LEAEAX,DWORDPTRSS:[EBP-C]
004FCE1F|.50PUSHEAX
004FCE20|.A1C48B5000MOVEAX,DWORDPTRDS:[508BC4]
004FCE25|.8B00MOVEAX,DWORDPTRDS:[EAX]
004FCE27|.8B884C0400MOVECX,DWORDPTRDS:[EAX+44C];ecx取第二格的假注册码
004FCE2D|.A1C48B5000MOVEAX,DWORDPTRDS:[508BC4];神经病
004FCE32|.8B00MOVEAX,DWORDPTRDS:[EAX];神经病
004FCE34|.8B90480400MOVEDX,DWORDPTRDS:[EAX+448];edx取第一格的假注册码
004FCE3A|.A1C48B5000MOVEAX,DWORDPTRDS:[508BC4];神经病
004FCE3F|.8B00MOVEAX,DWORDPTRDS:[EAX];神经病
004FCE41|.E8DE1F0000CALLunpacked.004FEE24;算法call,把假注册码进行计算。一定要
跟进
004FCE46|.8B55F4MOVEDX,DWORDPTRSS:[EBP-C];返回假注册码算好后的数2210230840
004FCE49|.A1C48B5000MOVEAX,DWORDPTRDS:[508BC4]
004FCE4E|.8B00MOVEAX,DWORDPTRDS:[EAX]
004FCE50|.0554040000ADDEAX,454
004FCE55|.E8727BF0FFCALLunpacked.004049CC
004FCE5A|.A1C48B5000MOVEAX,DWORDPTRDS:[508BC4]
004FCE5F|.8B00MOVEAX,DWORDPTRDS:[EAX]
004FCE61|.8B80500400MOVEAX,DWORDPTRDS:[EAX+450];取入机器码运算后的值
004FCE67|.8B15C48B50MOVEDX,DWORDPTRDS:[508BC4];这时d:eax,把这个机器码运算后的值的
内存地址记下来,地址为13BB49C这个数值非常重要,整个破解就靠这个地址了。
004FCE6D|.8B12MOVEDX,DWORDPTRDS:[EDX]
004FCE6F|.8B92540400MOVEDX,DWORDPTRDS:[EDX+454];取入运算后的假注册码
004FCE75|.E81A7FF0FFCALLunpacked.00404D94;这里就是比较的call了,哈哈。
004FCE7A|.757CJNZSHORTunpacked.004FCEF8;最后决定性跳转
004FCE7C|.6A00PUSH0;/Arg1=00000000
004FCE7E|.66:8B0D2CCMOVCX,WORDPTRDS:[4FCF2C];|
004FCE85|.B202MOVDL,2;|
004FCE87|.B838CF4F00MOVEAX,unpacked.004FCF38;|
004FCE8C|.E89396F3FFCALLunpacked.00436524;\unpacked.00436524
004FCE91|.A1C48B5000MOVEAX,DWORDPTRDS:[508BC4]
==================================================================================
好了,跟进那个算法call
==================================================================================
004FEE24/$55PUSHEBP
004FEE25|.8BECMOVEBP,ESP
004FEE27|.6A00PUSH0
004FEE29|.6A00PUSH0
004FEE2B|.6A00PUSH0
004FEE2D|.6A00PUSH0
004FEE2F|.6A00PUSH0
004FEE31|.6A00PUSH0
004FEE33|.53PUSHEBX
004FEE34|.56PUSHESI
004FEE35|.57PUSHEDI
004FEE36|.894DF8MOVDWORDPTRSS:[EBP-8],ECX;存第二格入12f42cRSS:
004FEE39|.8955FCMOVDWORDPTRSS:[EBP-4],EDX;存第一格入12f430RSS:
004FEE3C|.8B7D08MOVEDI,DWORDPTRSS:[EBP+8];存入地址12f458内为空
004FEE3F|.8B45FCMOVEAX,DWORDPTRSS:[EBP-4];存第一格入eaxWORD
004FEE42|.E8F15FF0FFCALLunpacked.00404E38;返回edx=3ac
004FEE47|.8B45F8MOVEAX,DWORDPTRSS:[EBP-8];存第二格入eaxWORD
004FEE4A|.E8E95FF0FFCALLunpacked.00404E38
004FEE4F|.33C0XOREAX,EAX;清0
004FEE51|.55PUSHEBP
004FEE52|.688CEF4F00PUSHunpacked.004FEF8C
004FEE57|.64:FF30PUSHDWORDPTRFS:[EAX]
004FEE5A|.64:8920MOVDWORDPTRFS:[EAX],ESP
004FEE5D|.8BC7MOVEAX,EDI
004FEE5F|.E8145BF0FFCALLunpacked.00404978
004FEE64|.8D45F4LEAEAX,DWORDPTRSS:[EBP-C]
004FEE67|.8B55FCMOVEDX,DWORDPTRSS:[EBP-4];13bbb84为第一格
004FEE6A|.E8A15BF0FFCALLunpacked.00404A10;返回ecx为4
004FEE6F|.8B45F4MOVEAX,DWORDPTRSS:[EBP-C];13bbb84为第一格
004FEE72|.E8D15DF0FFCALLunpacked.00404C48;返回eax为4
004FEE77|.8BF0MOVESI,EAX
004FEE79|.85F6TESTESI,ESI
004FEE7B|.7E47JLESHORTunpacked.004FEEC4;你爷的,搞半天是测试位数acked.004FEE
004FEE7D|.BB01000000MOVEBX,1
004FEE82|8B45F4/MOVEAX,DWORDPTRSS:[EBP-C];转换字符开始
004FEE85|.8A4418FF|MOVAL,BYTEPTRDS:[EAX+EBX-1];依次存入字符到al
004FEE89|.3C50|CMPAL,50;跟50比跟字符'P'
004FEE8B|.750F|JNZSHORTunpacked.004FEE9C;不相等则跳到跟字符Y比
004FEE8D|.8D45F4|LEAEAX,DWORDPTRSS:[EBP-C]
004FEE90|.E80B60F0FF|CALLunpacked.00404EA0
004FEE95|.C64418FF3|MOVBYTEPTRDS:[EAX+EBX-1],30;等于P换成0
004FEE9A|.EB24|JMPSHORTunpacked.004FEEC0;进行下一位比较转换unpacked
004FEE9C|3C59|CMPAL,59;跟59比跟字符'Y'
004FEE9E|.750F|JNZSHORTunpacked.004FEEAF;不相等则跳到跟字符W比
004FEEA0|.8D45F4|LEAEAX,DWORDPTRSS:[EBP-C]
004FEEA3|.E8F85FF0FF|CALLunpacked.00404EA0
004FEEA8|.C64418FF3|MOVBYTEPTRDS:[EAX+EBX-1],31;等于Y换成1
004FEEAD|.EB11|JMPSHORTunpacked.004FEEC0;进行下一位比较转换unpacked
004FEEAF|3C57|CMPAL,57;跟57比跟字符'W'
004FEEB1|.750D|JNZSHORTunpacked.004FEEC0;不相等则比较下位字符
004FEEB3|.8D45F4|LEAEAX,DWORDPTRSS:[EBP-C]
004FEEB6|.E8E55FF0FF|CALLunpacked.00404EA0
004FEEBB|.C64418FF3|MOVBYTEPTRDS:[EAX+EBX-1],32;等于W换成2
004FEEC0|43|INCEBX
004FEEC1|.4E|DECESI
004FEEC2|.^75BE\JNZSHORTunpacked.004FEE82;转换字符结束
004FEEC4|8D45F0LEAEAX,DWORDPTRSS:[EBP-10]
004FEEC7|.8B4DF4MOVECX,DWORDPTRSS:[EBP-C];存入第一格到ecx
004FEECA|.BAA4EF4F00MOVEDX,unpacked.004FEFA4;edx存入"$"字符
004FEECF|.E8C05DF0FFCALLunpacked.00404C94
004FEED4|.8B45F0MOVEAX,DWORDPTRSS:[EBP-10];Eax和13a8860变为"$5656"
004FEED7|.33D2XOREDX,EDX;清除edxX,
004FEED9|.E89AA8F0FFCALLunpacked.00409778;返回eax"5656",Ecx"$5656"
004FEEDE|.8BD7MOVEDX,EDI
004FEEE0|.E81BA7F0FFCALLunpacked.00409600;第一格算法,我这里返回5位数22102
一定要跟进去,关键的关键啊
004FEEE5|.8D45F4LEAEAX,DWORDPTRSS:[EBP-C];存入第一格X,DWO
004FEEE8|.8B55F8MOVEDX,DWORDPTRSS:[EBP-8];存入第二格X,DWO
004FEEEB|.E8205BF0FFCALLunpacked.00404A10;返回ecx等于3cked
004FEEF0|.8B45F4MOVEAX,DWORDPTRSS:[EBP-C];13bd0f0为第二格7878
004FEEF3|.E8505DF0FFCALLunpacked.00404C48;返回eax为4ack
004FEEF8|.8BF0MOVESI,EAX
004FEEFA|.85F6TESTESI,ESI
004FEEFC|.7E47JLESHORTunpacked.004FEF45
004FEEFE|.BB01000000MOVEBX,1
004FEF03|8B45F4/MOVEAX,DWORDPTRSS:[EBP-C];
以下代码与第一格的一模一样,包括算法都一模一样,用同一个算法程序
==================================================================================
再跟进那个算法call里,代码如下.
004095B4/$08C9ORCL,CL
004095B6|.7517JNZSHORTunpacked.0040
004095B8|.09C0OREAX,EAX;无聊啊,就是他自己啊
004095BA|.790EJNSSHORTunpacked.0040
004095BC|.F7D8NEGEAX
004095BE|.E807000000CALLunpacked.004095CA
004095C3|.B02DMOVAL,2D
004095C5|.41INCECX
004095C6|.4EDECESI
004095C7|.8806MOVBYTEPTRDS:[ESI],A
004095C9|.C3RETN
004095CA|$B90A000000MOVECX,0A
004095CF|52PUSHEDX
004095D0|.56PUSHESI
004095D1|31D2/XOREDX,EDX
004095D3|.F7F1|DIVECX;字符数值除以0A(整除余数在edx
004095D5|.4E|DECESI
004095D6|.80C230|ADDDL,30;dl加上30,3
004095D9|.80FA3A|CMPDL,3A;跟3A比,主要是保证dl里是数字
004095DC|.7203|JBSHORTunpacked.0040
004095DE|.80C207|ADDDL,7
004095E1|8816|MOVBYTEPTRDS:[ESI],;把dl移到11fcbf
004095E3|.09C0|OREAX,EAX
004095E5|.^75EA\JNZSHORTunpacked.004;
总结,除以0A取余加30变成数字,直到eax等于0D1]FEFFD8]
004095E7|.59POPECX;其实等效于十六进制变为十进制
004095E8|.5APOPEDX
004095E9|.29F1SUBECX,ESI
004095EB|.29CASUBEDX,ECX
004095ED|.7610JBESHORTunpacked.0040
=======================================================================================
好了,我们应该知道了,程序把我们输入的值变成十进制数跟一个值比,而这个值一定跟机器码有关。
而这个运算,在我们跟踪时没有发现运算痕迹,
初步猜测可能在运行时就运算了,而我们唯一的线索就是我刚才叫你们记下的那个值的地址13BB49C
所以,我只能注意这个地址了,
于是我一直跟踪,花了好多时间,终于找到了,下面这段程序。
这个程序就是麻烦在这里
=======================================================================================
004FEC21|.7512JNZSHORTunpacked.004F
004FEC23|.8B45FCMOVEAX,DWORDPTRSS:[E
004FEC26|.0544040000ADDEAX,444;哈哈,下面这个字符串就是机器码了P-4]]FEFF
004FEC2B|.BA10EE4F00MOVEDX,unpacked.004FEE;ASCII"661023D"
004FEC30|.E8975DF0FFCALLunpacked.004049CC
004FEC35|8B45FCMOVEAX,DWORDPTRSS:[E;返回机器码地址13a8860
004FEC38|.8B88440400MOVECX,DWORDPTRDS:[E;返回机器码地址13a8860
004FEC3E|.8B45FCMOVEAX,DWORDPTRSS:[E
004FEC41|.0544040000ADDEAX,444;神经病,又入机器码到eax
004FEC46|.BA20EE4F00MOVEDX,unpacked.004FEE;字符"P",哈哈明白了吧,怎样练成机器码的E0-4]4]EFFD8]
004FEC4B|.E84460F0FFCALLunpacked.00404C94
004FEC50|.8D45F8LEAEAX,DWORDPTRSS:[E
004FEC53|.E8205DF0FFCALLunpacked.00404978
004FEC58|.8B45FCMOVEAX,DWORDPTRSS:[E
004FEC5B|.8B80440400MOVEAX,DWORDPTRDS:[E;切,终于练成(P661-023D)机器码13BA9944]EFFD8]
004FEC61|.E8E25FF0FFCALLunpacked.00404C48;返回机器码长度8入EAX.
004FEC66|.8BF0MOVESI,EAX;肯定有行动了,才入esi
004FEC68|.85F6TESTESI,ESI;测测是不是空的,我晕死
004FEC6A|.7E6BJLESHORTunpacked.004F
004FEC6C|.BB01000000MOVEBX,1;哈哈,肯定是运算开始了
004FEC71|8B45FC/MOVEAX,DWORDPTRSS:[;拷,地址换算X,DWOR
004FEC74|.8B80440400|MOVEAX,DWORDPTRDS:[;移入机器码AX,DW
004FEC7A|.8A4418FF|MOVAL,BYTEPTRDS:[EA
004FEC7E|.04D0|ADDAL,0D0;字符值加上0d0D0
004FEC80|.2C0A|SUBAL,0A;减掉0a
004FEC82|.7328|JNBSHORTunpacked.004;当且仅当(SFXOROF)=1时,也就是看是否是字母1]FFD8]
004FEC84|.8D85E8FFFE|LEAEAX,DWORDPTRSS:[;以下是上面条件不成立的算法
004FEC8A|.8B55FC|MOVEDX,DWORDPTRSS:[;拷,地址换算
004FEC8D|.8B92440400|MOVEDX,DWORDPTRDS:[;移入机器码到edxW
004FEC93|.8A541AFF|MOVDL,BYTEPTRDS:[ED;移入字符到dl
004FEC97|.E8C45EF0FF|CALLunpacked.00404B60
004FEC9C|.8B95E8FFFE|MOVEDX,DWORDPTRSS:[
004FECA2|.8D45F8|LEAEAX,DWORDPTRSS:[
004FECA5|.E8A65FF0FF|CALLunpacked.00404C50;返回edx为原字符
004FECAA|.EB27|JMPSHORTunpacked.004;第二种情况结束,也就是如果是数字则不变004ECD3]FEFFE8]
004FECAC|8B45FC|MOVEAX,DWORDPTRSS:[;第一种情况的算法,即如果是字母
004FECAF|.8B80440400|MOVEAX,DWORDPTRDS:[
004FECB5|.0FB64418FF|MOVZXEAX,BYTEPTRDS:
004FECBA|.8D95E4FFFE|LEAEDX,DWORDPTRSS:[
004FECC0|.E83BA9F0FF|CALLunpacked.00409600;字母变成数字的算法啊
004FECC5|.8B95E4FFFE|MOVEDX,DWORDPTRSS:[;p变成80
004FECCB|.8D45F8|LEAEAX,DWORDPTRSS:[
004FECCE|.E87D5FF0FF|CALLunpacked.00404C50;这个call也要跟返回ecx为2404C5
004FECD3|43|INCEBX
004FECD4|.4E|DECESI
004FECD5|.^759A\JNZSHORTunpacked.004;算好后值为(P)80661-02368(D)EC71
004FECD7|8D45F4LEAEAX,DWORDPTRSS:[E
004FECDA|.8B55F8MOVEDX,DWORDPTRSS:[E;引入算好后的地址13bb620[8066102368]]FEFFE4]
004FECDD|.E82E5DF0FFCALLunpacked.00404A10
004FECE2|.8D45F8LEAEAX,DWORDPTRSS:[E;引入算好后的地址13bb620[8066102368]]FEFFE4]
004FECE5|.E88E5CF0FFCALLunpacked.00404978
004FECEA|.8B45F4MOVEAX,DWORDPTRSS:[E;引入算好后的地址13bb620[8066102368]]FEFFE4]
004FECED|.E8565FF0FFCALLunpacked.00404C48;返回算好后值的长度到eax00404C48
004FECF2|.8BD8MOVEBX,EAX;再移到ebx,EA
004FECF4|.83FB01CMPEBX,1;跟1比EB
004FECF7|.7C25JLSHORTunpacked.004FE
004FECF9|8D85E0FFFE/LEAEAX,DWORDPTRSS:[
004FECFF|.8B55F4|MOVEDX,DWORDPTRSS:[;引入算好后的地址13bb620[8066102368]]FEFFE0]
004FED02|.8A541AFF|MOVDL,BYTEPTRDS:[ED;依次移入算好后的字符EPTRDS:[
004FED06|.E8555EF0FF|CALLunpacked.00404B60
004FED0B|.8B95E0FFFE|MOVEDX,DWORDPTRSS:[
004FED11|.8D45F8|LEAEAX,DWORDPTRSS:[
004FED14|.E8375FF0FF|CALLunpacked.00404C50
004FED19|.4B|DECEBX
004FED1A|.85DB|TESTEBX,EBX;总结,根本就是首尾换位而已BP-
004FED1C|.^75DB\JNZSHORTunpacked.004;完成后,变为8632023608地址在13bb7bc9]FEFFE0]
004FED1E|8D45F4LEAEAX,DWORDPTRSS:[E
004FED21|.8B55F8MOVEDX,DWORDPTRSS:[E;移入算后的8632023608地址在13bb7bc8]]FEFFE
004FED24|.E8E75CF0FFCALLunpacked.00404A10
004FED29|.8D45F8LEAEAX,DWORDPTRSS:[E
004FED2C|.E8475CF0FFCALLunpacked.00404978
004FED31|.8B45F4MOVEAX,DWORDPTRSS:[E;移入算后的8632023608地址在13bb7bcC]]FEFFE
004FED34|.E80F5FF0FFCALLunpacked.00404C48;又取出该值的长度到eax.00404C48
004FED39|.8BF0MOVESI,EAX
004FED3B|.85F6TESTESI,ESI;不能为0啊SI,E
004FED3D|.7E74JLESHORTunpacked.004F
004FED3F|.BB01000000MOVEBX,1;唉,还算,好无聊啊。D
004FED44|8B45F4/MOVEAX,DWORDPTRSS:[;头晕啊,又要算了DWORDPT
004FED47|.807C18FF3|CMPBYTEPTRDS:[EAX+E;跟字符0比啊TEPT
004FED4C|.7522|JNZSHORTunpacked.004;不等于0则跳到4FED70acked.
004FED4E|.8D85DCFFFE|LEAEAX,DWORDPTRSS:[;等于需则用第二种算WORDPTR
004FED54|.8B55F4|MOVEDX,DWORDPTRSS:[
004FED57|.8A541AFF|MOVDL,BYTEPTRDS:[ED
004FED5B|.E8005EF0FF|CALLunpacked.00404B60
004FED60|.8B95DCFFFE|MOVEDX,DWORDPTRSS:[
004FED66|.8D45F8|LEAEAX,DWORDPTRSS:[;说白了,如果等于0还是0啊PTRSS:[B
004FED69|.E8E25EF0FF|CALLunpacked.00404C50
004FED6E|.EB3F|JMPSHORTunpacked.004
004FED70|8D85D4FFFE|LEAEAX,DWORDPTRSS:[;开始第一种算X,DWOR
004FED76|.8B55F4|MOVEDX,DWORDPTRSS:[
004FED79|.8A541AFF|MOVDL,BYTEPTRDS:[ED;再次移入dl成偏移地址PTRDS:[
004FED7D|.E8DE5DF0FF|CALLunpacked.00404B60
004FED82|.8B85D4FFFE|MOVEAX,DWORDPTRSS:[;字符再入eax,DWO
004FED88|.E8AFA9F0FF|CALLunpacked.0040973C;返回eax为字符,ecx为地址040973CB
004FED8D|.50|PUSHEAX;压入SH
004FED8E|.B80A000000|MOVEAX,0A;eax=0a
004FED93|.5A|POPEDX;弹出,即edx=字符8
004FED94|.2BC2|SUBEAX,EDX;把eax减去edxDX
004FED96|.8D95D8FFFE|LEAEDX,DWORDPTRSS:[
004FED9C|.E85FA8F0FF|CALLunpacked.00409600
004FEDA1|.8B95D8FFFE|MOVEDX,DWORDPTRSS:[
004FEDA7|.8D45F8|LEAEAX,DWORDPTRSS:[
004FEDAA|.E8A15EF0FF|CALLunpacked.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 先进技术参观保密协议书范本
- 海外市场推广与品牌合作合同
- 国际人才引进担保与培训协议
- 税务代理补充协议
- 拆迁补偿款支付居间服务协议
- 车辆维修企业品牌授权与加盟合同
- 出口货物贸易代理佣金合同范本
- 餐饮企业旗下特色餐厅品牌及店面打包转让合同
- 股东退股与公司财务管理制度协议
- 住宅小区消防设施维护管理服务合同样本
- 肿瘤科放疗健康宣教
- 陪伴孩子的成长课件
- 你的名字叫什么-音乐教案
- 《员工的七个习惯》课件
- 分布式光伏危险源辨识清单
- 南开大学商学院管理综合历年考研真题汇编(含部分答案)(1)合集
- 上海上海市实验学校西校小升初数学期末试卷测试题(Word版-含解析)
- 有限空间作业审批制度
- (新插图)人教版五年级下册数学 6-3-1 分数加减混合运算 知识点梳理课件
- 家庭教育环境与小学生心理健康的关系 论文
- 蒸汽机的原理
评论
0/150
提交评论