文档库 最新最全的文档下载
当前位置:文档库 › 超级函数表达式运算器v20破解实例

超级函数表达式运算器v20破解实例

超级函数表达式运算器v20破解实例
超级函数表达式运算器v20破解实例

超级函数表达式运算器v20破解心得

[软件名称]超级函数表达式运算器v20 算法分析

[软件介绍]

超级函数表达式运算器既是方便实用的数字计算器,又是一个会列表达式就会运算的超级新颖的多功能公式化运算器。

它包括算术计算、进制转换、逻辑处理、数值处理、字符处理、三角函数及推导函数处理等模块,可综合性的计算各种多层

嵌套、复杂的函数表达式。你只要象在纸上列表达式一样列出符合要求的运算式,就立即可以看到运算结果,而且运算结果

随着表达式的不断变化而不断变换显示。表达式修改方便,可复制粘贴,可用键盘快速输入。2.0版界面更加美观、提示更加

科学、操作更加简单、更加方便实用。2,0版新增独特的批量运算功能,可一次运算多个表达式的值并可以计算各单项运算之

和。可广泛应用于办公、学习及需要使用计算器进行复杂计算的各个领域。超级函数表达式运算器是进行数字计算、公式运算

、函数应用、vb编程的好帮手。

[使用限制] 试用30天,无功能限制

[保护方式] 采用机器码检查注册码,以保证注册码不得多机使用。并在程序退出时检验注册码,使破解增加了难度。

[破解工具] SmartCheck6.20、 olldbg1.1 、Peid0.93、QuickUnpack、Regmon7.02

[破解目的] 研究算法分析, 了解VB的数据类型,掌握点儿知识

[破解作者] CCRLEI ccrlei@https://www.wendangku.net/doc/607819090.html,

[作者声明] 初学Crack,只是感兴趣,没有其他目的。

本破解纯以学习和交流为目的,偶得一点心得,大家分享。如有错误,蒙请大侠们指正。转载时请保持完整。

之所以起这个题目,是因为表面上程序已经提示你注册成功了,但程序在退出时还要校验注册码是否含作者指定的内容,

如果没有的话,就会自动删除该程序,够狠的。好了,废话少说,入正题吧!

[破解过程]

1、查壳

PEiDv0.93

PECompact 2.x -> Jeremy Collake

2、脱壳

QuickUnpack

3、编程语言

PEiDv0.93

Microsoft V isual Basic 5.0 / 6.0

4、破解调试

1)运行程序,提示共享软件还可用多少天,欢迎注册使用等提示。进入注册选项发现:机器码22222222222854720884_754026158,

要求输入注册码。

2)由于作者使用VB开发,所以先用SmartCheck看看作者的关于注册的大概思路。

软件启动后(主要部分)

(1)读取注册表 "SOFTWARE\softjas\data\Nam"下键值

RegCreateKeyA(HKEY:80000002, char *:00140934, PTR:0012FD44) returns LONG:0

键值内容转换后和机器码比较(通过读硬盘型号、硬盘物理系列号生成机器码,由机器码变成注册码的一部分

(另一部分在退出程序时使用))如不符则

(2)读键值

HKEY_CURRENT_USER\Software\Microsoft\htoolse\Data\w1、w2、w3这一部分在后面介绍,它的目的是算还共享多少天。

(3)顺便说一下程序如何得到机器码:a、通过读硬盘型号"85TC2088T"、硬盘物理系列号"TOSHIBA MK4026GAX"

b、"TOSHIBA MK4026GAX"取空格后的MK4026GAX,第一个字符“M”Ascii值77,取后面的7,第二个字符“K”75-》5,数字的不变

“4”-》4,“0”-》0,“6”-》6,“G”71-》1,“A”65-》5,“X”88-》8---------》754026158

c、"85TC2088T"换成" 85TC2088T"(11个空格共二十位),第一个“”(空格)Ascii值32取后面“2”,依次共11个“2”

即“22222222222”数字不变“85”,“T”84-“4”。。。。。。。。。同上,所以本机机器码“22222222222854720884_754026158”

以上是通过SmartCheck分析得(机器码部分没有经OD核实,哪位大侠如经汇编核实,请告诉我我的转换分析是否正确,尤其是11个空格那儿),

但输入的试炼码如何转换并不清楚,虽说通过SmartCheck完全可以试出注册码,但我们的目的应该是注册机,呵呵,所以OD上。

3)用OD调试:(只作简单说明)

由于作者采用“Instr”比较真假注册码,所以用__vbainstr下断

OD Alt+E Ctrl+N __vbainstr 下断

运行,输入试练码876543210

断在7628BD94 > 55 PUSH EBP

Ctrl+F9, F8回到主程序,上下看看,左右找找,在这里

。。。。。。

00441460 . |50 PUSH EAX

00441461 . |FF15 B0734400 CALL DWORD PTR DS:[<&msvbvm50.__vbaStrV arVal>] ; msvbvm50.__vbaStr V arV al

00441467 . |50 PUSH EAX

00441468 . |FFD7 CALL EDI ; 注册码的第一个字符8的值“38” (16进制)放入到AX中0044146A . |68 FC994000 PUSH 超级函数.004099FC

0044146F . |66:8BD8 MOV BX,AX ; BX=AX=0038 00441472 . |FFD7 CALL EDI ;msvbvm50.rtcAnsiV alueBstr Ascii转换“A”-> 41 (16进制)放到AX中

00441474 . |66:2BD8 SUB BX,AX ; BX=38-41=FFF9 及十进制-9

00441477 . |8D95 38FFFFFF LEA EDX,DWORD PTR SS:[EBP-C8] ;

0044147D . |0F80 B3010000 JO 超级函数.00441636

00441483 . |8D4D 9C LEA ECX,DWORD PTR SS:[EBP-64]

00441486 . |66:899D 40FFF>MOV WORD PTR SS:[EBP-C0],BX

。。。。。

004414B2 . |FF15 B0734400 CALL DWORD PTR DS:[<&msvbvm50.__vbaStrV arVal>] ; 换成10进制的字符“-9”,放入Eax

004414B8 . |50 PUSH EAX ;Eax=“-9”入栈

004414B9 . |FF15 80744400 CALL DWORD PTR DS:[<&msvbvm50.rtcR8V alFromBstr>] ; msvbvm50.rtcR8 V alFromBstr

004414BF . |DC25 48204000 FSUB QWORD PTR DS:[402048] ;浮点减st=-9.000000000000000000 ds:[00402048]=-0.50000000

;St0=-8.500000000

004414C5 . |833D 00304400>CMP DWORD PTR DS:[443000],0

004414CC . |75 08 JNZ SHORT 超级函数.004414D6

004414CE . |DC35 50204000 FDIV QWORD PTR DS:[402050] ;浮点除st=-8.500000000000000000 ds:[00402050]=2.500000000

; St0=-3.400000

004414D4 . |EB 11 JMP SHOR T 超级函数.004414E7

004414D6 > |FF35 54204000 PUSH DWORD PTR DS:[402054]

004414DC . |FF35 50204000 PUSH DWORD PTR DS:[402050]

004414E2 . |E8 DD0BFCFF CALL

004414E7 > |DFE0 FSTSW AX

004414E9 . |A8 0D TEST AL,0D

004414EB . |0F85 40010000 JNZ 超级函数.00441631

004414F1 . |FF15 68744400 CALL DWORD PTR DS:[<&msvbvm50.__vbaFPInt>] ; msvbvm50.__vbaFPInt 取整 St0=-4.00000

004414F7 . |DD9D 40FFFFFF FSTP QWORD PTR SS:[EBP-C0] ;St0=-4.00000 .........

0044152C . FF15 B8734400 call [<&msvbvm50.__vbaV arCat>] ; msvbvm50.__vbaV arCat 字符串连接。。。。

00441534 . |8D8D 6CFFFFFF LEA ECX,DWORD PTR SS:[EBP-94] ;ecx="-4"

0044153A . |FFD6 CALL ESI

0044153C . |8D85 D8FEFFFF LEA EAX,DWORD PTR SS:[EBP-128]

00441542 . |8D8D E8FEFFFF LEA ECX,DWORD PTR SS:[EBP-118]

00441548 . |50 PUSH EAX

00441549 . |8D55 DC LEA EDX,DWORD PTR SS:[EBP-24]

0044154C . |51 PUSH ECX

0044154D . |52 PUSH EDX

0044154E . |FF15 70744400 CALL DWORD PTR DS:[<&msvbvm50.__vbaVarForNext>] ; msvbvm50.__vbaV arForNext

注册码下一个字符00441554 . |8B1D 18734400 MOV EBX,DWORD PTR DS:[<&msvbvm50.rtcMidCharV ar>] ; msvbvm50.rtcM idCharV ar

0044155A .^\E9 A2FEFFFF JMP 超级函数.00441401

。。。

0044152C . FF15 B8734400 call [<&msvbvm50.__vbaV arCat>] ; msvbvm50.__vbaV arCat

876543210

注:读取试练码(个数为偶数)的顺序为最后一个、第一个、倒数第二个、第二个。。。。依此类推 ,个数为奇数的顺序为第一个、倒数第

一个、第二个、倒数第二个。。。。依此类推,本例为奇数个

计算结果"-4-7-4-7-5-6-5-6-5" 和本机的机器码22222222222854720884_754026158的前一部分即22222222222854720884

用vbainstr比较如结果大于0,Vbainstr比较后一段754026158,通过则注册成功。

另外忘了在哪里机器码的前十位每两位对应一个字符,后面一个对应一个(大侠帮忙)

4)推注册码:

以我的机器为例: 机器码: 22222222222854720884_754026158

x x x x xFUNKSFAUUK SNKAFPDNU

由于校验时是后一个前一个的读注册码(机器码位数为偶数),所以还得给他调换一下,后一个前一个xxxxxFUNKSFAUUKSNKAFPDNU-》xxFNSAUSKFDUNPANKUFKUxxx (每个机器码字符可对应2~3个注册码字符,因为上面有个除以2.5)

好了注册码出来了,试试,运行程序-》注册-》填入注册码嘿嘿嘿嘿,通过了,提示我“恭喜您,注册成功!”

5)话说几天后,又拿出这个软件用用,算算术什么的,还行,挺好用,关闭退出,咦,怎么桌面上的快捷方式图标变了,在点击,说找不

到可执行文件了,由于是春节放假期间,我以为我的笔记本中了病毒,因为杀毒软件好几天没升级了,也没理他,再把原来备份的一个

文件恢复出来接着用,运行了几次又没了,这下子怪了,升级杀毒软件,杀毒,没问题呀,我想我想,我使劲的想,哼哼,应该是程序

本身的问题吧,是不是我的注册码中“x”太多,像是破解出来的,(因为把x改成y也可以注册),或者。。。。不明白,接着使用

SmartCheck,看看程序退出时有什么动作,哈哈

InStr(long:1, String:"xxFNSAUSK...", String:"CJHBYS", Integer:0) returns LONG:0

Arguments

--------------------

Long start = 1 0x00000001

String string1 = 00141EC4

= "xxFNSAUSKFDUNP ANKUFKUxxx"

String string2 = 0040952C

= "CJHBYS"

Integer compare = 0 0x0000

还要比较注册码中是否有字符串"CJHBYS",小样的,往下看看,如果注册码中没有"CJHBYS",就生成个批处理文件In.bat把程序删掉,

够狠的吧。把它加到注册码里,运行(可先到注册表把 "SOFTWARE\softjas\data\Nam"下值删掉,就可重新

注册),重新注册

xxFNSAUSKFDUJBSYHCNPANKUFKUxxx 通过,再用SmartCheck看看退出,还要检验,这回检验是否含有“5309582”。。。。我烦了,我

哪知道那个破数是怎么来的,检测不过去程序又会自动生成一个In.bat文件写上删除这个可执行文件,再删除In.bat。

不想了,睡觉去。。。。。。

6)若干天后

还是得解决“5309582”的来源问题,接着OD吧,原来是And来得,如下:

;以下为退出时检验注册码

。。。。。。

00435623 . FF15 F8734400 call [<&msvbvm50.__vbaStrCopy>] ; msvbvm50.__vbaStrCopy

00435629 > 8B45 E8 mov eax, [ebp-18] ;机器码前八位22222222放入Eax

0043562C . 50 push eax ;推入

0043562D . FF15 80744400 call [<&msvbvm50.rtcR8V alFromBstr>>; msvbvm50.rtcR8V alFromBstr 00435633 . 8B3D 40744400 mov edi, [<&msvbvm50.__vbaFpI4>] ; msvbvm50.__vbaFpI4

00435639 . FFD7 call edi ; <&msvbvm50.__vbaFpI4> 将22222222转为16进制放入Eax 0043563B . 8B4D E4 mov ecx, [ebp-1C] ;机器码后九位754026158放入Ecx

0043563E . 8BD8 mov ebx, eax ;将前八位转为16进制的数再放入Ebx

00435640 . 51 push ecx ;把754026158推入

00435641 . FF15 80744400 call [<&msvbvm50.rtcR8ValFromBstr>>; msvbvm50.rtcR8V alFromBstr 00435647 . FFD7 call edi ;将后9(或8位)转换为16进制放入Eax

00435649 . 23D8 and ebx, eax ;两个数逻辑与结果51048E 即10进制的5309582

0043564B . 53 push ebx

0043564C . FF15 70724400 call [<&msvbvm50.__vbaStrI4>] ; msvbvm50.__vbaStrI4 51048E的10进制5309582

00435652 . 8BD0 mov edx, eax

00435654 . 8D4D E0 lea ecx, [ebp-20]

00435657 . FFD6 call esi

00435659 . 8B15 58304400 mov edx, [443058] ;注册码放入Edx

0043565F . 6A 01 push 1

00435661 . 52 push edx ;Edx入栈

00435662 . 33FF xor edi, edi

00435664 . 68 2C954000 push 0040952C ; UNICODE "CJHBYS" 入栈

00435669 . 57 push edi

0043566A . FF15 DC734400 call [<&msvbvm50.__vbaInStr>] ; msvbvm50.__vbaInStr 检验是否有"CJHBYS"

00435670 . 83F8 01 cmp eax, 1 ;"CJHBYS"出现在第几位开始(19)和1比较00435673 . 7D 12 jge short 00435687 ;大于等于1(及注册码中含"CJHBYS")则跳如下一步,

生成In.bat见下面

00435675 . 8D45 D0 lea eax, [ebp-30]

00435678 . 50 push eax

00435679 . E8 92F7FFFF call 00434E10

0043567E . 8D4D D0 lea ecx, [ebp-30]

00435681 . FF15 78724400 call [<&msvbvm50.__vbaFreeVar>] ; msvbvm50.__vbaFreeV ar

00435687 > 8D4D A0 lea ecx, [ebp-60]

0043568A . 8D55 D0 lea edx, [ebp-30]

0043568D . 51 push ecx

0043568E . 52 push edx

0043568F . C745 A8 58304>mov dword ptr [ebp-58], 00443058

00435696 . C745 A0 08400>mov dword ptr [ebp-60], 4008

0043569D . E8 9EBF0000 call 00441640

004356A2 . 8B45 E0 mov eax, [ebp-20] ;将5309582放入Eax

004356A5 . 8D4D D0 lea ecx, [ebp-30]

004356A8 . 6A 01 push 1

004356AA . 8D55 90 lea edx, [ebp-70]

004356AD . 8945 98 mov [ebp-68], eax

004356B0 . 51 push ecx

004356B1 . 52 push edx

004356B2 . 8D45 C0 lea eax, [ebp-40]

004356B5 . 57 push edi

004356B6 . 50 push eax

004356B7 . C745 90 08000>mov dword ptr [ebp-70], 8

004356BE . C745 88 01000>mov dword ptr [ebp-78], 1

004356C5 . C745 80 02800>mov dword ptr [ebp-80], 8002

004356CC . FF15 AC734400 call [<&msvbvm50.__vbaInStrV ar>;msvbvm50.__vbaInStrV ar注册码换算后检验是

否含5309582

004356D2 . 8D4D 80 lea ecx, [ebp-80]

。。。。

7)推注册码:

22222222222854720884_754026158和5309582连接

222222222228547208847540261585309582

x x x x xFUNKSFAUUKSNKAFPDNUNIAXNUF

xxxxxFUNKSFAUUKSNKAFPDNUNIAXNUF 共31位为奇数,所以要头一个尾一个的排下序

xxxUKFUKNAPNNANFUXIUDFKSUASNFxx 最后再把要检验的CJHBYS插入

xxxUKFUKNAPNNANFCJHBYSUXIUDFKSUASNFxx

把注册码拷贝到注册表 "SOFTWARE\softjas\data\Nam"下(程序把注册码放在这个地方),SmartCheck运行程序,初始化时

校验注册码通过,退出程序,Unload时校验注册码也通过,这回就不生成In.bat文件了,所以程序也就不被删除了.

8)退出程序时代码分析

;以下为程序退出时生成新文件来删除程序注: 我把<超级函数表达式运算器v20.ece>改为了<1234.exe>方便调试

(因为调试时的中文文件名有时会显示出乱码,所以改了)

。。。。

0043507A > \8B55 C8 mov edx, [ebp-38] ;文件名放倒Edx 本事例为"1234"

0043507D . 52 push edx ;入堆栈

0043507E . 68 A4944000 push 004094A4 ;

00435083 . FFD7 call edi ;字符串连接后1234.exe放入Eax

00435085 . 8BD0 mov edx, eax ;edx 1234.exe

00435087 . 8D4D CC lea ecx, [ebp-34] ;

。。。。

004350A6 . FF15 F8734400 call [<&msvbvm50.__vbaStrCopy>] ; msvbvm50.__vbaStrCopy 004350AC . 8B45 E4 mov eax, [ebp-1C] ;in.bat放入Eax

004350AF . 50 push eax ;入栈

004350B0 . 6A 01 push 1

004350B2 . 6A FF push -1

004350B4 . 6A 02 push 2

004350B6 . FF15 D0734400 call [<&msvbvm50.__vbaFileOpen>] ; msvbvm50.__vbaFileOpen

打开文件in.bat

004350BC . 8B1D 8C734400 mov ebx, [<&msvbvm50.__vbaPrintFile>>; msvbvm50.__vbaPrintFile 004350C2 . 68 C8944000 push 004094C8

004350C7 . 6A 01 push 1

004350C9 . 68 D8754000 push 004075D8

004350CE . FFD3 call ebx ; <&msvbvm50.__vbaPrintFile>

004350D0 . 8B4D CC mov ecx, [ebp-34]

004350D3 . 83C4 0C add esp, 0C

004350D6 . 68 DC944000 push 004094DC

004350DB . 51 push ecx

004350DC . FFD7 call edi

004350DE . 8BD0 mov edx, eax ;edx=eax="del 1234.exe"

004350E0 . 8D4D C8 lea ecx, [ebp-38] ;

004350E3 . FFD6 call esi ;

004350E5 . 50 push eax

004350E6 . 6A 01 push 1

004350E8 . 68 D8754000 push 004075D8

004350ED . FFD3 call ebx

004350EF . 83C4 0C add esp, 0C

004350F2 . 8D4D C8 lea ecx, [ebp-38]

004350F5 . FF15 78744400 call [<&msvbvm50.__vbaFreeStr>] ; msvbvm50.__vbaFreeStr 004350FB . 8B55 CC mov edx, [ebp-34] ;1234.exe

004350FE . 68 EC944000 push 004094EC ; UNICODE "if exist "

00435103 . 52 push edx ;1234.exe

00435104 . FFD7 call edi ;msvbvm50.__vbaStrCat

00435106 . 8BD0 mov edx, eax ;UNICODE "if exist 1234.exe"

00435108 . 8D4D C8 lea ecx, [ebp-38]

0043510B . FFD6 call esi ;msvbvm50.__vbaStrCat

0043510D . 50 push eax

0043510E . 68 04954000 push 00409504 ; UNICODE " GOTO START" 00435113 . FFD7 call edi ;msvbvm50.__vbaStrCat

00435115 . 8BD0 mov edx, eax ;UNICODE "if exist 1234.exe GOTO START" 00435117 . 8D4D C4 lea ecx, [ebp-3C]

0043511A . FFD6 call esi

0043511C . 50 push eax

0043511D . 6A 01 push 1

0043511F . 68 D8754000 push 004075D8

00435124 . FFD3 call ebx ;msvbvm50.__vbaPrintFile

00435126 . 83C4 0C add esp, 0C

00435129 . 8D45 C4 lea eax, [ebp-3C]

0043512C . 8D4D C8 lea ecx, [ebp-38]

0043512F . 50 push eax

00435130 . 51 push ecx

00435131 . 6A 02 push 2

00435133 . FF15 00744400 call [<&msvbvm50.__vbaFreeStrList>] ; msvbvm50.__vbaFreeStrList 00435139 . 83C4 0C add esp, 0C

0043513C . 68 DC944000 push 004094DC

00435141 . 68 B4944000 push 004094B4

00435146 . FFD7 call edi

00435148 . 8BD0 mov edx, eax ;(UNICODE "del in.bat")

0043514A . 8D4D C8 lea ecx, [ebp-38]

0043514D . FFD6 call esi

0043514F . 50 push eax

00435150 . 6A 01 push 1

00435152 . 68 D8754000 push 004075D8

00435157 . FFD3 call ebx ;msvbvm50.__vbaPrintFile

00435159 . 83C4 0C add esp, 0C

0043515C . 8D4D C8 lea ecx, [ebp-38]

0043515F . FF15 78744400 call [<&msvbvm50.__vbaFreeStr>] ;

00435165 . 6A 01 push 1

00435167 . FF15 20734400 call [<&msvbvm50.__vbaFileClose>] ; msvbvm50.__vbaFileClose 0043516D . 8D55 E4 lea edx, [ebp-1C]

00435170 . 8D45 80 lea eax, [ebp-80]

00435173 . 6A 00 push 0

00435175 . 50 push eax

00435176 . 8955 88 mov [ebp-78], edx

00435179 . C745 80 08400>mov dword ptr [ebp-80], 4008

00435180 . FF15 70734400 call [<&msvbvm50.rtcShell>] ; msvbvm50.rtcShell

shell执行文件In.bat

00435186 . DDD8 fstp st

00435188 . FF15 90724400 call [<&msvbvm50.__vbaEnd>] ; msvbvm50.__vbaEnd 结束9)In.bat文件内容:(注我调试时把文件名该为了1234.exe)

:START

del 1234.EXE

if exist 1234.EXE GOTO START

del in.bat

这个文件有时删除不了那个可执行文件,尤其是文件名中带括号的,原因不知,可能是全角和半角的事吧。

10)注册机算法:VB做得

'超级函数表达式运算器v20 注册机

'ccrlei

'2006-2-8

Private Sub Command2_Click()

Unload Me

End Sub

Private Sub Command1_Click()

Dim SnWord, SJqm, SJqm1, Sntemp, Sntemp1, Sntemp2, Sntemp3 As String

Dim i, j As Integer

Dim Dsn, SnLen1, JqmLen, JqmLenL, JqmLenR As Integer

Dim Sq, Sh, Stemp As String

SJqm = Text1.Text '机器码变量

JqmLen = Len(SJqm) - 1 '机器码长度

JqmLenL = InStr(1, SJqm, "_", vbBinaryCompare) - 1 '"_"左边字符串长度

JqmLenR = JqmLen - JqmLenL '"_"右边字符串长度

SJqm = Mid(SJqm, 1, JqmLenL) + Mid(SJqm, JqmLenL + 2, JqmLenR) '去掉“_”

Sq = Mid(SJqm, 1, 8) '程序退出时检验注册码要用机器码前八位

Sh = Mid(SJqm, JqmLenL + 1, JqmLenR) '程序退出时检验注册码要用机器码原“_”后字符串

If Len(Sh) > 9 Then '机器码后段位数大于9位时取8位,否则取9位

Sh = Mid(SJqm, JqmLen - 7, 8)

End If

Stemp = CDbl(Sq) And CDbl(Sh) '前八位和后8或9位逻辑与

SJqm1 = SJqm + Stemp '新生成的机器码

i = 0

For i = 1 To Len(SJqm1) - 5 '机器码前10位每2位对应一个注册码

If i <= 5 Then

SnWord = Mid(SJqm1, i * 2 - 1, 2)

Else

SnWord = Mid(SJqm1, 5 + i, 1)

End If

Dsn = Int(V al(SnWord) * 2.5 - 0.5 + 65 + 1) '转换详见上介绍

Sntemp = Sntemp + Chr(Dsn) '连接

Next i

SnLen1 = Len(Sntemp) '新注册码长度

If SnLen1 / 2 <> Int(SnLen1 / 2) Then '根据注册码位数的奇偶性重新排序

i = 0

For i = 1 To SnLen1

If i / 2 <> Int(i / 2) Then

Sntemp1 = Sntemp1 + Mid(Sntemp, i, 1)

Else

Sntemp2 = Mid(Sntemp, i, 1) + Sntemp2

End If

Next i

Sntemp3 = Sntemp1 + Sntemp2

sntemp4 = Mid(Sntemp3, 1, Int(SnLen1 / 2) + 1) + "CJHBYS" + Mid(Sntemp3, Int(SnLen1 / 2) + 2 _ , SnLen1 - Int(SnLen1 / 2) - 1)

Else

i = 0

For i = 1 To SnLen1

If i / 2 = Int(i / 2) Then

Sntemp1 = Sntemp1 + Mid(Sntemp, i, 1)

Else

Sntemp2 = Mid(Sntemp, i, 1) + Sntemp2

End If

Next i

Sntemp3 = Sntemp1 + Sntemp2

sntemp4 = Mid(Sntemp3, 1, SnLen1 / 2) + "CJHBYS" + Mid(Sntemp3, SnLen1 / 2 + 1, SnLen1 / 2) '插入检验所需的“CJHBYS”

End If

Text3.Text = sntemp4

End Sub

Private Sub Form_Load()

Text1.Text = "22222222222854720884_754026158" '本机机器码

'Text1.Text = "22222222222257244519_3438081953"

Text3.Text = "" '注册码

End Sub

11)其他

安装完软件,第一次运行后程序会写入:

1、注册表"Software\Microsoft\htoolse\Data"

\w1 24EC652 由 hex(安装日期*999-234)得来

\w2 20D2118 hex( 最后一次运行日期 * 888-456)

\w3 20D2118 hex((最后一次运行日期*999 ) Xor (最后一次运行日期*888 ))

写文件: "C:\WINNT\system32\config\cdelisub.hld"

"24EC652","20D2118","4449756" 各项内容同上

并且这些内容卸载不掉,这样的话再重新安装该软件,共享期不会因此而改为30天,而是该日期从你第一次运行该软

件算起。

12)破解心得

a、善用多种工具进行分析,诸如Regmon、filemonnet、SmartCheck,本次破解以SmartCheck分析为主,其他为辅;

b、该软件作者在加密方面的却下了一番功夫,很多人都会被注册时“恭喜您,注册成功!”所迷惑,以为已成功破解,

其实不然,软件在退出程序时再校验一次注册码,并且以删除文件来阻止他人用破解的注册码注册,还好,作者还

是比较有善心的,只删除自己的文件,如果他要是删除些系统文件什么的,我的机器还不得重装几回呀,表扬表扬

作者。

c、在注册码和文件中写入第一次安装日期、最后一次运行日期的办法值得学习一下,但是乱丢垃圾就不好了,呵呵!

[版权声明]: 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

软件破解入门教程

先教大家一些基础知识,学习破解其实是要和程序打交道的,汇编是破解程序的必备知识,但有可能部分朋友都没有学习过汇编语言,所以我就在这里叫大家一些简单实用的破解语句吧! ---------------------------------------------------------------------------------------------------------------- 语句:cmp a,b //cmp是比较的意思!在这里假如a=1,b=2 那么就是a与b比较大小. mov a,b //mov是赋值语句,把b的值赋给a. je/jz //就是相等就到指定位置(也叫跳转). jne/jnz //不相等就到指定位置. jmp //无条件跳转. jl/jb //若小于就跳. ja/jg //若大于就跳. jge //若大于等于就跳. 这里以一款LRC傻瓜编辑器为例,讲解一下软件的初步破解过程。大家只要认真看我的操作一定会!假如还是不明白的话提出难点帮你解决,还不行的话直接找我!有时间给你补节课!呵呵! 目标:LRC傻瓜编辑器杀杀杀~~~~~~~~~ 简介:本软件可以让你听完一首MP3歌曲,便可编辑完成一首LRC歌词。并且本软件自身还带有MP3音乐播放和LRC歌词播放功能,没注册的软件只能使用15天。 工具/原料 我们破解或给软件脱壳最常用的软件就是OD全名叫Ollydbg,界面如图: 它是一个功能很强大的工具,左上角是cpu窗口,分别是地址,机器码,汇编代码,注释;注释添加方便,而且还能即时显示函数的调用结果,返回值. 右上角是寄存器窗口,但不仅仅反映寄存器的状况,还有好多东东;双击即可改变Eflag的值,对于寄存器,指令执行后发生改变的寄存器会用红色突出显示. cpu窗口下面还有一个小窗口,显示当前操作改变的寄存器状态. 左下角是内存窗口.可以ascii或者unicode两种方式显示内存信息. 右下角的是当前堆栈情况,还有注释啊. 步骤/方法 1. 我们要想破解一个软件就是修改它的代码,我们要想在这代码的海洋里找到我们破解关键的代码确实很棘 手,所以我们必须找到一定的线索,一便我们顺藤摸瓜的找到我们想要的东东,现在的关键问题就是什么

爱普生芯片全解

完美破解爱普生墨盒芯片图文教程 当每一个人初踏这个门栏,尝试使用打印机的那一天,是多么希望得到帮助,得到指导,得到学习机会。就是已经取得比较成功的朋友,也会感到前面的道路还很漫长。我们也不要忘了这走过的路程中,取得的成绩,是千万喷友智慧的结晶,是众多朋友的支持。正因为这样,详细探讨喷墨打印机以及墨盒灌墨和连续供墨,大家共同参与,共同探讨,使用好手中武器,很有必要。一是为了提高,二是方便新手,三是便于查找。 墨盒芯片破解 一、对墨盒芯片的认识 二、墨盒无芯片的喷墨打印机在显示“墨尽”以后的处理办法 三、墨盒有芯片的喷墨打印机在显示“墨尽”以后的处理办法 (1)手工调换方法 (2)软件对墨盒芯片刷新。永久“满”的情况 (3)刷卡器。 (4)永久芯片。 (5)多方法的运用

一、对墨盒芯片的认识 近几年爱普生在新出的喷墨打印机中,几乎都在墨盒上面装了一个所谓“智能芯片”,又叫IC芯片,相似电话卡,记录墨水消耗量。最近几年先后推出的爱普生喷墨打印机(型号有680、790、870、875DC、890、895、810、830、830U、900、915、925、950、1270、1290、2100、C41、C60、C61、C63、C80等)全部都在墨盒上带有智能芯

梦话吸引 探花 帖子:539 关注:0 粉丝:0 精华:1 打印纸:1925 Z 币:31 ID :jiarak 所在地:贵州 注册时间:2009-12-09 ? > 查看资料 ? > 所有帖子 ? 加为好友 ? 发短消息 只看该作者 1楼 沙发 发表于 2011-03-16 16:19:33 二、墨盒无芯片的喷墨打印机在显示“墨尽”以后的处理办法。 目前也还有一些机型(比如EX3、1520K 等)以及较早出厂的机型,其墨盒没有带芯片,这类墨盒不带芯片的打印机,在显示“墨尽”后只要按“换墨盒键”,墨车自动移出后,取出墨盒再装入,打印机就会认为“更换”了一个新墨盒。对于填充墨水比较方便,但是对于连续供墨就显得麻烦。 之所以说对于连续供墨就显得麻烦,主要是爱普生打印机一旦取下一次墨盒都很容易造成打印的断线,特别是在连续供墨后,墨盒上面满是墨水管线的情况下。 1、墨盒无芯片的喷墨打印机是如何检测墨盒中墨水是有还是没有。 将喷头拆开来研究,就会发现其实就是一个类似开关的弹簧片在起作用.

新手入门学习——脱壳破解练习第一期

新手入门学习——脱壳破解练习第一期拿到一个软件,先看看是加的什么壳。用PEiD查得【Upack V0.37-V0.39 -> Dwing *】 接着拿出破解第一要物OD进行脱壳(注意选好点的版本,由于Upack壳做了变形,有些版本的OD打开时会出错,最好是用英文版的) OD载入…… 我使用简单一点的ESP定律。 00401018 > BE B0114000 MOV ESI,脱壳破解.004011B0 0040101D AD LODS DWORD PTR DS:[ESI] 0040101E 50 PUSH EAX 0040101F FF76 34 PUSH DWORD PTR DS:[ESI+34] 00401022 EB 7C JMP SHORT 脱壳破解.004010A0 F8前进到【0040101F】,在寄存器窗口ESP处点右键,在数据窗口跟随【0012FFC0】 如下图:

//数据窗口点右键,下硬件断点。shift+F9运行 0012FFC0 004011B8 脱壳破解.004011B8 0012FFC4 7C82F23B 返回到 kernel32.7C82F23B 0012FFC8 00000000 //来到OEP,通过观察可以发现,这是一个典型的VB入口。这里记得要删除硬件断点!004011B8 68 24184000 PUSH 脱壳破解.00401824 //OEP 004011BD E8 EEFFFFFF CALL 脱壳破解.004011B0 004011C2 0000 ADD BYTE PTR DS:[EAX],AL 004011C4 0000 ADD BYTE PTR DS:[EAX],AL 004011C6 0000 ADD BYTE PTR DS:[EAX],AL 004011C8 3000 XOR BYTE PTR DS:[EAX],AL 记录新入口地址【11B8】

芯片解密方法概述

芯片解密方法概述 芯片解密(IC解密),又称为单片机解密,就是通过一定的设备和方法,直接得到加密单片机中的烧写文件,可以自己复制烧写芯片或反汇编后自己参考研究。 目前芯片解密有两种方法,一种是以软件为主,称为非侵入型攻击,要借助一些软件,如类似编程器的自制设备,这种方法不破坏母片(解密后芯片处于不加密状态);还有一种是以硬件为主,辅助软件,称为侵入型攻击,这种方法需要剥开母片(开盖或叫开封,decapsulation),然后做电路修改(通常称FIB:focused ion beam),这种破坏芯片外形结构和芯片管芯线路只影响加密功能,不改变芯片本身功能。 单片机解密常用方法 单片机(MCU)一般都有内部ROM/EEPROM/FLASH供用户存放程序。为了防止未经授权访问或拷贝单片机的机内程序,大部分单片机都带有加密锁定位或者加密字节,以保护片内程序。如果在编程时加密锁定位被使能(锁定),就无法用普通编程器直接读取单片机内的程序,这就是所谓单片机加密或者说锁定功能。事实上,这样的保护措施很脆弱,很容易被破解。单片机攻击者借助专用设备或者自制设备,利用单片机芯片设计上的漏洞或软件缺陷,通过多种技术手段,就可以从芯片中提取关键信息,获取单片机内程序。因此,作为电子产品的设计工程师非常有必要了解当前单片机攻击的最新技术,做到知己知彼,心中有数,才能有效防止自己花费大量金钱和时间辛辛苦苦设计出来的产品被人家一夜之间仿冒的事情发生。 目前,单片机解密主要有四种技术,分别是: 一、软件攻击 该技术通常使用处理器通信接口并利用协议、加密算法或这些算法中的安全漏洞来进行攻击。软件攻击取得成功的一个典型事例是对早期ATMELAT89C51系列单片机的攻击。攻击者利用了该系列单片机擦除操作时序设计上的漏洞,使用自编程序在擦除加密锁定位后,停止下一步擦除片内程序存储器数据的操作,从而使加过密的单片机变成没加密的单片机,然后利用编程器读出片内程序。 目前在其他加密方法的基础上,可以研究出一些设备,配合一定的软件,来做软件攻击。 近期国内出现了了一种51单片机解密设备,这种解密器主要针对SyncMos. Winbond,在生产工艺上的漏洞,利用某些编程器定位插字节,通过一定的方法查找芯片中是否有连续空位,也就是说查找芯片中连续的FF FF字节,插入的字节能够执行把片内的程序送到片外的指令,然后用解密的设备进行截获,这样芯片内部的程序就被解密完成了。 二、电子探测攻击 该技术通常以高时间分辨率来监控处理器在正常操作时所有电源和接口连接的模拟特性,并通过监控它的电磁辐射特性来实施攻击。因为单片机是一个活动的电子器件,当它执行不同的指令时,对应的电源功率消耗也相应变化。这样通过使用特殊的电子测量仪器和数学统计方法分析和检测这些变化,即可获取单片机中的特定关键信息。 目前RF编程器可以直接读出老的型号的加密MCU中的程序,就是采用这个原理。

一个简单的.NET程序的脱壳以及破解

一个简单的.NET程序的脱壳以及破解 前几天有朋友问.NET程序的破解,又鉴于论坛里关于.NET脱壳和破解的文章也不多,于是抽空写一个。由于本人也很少接触.NET的程序,因此文章没什么技术含量,用到的技术也是在网上很早就公开的东西。有什么错误还请多多指教。 本文的目标文件是一个非常简单的CrackMe. 本CrackMe的任务有4个: 1.脱壳 2.去NAG 3.去灰色按钮 4.破解 OK,一个一个来完成任务吧。 一、脱壳 查壳发现为: 按照经验,此程序应该是用.NET Reactor加的壳 下面来脱壳吧 根据前人经验,此壳其实只是在简单的混淆,在运行的同时,在内存中会释放原程序的镜像根据这一特点,我们下断点:BP WriteProcessMemory,然后F9运行,中断下来 中断下来看堆栈

写入的地址为:17B1050 在数据窗口查看,然后拉到最顶端 可以发现,PE头在017B0000 于是可以dump此地址的镜像。 当然,此时dump下来的程序不行,因为还有好多内容没写入。于是,不断SHIFT+F9,直到程序运行。 这时候就可以dump了. 用LordPE,区域转存017B0000这个区段,保存为dumped.exe就OK了.

不过,此时dump后,程序是无法运行的。 我们还得再用CFF修正几个量 (1).选Nt Headers,再File Header,然后选Characteristics,再点旁边的Click here,在出现的对话框中,去掉“File is a DLL”就OK了。 (2)修正MetaData RV A和MetaData Size的值

(完整版)单片机解密方法简单介绍(破解)

单片机解密方法简单介绍 下面是单片机解密的常用几种方法,我们做一下简单介绍: 1:软解密技术,就是通过软件找出单片机的设计缺陷,将内部OTP/falsh ROM 或eeprom代码读出,但这种方法并不是最理想的,因为他的研究时间太长。同一系列的单片机都不是颗颗一样。下面再教你如何破解51单片机。 2:探针技术,和FIB技术解密,是一个很流行的一种方法,但是要一定的成本。首先将单片机的C onfig.(配置文件)用烧写器保存起来,用在文件做出来后手工补回去之用。再用硝酸熔去掉封装,在显微镜下用微形探针试探。得出结果后在显微镜拍成图片用FIB连接或切割加工完成。也有不用FIB用探针就能用编程器将程序读出。 3:紫外线光技术,是一个非常流行的一种方法,也是最简单的一种时间快、像我们一样只要30至1 20分钟出文件、成本非常低样片成本就行。首先将单片机的Config.(配置文件)用烧写器保存起来,再用硝酸熔去掉封装,在显微镜下用不透光的物体盖住OTP/falsh ROM 或eeprom处,紫外线照在加密位上10到120分钟,加密位由0变为1就能用编程器将程序读出。(不过他有个缺陷,不是对每颗OT P/falsh都有效) 有了以上的了解解密手段,我们开始从最简的紫外光技术,对付它: EMC单片机用紫外光有那一些问题出现呢?:OTP ROM 的地址(Address:0080H to 008FH) or (Address:0280h to 028FH) 即:EMC的指令的第9位由0变为1。因为它的加密位在于第9位,所以会影响数据。说明一下指令格式:"0110 bbb rrrrrrr" 这条指令JBC 0x13,2最头痛,2是B,0X13是R。如果数据由0变为1后:"0111 bbb rrrrrrr"变成JBS 0x13,2头痛啊,见议在80H到8FH 和280H到28FH多用这条指令。或用"润飞RF-2148"烧录,将IC的 CheckSum变为0000让解密者不知道内部的CheckSum值是多少。因为EMC的烧器会将这个Che ckSum值加上去,即讲给解密者内部CheckSum值是多少。RF-2148烧录器不过有点慢。刚才讲的是普通级的153,156,447,451,458等,但是N级即工业级的加密位在0,1,2位:0000000000XXX,X XX是加密位,见议在80H到8FH和280H到28FH用RETL @0x?? 这条指令,他的格式为:11100 rrrrrrrr。硬件方面加密看下面。 CYPRESS单片机用紫外光有那一些问题出现呢?:常见型号有63001、63723、、、影响数据出现

IC卡解密工具包使用说明

锁具修配行业专用IC卡读写器 本设备专为锁匠Mifare卡分析软件包定制,兼容著名的ACR122U读写器驱动。采用NXP出品的高集成度PN532读写芯片,符合ISO/IEC18092(NFC)标准,兼容ISO14443(Type A、Type B)标准。采用USB接口与电脑进行通讯及供电,不但可以读取符合Mifare标准的Classics(M1、M4、MUL)和DESFire 卡,还支持FeliCa卡等符合NFC规范的非接触式IC卡。 设备用途: 用于锁具修配行业在信息化时代的产业提升。可实现Mifare One卡(俗称M1卡、S50卡、IC卡)的复制、克隆功能。 同时亦可适用于:一卡通、门禁、停车场、自动贩卖机、电子钱包、电子商务、身份验证等多个领域,在住宅小区、写字楼、工厂、学校、医院等各行业中的非接触式IC卡应用。 设备特点: 1、USB 全速(12 Mbps) 2、支持USB 热插拔 3、双色LED状态指示灯 4、内置天线 5、NFC读写器 符合ISO/IEC18092 (NFC) 标准 以212 Kbps, 242Kbps速度读取NFC标签非接触式智能卡读写器 支持FeliCa卡 支持符合ISO 14443 标准的A类和B类卡 - MIFARE卡(Classics, DESFire) 符合CCID标准 6、用户可控蜂鸣器 7、SAM 卡槽(可选) 设备技术与指标:

1.MIFARE卡标准:13.56MHz 射频IC卡的接收和输出 2.读卡距离:3 ~8 CM 3.电源电压:DC 5V±5% 4.电源电流:≤65mA 5.工作环境:温度:-10℃~70℃湿度:10 ~90%RH 设备尺寸: 尺寸:124mm*78mm*31mm 重量:0.2kg IC卡读写器操作 连接读卡器到电脑的USB口上(最好连接到机箱后的USB口,以保证通讯稳定,供电正常)放置需要分析的Mifare 1 IC卡到读卡器上。正常情况下,读卡器会发出“滴”的一声,同时指示灯会由红转绿。如未发生上述变化,则说明放置的IC卡非Mifare 1兼容类型卡,设备无法识别。 软件操作: 首先我们要将软件压缩包下载到电脑的桌面,下载完成文件:然后将下载下来的文件右键解压出来,软件一定要解压出来,否则等下破解出来也没有文件生成!!! 一、安装驱动程序: 首先在桌面找到“我的电脑”,或者是“计算机”,单击右键进入最下方的属性,查看系统版本,例如此系统为64位操作系统: ,那么我们就需要安装64位操作系统的驱动:

脱壳基础知识入门

脱壳基础知识入门 现在加解密发展己形成2个分支了,一个就是传统的算法,另一个就是加密壳。越来越多的软件采用了密码学相关算法,现在要做出一个软件注册机己不象前几年那么容易,这就要求解密者必须要有一定的数学功底和密码学知识,而这些在短时间内是不容易掌握的。除了密码学的应用,越来越多的软件加壳了,因此要求解密者必须掌握一些脱壳技术,这就使得壳成了解密必须迈过的一个门槛。壳发展到今天,强度越来越高了,将许多人挡在门外,使得大家望壳兴叹。另外,论坛现在两极分化比较严重,高手讨论的脱壳技术新手看不懂,很多人想学脱壳,但看到壳这么难,只好放弃了,造成新手与高手间一个断档,为了鼓励更多新人加入脱壳的行列,很有必要将壳有关知识总结一下。https://www.wendangku.net/doc/607819090.html,主页提供的教学确实有点过时了,己到非更新不可了。相对于密码学算法,脱壳并不难,只要肯花时间,短期内还是比较容易取得成绩的。 第一课PE格式 要想学脱壳,第一步就得掌握PE格式,PE是Portable Executable File Format(可移植的执行体)简写,它是目前Windows平台上的主流可执行文件格式。 Microsoft Visual C++提供的WINNT.H里有PE数据结构的完整定义。 推荐文档: ah007翻译的“PE文件格式”1.9版 qduwg翻译的PE文件格式 Iczelion's的PE文件格式 PE结构各字段偏移参考 学习PE格式的方法是自己先准备一个十六进制工具,如HexWorkshop,WinHex,用这些工具打开一个EXE文件对照着学。强烈推荐你用Stud_PE v.2.2.0.5这款工具辅助学习PE格式。PE格式学习的重点是在输入表(Import Table)这块。Stud_PE工具界面: PE结构图: 第二课SEH技术 结构化异常处理(Structured Exception Handling,SEH)是Windows操作系统处理程序错误或异常的技术。SEH是Windows操作系统的一种系统机制,与特定的程序设计语言无关。 外壳程序里大量地使用了SEH,如果不了解SEH,将会使你跟踪十分困难。 SEH in ASM研究(一)by hume SEH in ASM研究(二)by hume Structured Exception Handling 加密与解密二版菜鸟学习笔记(2)-SEH结构化异常处理by ytcswb 由于Ollydbg对SEH处理异常灵活,因此脱壳用Ollydbg会大大提高效率。 附CONTEXT结构环境: 代码: typedef struct_CONTEXT{ /*000*/DWORD ContextFlags; /*004*/DWORD Dr0; /*008*/DWORD Dr1; /*00C*/DWORD Dr2; /*010*/DWORD Dr3; /*014*/DWORD Dr6; /*018*/DWORD Dr7; /*01C*/FLOATING_SAVE_AREA FloatSave; /*08C*/DWORD SegGs; /*090*/DWORD SegFs; /*094*/DWORD SegEs;

软件脱壳破解精典实例教程

软件脱壳、破解精典实例教程 我要破解的软件:网络填表终结者破解需要的软件(点击下载): 侦壳language.exe 脱壳AspackDie.exe 反编译W32Dasm黄金中文版 16进制编辑器UltraEdit.rar 在破解之前先复习一下基础知识: 一.破解的等级 初级,修改程序,用ultraedit修改exe文件,称暴力破解,简称爆破 中级,追出软件的注册码 高级,写出注册机 二.用w32dasm破解的一般步骤: 1.看软件的说明书,软件注册与不注册在功能上有什么区别,如何注册 2.运行此软件,试着输入你的姓名和任意注册码去注册,有什麽错误提示信息,将错误提示信息记下来 3.侦测有无加壳(第一课).若加壳,脱壳(第二课) 4.pw32dasmgold反汇编 5.串式参考中找到错误提示信息或可能是正确的提示信息双击鼠标左键 6.pw32dasmgold主窗口中分析相应汇编,找出关键跳转和关键call 7.绿色光条停在关键跳转,在pw32dasmgold主窗口底部找到关键跳转的偏移地址(实际修改地址) 8.用ultraedit找到偏移地址(实际修改地址)修改机器码,保存 壳的概念:版权信息需要保护起来,不想让别人随便改动,exe可执行文件压缩,最常见的加壳软件ASPACK ,UPX,PEcompact 脱壳:拿到一个软件,侦测它的壳,然后我们要把它的壳脱去,还原它的本来面目.若它没有加壳,就省事不用脱壳了.脱壳软件unaspack,caspr,upx,unpecompact,procdump 实际修改地址(偏移地址)和行地址(虚拟地址)pw32dasmgold反汇编出来的代码由三列组成 第一列行地址(虚拟地址) 第二列机器码(最终修改时用ultraedit修改)

IC芯片解密

IC芯片解密 IC芯片解密、单片机(MCU)一般都有内部EEPROM/FLASH供用户存放程序和工作数据。为了防止未经授权访问或拷贝单片机的机内程序,大部分单片机都带有加密锁定位或者加密字节,以保护片内程序。如果在编程时加密锁定位被使能(锁定),就无法用普通编程器直接读取单片机内的程序,这就叫单片机加密或芯片加密。单片机攻击者借助专用设备或者自制设备,利用单片机芯片设计上的漏洞或软件缺陷,通过多种技术手段,就可以从芯片中提取关键信息,获取单片机内程序这就叫芯片解密。 ic芯片解密、单片机(MCU)一般都有内部EEPROM/FLASH供用户存放程序和工作数据。为了防止未经授权访问或拷贝单片机的机内程序,大部分单片机都带有加密锁定位或者加密字节,以保护片内程序。如果在编程时加密锁定位被使能(锁定),就无法用普通编程器直接读取单片机内的程序,这就叫单片机加密或芯片加密。单片机攻击者借助专用设备或者自制设备,利用单片机芯片设计上的漏洞或软件缺陷,通过多种技术手段,就可以从芯片中提取关键信息,获取单片机内程序这就叫芯片解密。 ic芯片解密又叫单片机解密,单片机破解,芯片破解,IC解密,但是这严格说来这几种称呼都不科学,但已经成了习惯叫法,我们把CPLD解密,DSP解密都习惯称为芯片解密。单片机只是能装载程序芯片的其中一个类。能烧录程序并能加密的芯片还有DSP,CPLD,PLD,AVR,ARM等。也有专门设计有加密算法用于专业加密的芯片或设计验证厂家代码工作等功能芯片,该类芯片业能实现防止电子产品复制的目的。 1.目前芯片解密方法主要如下: (1)软件攻击 该技术通常使用处理器通信接口并利用协议、加密算法或这些算法中的安全漏洞来进行攻击。软件攻击取得成功的一个典型事例是对早期ATMELAT89C系列单片机的攻击。攻击者利用了该系列单片机擦除操作时序设计上的漏洞,使用自编程序在擦除加密锁定位后,停止下一步擦除片内程序存储器数据的操作,从而使加过密的单片机变成没加密的单片机,然后利用编程器读出片内程序。 目前在其他加密方法的基础上,可以研究出一些设备,配合一定的软件,来做软件攻击。 近期国内出现了了一种51芯片解密设备(成都一位高手搞出来的),这种解密器主要针

教你如何破解exe软件

教你如何破解软件 要破解的软件:网络填表终结者 破解需要的软件(点击下载): 侦壳 language.exe 脱壳AspackDie.exe 反编译 W32Dasm黄金中文版 16进制编辑器 UltraEdit.rar 在破解之前先复习一下基础知识: 一.破解的等级 初级,修改程序,用ultraedit修改exe文件,称暴力破解,简称爆破 中级,追出软件的注册码 高级,写出注册机 二.用w32dasm破解的一般步骤: 1.看软件的说明书,软件注册与不注册在功能上有什么区别,如何注册 2.运行此软件,试着输入你的姓名和任意注册码去注册,有什麽错误提示信息,将错误提示信息记下来 3.侦测有无加壳(第一课).若加壳,脱壳(第二课) 4.pw32dasmgold反汇编 5.串式参考中找到错误提示信息或可能是正确的提示信息双击鼠标左键 6.pw32dasmgold主窗口中分析相应汇编,找出关键跳转和关键call 7.绿色光条停在关键跳转,在pw32dasmgold主窗口底部找到关键跳转的偏移地址(实际修改地址) 8.用ultraedit找到偏移地址(实际修改地址)修改机器码,保存 壳的概念:版权信息需要保护起来,不想让别人随便改动,exe可执行文件压缩,最常见的加壳软件ASPACK ,UPX,PEcompact 脱壳:拿到一个软件,侦测它的壳,然后我们要把它的壳脱去,还原它的本来面目.若它没有加壳,就省事不用脱壳了.脱壳软件unaspack,caspr,upx,unpecompact,procdump 实际修改地址(偏移地址)和行地址(虚拟地址)pw32dasmgold反汇编出来的代码由三列组成 第一列行地址(虚拟地址) 第二列机器码(最终修改时用ultraedit修改) 第三列汇编指令

MCU破解解密

单片机解密 单片机(MCU)一般都有内部EEPROM/FLASH供用户存放程序和工作数据。为了防止未经授权访问或拷贝单片机的机内程序,大部分单片机都带有加密锁定位或者加密字节,以保护片内程序。如果在编程时加密锁定位被使能(锁定),就无法用普通编程器直接读取单片机内的程序,这就叫单片机加密。单片机攻击者借助专用设备或者自制设备,利用单片机芯片设计上的漏洞或软件缺陷,通过多种技术手段,就可以从芯片中提取关键信息,获取单片机内程序这就叫单片机解密。 单片机解密又叫单片机破解,芯片解密,IC解密,但是这严格说来这几种称呼都不科学,但已经成了习惯叫法,我们把CPLD解密,DSP解密都习惯称为单片机解密。单片机只是能装载程序芯片的其中一个类。能烧录程序并能加密的芯片还有DS P,CPLD,PLD,AVR,ARM等。当然具存储功能的存储器芯片也能加密,比如D S2401 DS2501 AT88S0104 DM2602 AT88SC0104D等,当中也有专门设计有加密算法用于专业加密的芯片或设计验证厂家代码工作等功能芯片,该类芯片业能实现防止电子产品复制的目的。 1.目前单片机解密方法主要如下: (1)软件攻击 该技术通常使用处理器通信接口并利用协议、加密算法或这些算法中的安全漏洞来进行攻击。软件攻击取得成功的一个典型事例是对早期ATMELAT89C 系列单片机的攻击。攻击者利用了该系列单片机擦除操作时序设计上的漏洞,使用自编程序在擦除加密锁定位后,停止下一步擦除片内程序存储器数据的操作,从而使加过密的单片机变成没加密的单片机,然后利用编程器读出片内程序。 目前在其他加密方法的基础上,可以研究出一些设备,配合一定的软件,来做软件攻击。 近期国内出现了了一种51单片机解密设备(成都一位高手搞出来的),这种解密器主要针对SyncMos. Winbond,在生产工艺上的漏洞,利用某些编程器定位插字节,通过一定的方法查找芯片中是否有连续空位,也就是说查找芯片中连续的FF FF字节,插入的字节能够执行把片内的程序送到片外的指令,然后用解密的设备进行截获,这样芯片内部的程序就被解密完成了。 (2)电子探测攻击 该技术通常以高时间分辨率来监控处理器在正常操作时所有电源和接口连接的模拟特性,并通过监控它的电磁辐射特性来实施攻击。因为单片机是一个活动的电子器件,当它执行不同的指令时,对应的电源功率消耗也相应变化。这样通过使用特殊的电子测量仪器和数学统计方法分析和检测这些变化,即可获取单片机中的特定关键信息。 目前RF编程器可以直接读出老的型号的加密MCU中的程序,就是采用这个原理。 (3)过错产生技术

OllyDBG破解工具入门教程

OllyDBG破解工具入门教程 一、OllyDBG 的安装与配置 OllyDBG 1.10 版的发布版本是个 ZIP 压缩包,只要解压到一个目录下,运行 OllyDBG.exe 就可以了。汉化版的发布版本是个 RAR 压缩包,同样只需解压到一个目录下运行 OllyDBG.exe 即可: OllyDBG 中各个窗口的功能如上图。简单解释一下各个窗口的功能,更详细的内容可以参 考 TT 小组翻译的中文帮助: 反汇编窗口:显示被调试程序的反汇编代码,标题栏上的地址、HEX 数据、反汇编、注释可以通过在窗口中右击出现的菜单 界面选项->隐藏标或显示标题 来进行切换是否显示。用鼠标左键点击注释标签可以切换注释显示的方式。 寄存器窗口:显示当前所选线程的 CPU 寄存器内容。同样点击标签 寄存器 (FPU) 可以切换显示寄存器的方式。 信息窗口:显示反汇编窗口中选中的第一个命令的参数及一些跳转目标地址、字串等。 数据窗口:显示内存或文件的内容。右键菜单可用于切换显示方式。 堆栈窗口:显示当前线程的堆栈。 要调整上面各个窗口的大小的话,只需左键按住边框拖动,等调整好了,重新启动一 下 OllyDBG 就可以生效了。

启动后我们要把插件及 UDD 的目录配置为绝对路径,点击菜单上的 选项->界面,将会出来一个界面选项的对话框,我们点击其中的目录标签: 因为我这里是把 OllyDBG 解压在 F:\OllyDBG 目录下,所以相应的 UDD 目录及插件目录按图上配置。还有一个常用到的标签就是上图后面那个字体,在这里你可以更改 OllyDBG 中显示的字体。上图中其它的选项可以保留为默认,若有需要也可以自己修改。修改完以后点击确定,弹出一个对话框,说我们更改了插件路径,要重新启动 OllyDBG。 在这个对话框上点确定,重新启动一下 OllyDBG,我们再到界面选项中看一下,会发现我们原先设置好的路径都已保存了。有人可能知道插件的作用,但对那个 UDD 目录不清楚。我这简单解释一下:这个 UDD 目录的作用是保存你调试的工作。比如你调试一个软件,设置了断点,添加了注释,一次没做完,这时 OllyDBG 就会把你所做的工作保存到这个 UDD 目录,以便你下次调试时可以继续以前的工作。 如果不设置这个 UDD 目录,OllyDBG 默认是在其安装目录下保存这些后缀名为 udd 的文件,时间长了就会显的很乱,所以还是建议专门设置一个目录来保存这些文件。 另外一个重要的选项就是调试选项,可通过菜单 选项->调试设置 来配置:

单片机芯片解密的一般过程

单片机芯片解密的一般过程 侵入型攻击的第一步是揭去芯片封装(简称开盖有时候称开封,英文为DECAP,decapsulation)。有两种方法可以达到这一目的:第一种是完全溶解掉芯片封装,暴露金属连线。第二种是只移掉硅核上面的塑料封装。第一种方法需要将芯片绑定到测试夹具上,借助绑定台来操作。第二种方法除了需要具备攻击者一定的知识和必要的技能外,还需要个人的智慧和耐心,但操作起来相对比较方便。芯片上面的塑料可以用小刀揭开,芯片周围的环氧树脂可以用浓硝酸腐蚀掉。热的浓硝酸会溶解掉芯片封装而不会影响芯片及连线。该过程一般在非常干燥的条件下进行,因为水的存在可能会侵蚀已暴露的铝线连接(这就可能造成解密失败)。接着在超声池里先用丙酮清洗该芯片以除去残余 硝酸,然后用清水清洗以除去盐分并干燥。没有超声池,一般就跳过这一步。这种情况下,芯片表面会有点脏,但是不太影响紫外光对芯片的操作效果。 最后一步是寻找保护熔丝的位置并将保护熔丝暴露在紫外光下。一般用一台放大倍数至少100倍的显微镜,从编程电压输入脚的连线跟踪进去,来寻找保护熔丝。若没有显微镜,则采用将芯片的不同部分暴露到紫外光下并观察结果的方式进行简单的搜索。操作时应用不透明的纸片覆盖芯片以保护程序存储器不被紫外光擦除。将保护熔丝暴露在紫外光下5~10分钟就能破坏掉保护位的保护作用,之后,使用简单的编程器就可直接读出程序存储器的内容。 对于使用了防护层来保护EEPROM单元的单片机来说,使用紫外光复位保护电路是不可行的。对于这种类型的单片机,一般使用微探针技术来读取存储器内容。在芯片封装打开后,将芯片置于显微镜下就能够很容易的找到从存储器连到电路其它部分的数据总线。由于某种原因,芯片锁定位在编程模式下并不锁定对存储器的访问。利用这一缺陷将探针放在数据线的上面就能读

OD入门系列图文详细教程-破解做辅助起步(一)

OllyDBG的安装与配置 OllyDBG1.10版的发布版本是个ZIP压缩包,只要解压到一个目录下,运行OllyDBG.exe就可以了。汉化版的发布版本是个RAR压缩包,同样只需解压到一个目录下运行OllyDBG.exe即可: 学习各种外挂制作技术,马上去百度搜索"魔鬼作坊"点击第一个站进入、快速成为做挂达人。 OllyDBG中各个窗口的功能如上图。简单解释一下各个窗口的功能,更详细的内容可以参考TT小组翻译的中文帮助:

反汇编窗口:显示被调试程序的反汇编代码,标题栏上的地址、HEX数据、反汇编、注释可以通过在窗口中右击出现的菜单界面选项->隐藏标题或显示标题来进行切换是否显示。用鼠标左键点击注释标签可以切换注释显示的方式。 寄存器窗口:显示当前所选线程的CPU寄存器内容。同样点击标签寄存器(FPU)可以切换显示寄存器的方式。 信息窗口:显示反汇编窗口中选中的第一个命令的参数及一些跳转目标地址、字串等。 数据窗口:显示内存或文件的内容。右键菜单可用于切换显示方式。 堆栈窗口:显示当前线程的堆栈。 要调整上面各个窗口的大小的话,只需左键按住边框拖动,等调整好了,重新启动一下OllyDBG就可以生效了。 启动后我们要把插件及UDD的目录配置为绝对路径,点击菜单上的选项->界面,将会出来一个界面选项的对话框,我们 点击其中的目录标签: 因为我这里是把OllyDBG解压在F:\OllyDBG目录下,所以相应的UDD目录及插件目录按图上配置。还有一个常用到的标签就是上图后面那个字体,在这里你可以更改OllyDBG中显示的字体。上图中其它的选项可以保留为默认,若有需要也可以自己修改。修改完以后点击确定,弹出一个对话框,说我们更改了插件路径,要重新启动OllyDBG。在这个对话框上点确定,重新启动一下OllyDBG,我们再到界面选项中看一下,会发现我们原先设置好的路径都已保存了。有人可能知道插件的作用,但对那个UDD目录不清楚。我这简单解释一下:这个UDD目录的作用是保存你调试的工作。比如你调试一个软件,设置了断点,添加了注释,一次没做完,这时OllyDBG就会把你所做的工作保存到这个UDD目录,以便你下次调试时可以继续以前的工作。如果不设置这个UDD目录,OllyDBG默认是在其安装目录下保存这些后缀名为udd的文件,时间长了就会显的很乱,所以还是建议专门设置一个目录来保存这些文件。

单片机破解的常用方法及应对策略

单片机破解的常用方法及应对策略 1引言 单片机(Microcontroller)一般都有内部ROM/EEPROM/FLASH供用户存放程序。为了防止未经授权访问或拷贝单片机的机内程序,大部分单片机都带有加密锁定位或者加密字节,以保护片内程序。如果在编程时加密锁定位被使能(锁定),就无法用普通编程器直接读取单片机内的程序,这就是所谓拷贝保护或者说锁定功能。事实上,这样的保护措施很脆弱,很容易被破解。单片机攻击者借助专用设备或者自制设备,利用单片机芯片设计上的漏洞或软件缺陷,通过多种技术手段,就可以从芯片中提取关键信息,获取单片机内程序。因此,作为电子产品的设计工程师非常有必要了解当前单片机攻击的最新技术,做到知己知彼,心中有数,才能有效防止自己花费大量金钱和时间辛辛苦苦设计出来的产品被人家一夜之间仿冒的事情发生。 2单片机攻击技术 目前,攻击单片机主要有四种技术,分别是: (1)软件攻击 该技术通常使用处理器通信接口并利用协议、加密算法或这些算法中的安全漏洞来进行攻击。软件攻击取得成功的一个典型事例是对早期ATMELAT89C系列单片机的攻击。攻击者利用了该系列单片机擦除操作时序设计上的漏洞,使用自编程序在擦除加密锁定位后,停止下一步擦除片内程序存储器数据

的操作,从而使加过密的单片机变成没加密的单片机,然后利用编程器读出片内程序。 (2)电子探测攻击 该技术通常以高时间分辨率来监控处理器在正常操作时所有电源和接口连接的模拟特性,并通过监控它的电磁辐射特性来实施攻击。因为单片机是一个活动的电子器件,当它执行不同的指令时,对应的电源功率消耗也相应变化。这样通过使用特殊的电子测量仪器和数学统计方法分析和检测这些变化,即可获取单片机中的特定关键信息。 (3)过错产生技术 该技术使用异常工作条件来使处理器出错,然后提供额外的访问来进行攻击。使用最广泛的过错产生攻击手段包括电压冲击和时钟冲击。低电压和高电压攻击可用来禁止保护电路工作或强制处理器执行错误操作。时钟瞬态跳变也许会复位保护电路而不会破坏受保护信息。电源和时钟瞬态跳变可以在某些处理器中影响单条指令的解码和执行。 (4)探针技术 该技术是直接暴露芯片内部连线,然后观察、操控、干扰单片机以达到攻击目的。 为了方便起见,人们将以上四种攻击技术分成两类,一类是侵入型攻击(物理攻击),这类攻击需要破坏封装,然后借助半导体测试设备、显微镜和微定位器,在专门的实验室花上几小时甚至几周时间才能完成。所有的微探针技术都属于侵入型攻击。另外三种方法属于非侵入型攻击,被攻击的单片机不会被物理损

单片机芯片解密破解方法

单片机芯片解密破解方法 在你看这篇文章之前,我想提出几点说明: (1)最近在看拉扎维的书,写下来这些东西,这也只是我个人在学习过程中的一点总结,有什么观点大家可以相互交流; (2)不断的思考,不断的理解,不断的总结!希望大家坚持下去! 1、CS单管放大电路 共源级单管放大电路主要用于实现输入小信号的线性放大,即获得较高的电压增益。在直流分析时,根据输入的直流栅电压即可提供电路的静态工作点,而根据MOSFET的I-V特性曲线可知,MOSFET的静态工作点具有较宽的动态范围,主要表现为MOS管在饱和区的VDS具有较宽的取值范围,小信号放大时输入的最小电压为VIN-VTH,最大值约为VDD,假设其在饱和区可以完全表现线性特性,并且实现信号的最大限度放大【理想条件下】,则确定的静态工作点约为VDS=(VIN-VTH VDD)/2,但是CS电路的实际特性以及MOS管所表现出的非线性关系则限制了小信号的理想放大。 主要表现在: 【1】电路在饱和区所能够确定的增益比较高,但仍然是有限的,也就是说,在对输入信号的可取范围内,确定了电路的增益。电路的非线性以及MOS 管的跨导的可变性决定了CS电路对于输入小信号的放大是有限的,主要

表现在输入信号的幅度必须很小,这样才能保证放大电路中晶体管的跨导近似看作常数,电路的增益近似确定; 【2】CS电路也反映了模拟CMOS电路放大两个普遍的特点,一是电路的静态工作点将直接影响小信号的放大特性,也就是说CMOS模拟放大电路的直流特性和其交流特性之间有一定的相互影响。从输入-输出特性所表现的特性曲线可以看出,MOSFET在饱和区的不同点所对应的电路增益不同,这取决于器件的非线性特性,但是在足够小的范围内可以将非线性近似线性化,这就表现为在曲线的不同分段近似线性化的过程中电路的增益与电路的静态工作点有直接关系,可以看出,静态工作点的不同将决定了电路的本征增益。这一点表现在计算中,CS电路的跨导取决于不同的栅压下所产生的静态电流,因此电路的增益是可选择的,但是其增益的可选择性将间接限制了输出电压的摆幅。这些都反映了放大电路增益的选择和电流、功耗、速度等其他因素之间的矛盾。 【3】二是电路的静态工作点将直接影响前一级和后一级的直流特性,因为CS电路实现的放大是针对小信号的放大。但是电路的放大特性是基于静态工作点的确定,换句话说,在电路中的中间级CS电路即需要根据前一级的静态输出来确定本级的工作点,这也就导致了前一级对后一级的影响,增加了电路设计的复杂性。但是电路设计中的CD电路可以实现直流电平移位特性,交流信号的跟随特性,这也就解决了静态级间的影响,总体来讲,这样简化了设计,但是增加了电路的面积。

单片机破解的常用方法及加密应对策略.

单片机破解的常用方法及加密应对策略 作者:未知时间:2007-11-24 12:43:00 摘要:介绍了单片机内部密码破解的常用方法,重点说明了侵入型攻击/物理攻击方法的详细步骤,最后,从应用角度出发,提出了对付破解的几点建议。 1引言 单片机(Microcontroller)一般都有内部ROM/EEPROM/FLASH供用户存放程序。为了防止未经授权访问或拷贝单片机的机内程序,大部分单片机都带有加密锁定位或者加密字节,以保护片内程序。如果在编程时加密锁定位被使能(锁定),就无法用普通编程器直接读取单片机内的程序,这就是所谓拷贝保护或者说锁定功能。事实上,这样的保护措施很脆弱,很容易被破解。单片机攻击者借助专用设备或者自制设备,利用单片机芯片设计上的漏洞或软件缺陷,通过多种技术手段,就可以从芯片中提取关键信息,获取单片机内程序。因此,作为电子产品的设计工程师非常有必要了解当前单片机攻击的最新技术,做到知己知彼,心中有数,才能有效防止自己花费大量金钱和时间辛辛苦苦设计出来的产品被人家一夜之间仿冒的事情发生。 2单片机攻击技术 目前,攻击单片机主要有四种技术,分别是: (1)软件攻击 该技术通常使用处理器通信接口并利用协议、加密算法或这些算法中的安全漏洞来进行攻击。软件攻击取得成功的一个典型事例是对早期ATMELAT89C系列单片机的攻击。攻击者利用了该系列单片机擦除操作时序设计上的漏洞,使用自编程序在擦除加密锁定位后,停止下一步擦除片内程序存储器数据的操作,从而使加过密的单片机变成没加密的单片机,然后利用编程器读出片内程序。 (2)电子探测攻击 该技术通常以高时间分辨率来监控处理器在正常操作时所有电源和接口连接的模拟特性,并通过监控它的电磁辐射特性来实施攻击。因为单片机是一个活动

破解基础—判断你到底有没有壳

首先说明一下,这篇文章是转自 https://www.wendangku.net/doc/607819090.html,/read.php?tid=1667455 这个教程主要是讲判断程序是否加壳,所以老鸟飞过。很多人一看到这里,就会说用PEID查壳就行了呀,其实不然。现在一些商用的软件为了加密来保护知识产权,已不满足于ASProtect、ACProtect 等这些有名的强壳,这些壳虽加密强度高,对新手来说遥不可及,但因为很多人研究,已经很容易手动脱壳。所以这些商家就想到了自行加壳(这在看雪的加密与解密中有提到)和修改程序入口的特征(搞黑客,做木马免杀的都知道),这样查壳工具就会显示无壳,但其实还是加了壳的,有时还不止一层壳。 那怎么准确的判断是否加壳呢?这就是今天的主要内容。 首先按照常规给软件查壳 看上去没有壳,那我们再深入看看,点击PEID右下角的扩展信息试试 判断1: 你有没有压缩呀? 天骄无双小说:https://www.wendangku.net/doc/607819090.html,

虽然壳有压缩壳和加密壳,但现在大多数的壳都有压缩功能,而现在PEID提示压缩的可能非常大,也就是说加壳的可能性很大,当然Ollydbg在载入时也有类似的提示。但这些还不能完全准确地判断,还是OD载入试试 判断2: 好多命令有问题哦! 看见了吗,很多是未知命令或错误命令,一般程序不会是这样的吧!再看看

判断3: 我知道你有多少 一般加壳程序为了不让人破解,就会加密一些重要的信息,比如文本字串,这个软件查找文本字串时会出现错误,显然作者有东西不让我们知道 到这里,同学们都知道这软件八成就是加壳的,那还有什么其他特征呢

判断4: 跳转和循环 一般来说,加壳的软件一般都有很多的跳转,而且没有规律,大多是JMP,循环出现在算注册码的时候,但有时用在加壳程序在内存中解码的时候,所以可以作为脱壳的突破口

相关文档
相关文档 最新文档