申请加入BCG的破解文章之一 (6千字)
IrfanView3.36破解手记软件简介:一个非常优秀的看图软件,即使是跟ACDSee相比也未见逊色多少,软件本是免费软件,即使不注册也没有任何限制,但为了支持作者的继续升级,还是请有能力的朋友注册吧:
破解工具:TRW2000 BW2000
____________________________________________________________________________________________________________________________________
我是在华军下载的汉化版,下载后软件是用ASPACK加国壳的,你不妨用BW2000+TRW2000脱掉他的壳,以方便反汇编,
然后填写注册信息: Your name: NYDoll Your Code:38383838 都可以随便填写,但也有一定的限制,请向下看:
设断点 BPX HMEMCPY
F5
按OK,立刻被拦下
BC *
PMODULE
来到这里:
XXX:432FFB MOV EDX,[004DEF54] 《----------TRW停在这里
XXX:433001 PUSH DWORD 0100
XXX:433006 ADD EDX,0100
XXX:43300C PUSH EDX
XXX:43300D PUSH DWORD 045C
按几下F10马上又回到系统领空,于是在次下命令PMODULE,回到程序代码段,应该停在:
XXX:0044B921 TEST EAX,EAX
XXX:0044B923 JZ NEAR 0045051D
XXX:0044B929 LEA EDI,[ESP+04F8]
XXX:0044B930 OR ECX,BYTE -01
XXX:0044B933 REPNE SCASB
XXX:0044B937 NOT ECX
XXX:0044B939 DEC ECX
XXX:0044B93A CMP ECX,BYTE +02 《---------- 注册名的字数必须大于2
XXX:0044B93D JC NEAR 0044B9CA
XXX:0044B943 LEA EDI,[ESP+04F8]
XXX:0044B94A OR ECX,BYTE -01
XXX:0044B94D REPNE SCASB
XXX:0044B94F NOT ECX
XXX:0044B951 DEC ECX
XXX:0044B952 CMP ECX.BYTE +55 《----------- 注册名的位数必须小于85
XXX:0044B955 JA 0044B9CA
XXX:0044B957 LEA EDI,[ESP+05F8]
XXX:0044B95E OR ECX.BYTE -01
XXX:0044B961 XOR EDX,EDX
XXX:0044B963 REPNE SCASB
XXX:0044B965 NOT ECX
XXX:0044B967 DEC ECX
XXX:0044B968 TEST ECX,ECX 《----------- 判断所输入的注册码位数是否为零
XXX:0044B96A JNG 0044B9AE
XXX:0044B96C MOV AL.[ESP+EDX+05F8] 《-------- 程序在这里开始进入一个循环, AL 分别是注册码的每一位
XXX:0044B973 CMP AL,30
XXX:0044B975 JL 0044B9EB
XXX:0044B977 CMP AL,39
XXX:0044B979 JNG 0044B980
XXX:0044B97B MOV EBX,01
XXX:0044B980 LEA EDI,[ESP+05F8] 《----- 看到我们输入的 Fuck Code
XXX:0044B987 OR ECX,BYTE -01
XXX:0044B98A XOR EAX,EAX
XXX:0044B98C INC EDX
XXX:0044B98D REPNE SCASB
XXX:0044B98F NOT ECX
XXX:0044B991 DEC ECX
XXX:0044B992 CMP EDX,ECX 《----- EDX 为循环次数,ECX为注册码字符个数 用这个对比语句判断循环是否完成
XXX:0044B994 JL 0044B96C 《----- 如果 循环次数小于注册码字符数说明循环没有完成 跳到0044B96C处继续判断注册
码是否符合标准
XXX:0044B996 TEST EBX,EBX
XXX:0044B998 JZ 0044B9AE 《---- 应该跳
XXX:0044B99A PUSH DWORD 0104
XXX:0044B99F PUSH DWORD 9CCB
XXX:0044B9A4 PUSH DWORD 9CCB
XXX:0044B9A9 JMP 004491A1
XXX:0044B9AE LEA EDX,[ESP+05F8]
XXX:0044B9B5 LEA EAX,[ESP+04F8]
XXX:0044B9BC PUSH EDX 《--------- 压入Fuck Code
XXX:0044B9BD PUSH EAX 《--------- 压入Name
XXX:0044B9BE Call 00432D00 《————— 关键Call 按F8进入
XXX:0044B9C3 ADD ESP,BYTE +08
XXX:0044B9C6 TEST EAX,EAX 《————— 注册标志 EAX值为0则注册失败 否则视为注册成功!
XXX:0044B9C8 JNZ 0044B9DE 《———— 为0则跳转到出错窗口
------------------------------------------------Call----------------------------------------------------------------
XXX:00432D00 MOV EAX,[ESP+08]
XXX:00432D04 SUB ESP,BYTE +14
XXX:00432D07 PUSH EBX
XXX:00432D08 PUSH EBP
XXX:00432D09 PUSH ESI
XXX:00432D0A PUSH EDI
XXX:00432D0B PUSH EAX
XXX:00432D0C XOR EBX,EBX
XXX:00432D0E CALL 004A6157
XXX:00432D13 MOV ESI,[ESP+2C]
XXX:00432D17 MOV EBP,EAX
XXX:00432D19 MOV EDI,ESI
... ... 继续按F10向下追:
XXX:00432D64 LEA EDX,[ESP+14]
XXX:00432D68 PUSH ESI
XXX:00432D69 LEA ESI,[EAX+ECX*2]
XXX:00432D6C SHL ESI,03
XXX:00432D6F PUSH ESI
XXX:00432D70 CALL 004B1244 《———— 如果你跟如入这个Call 你会得到一个中间数据 299248
接下来就是开始算注册码了 在这里就不详细列出了 有兴趣的Cracker们可以跟进研究研究 非常简单哦
一直按F10到:
XXX:000B2F75 ADD DL,30
XXX:000B2F78 MOV [ESP+11],DL
XXX:000B2F7C LEA EDX,[ESP+10]
XXX:000B2F80 PUSH EDX 《———— 嘣蹦蹦~嘣 终于胜利了 在这里下D EDX看到的就是真正的注册码了 229952408
XXX:000B2F81 CALL 004A6157
XXX:000B2F86 ADD ESP,BYTE +04
XXX:000B2F89 XOR ECX,ECX
终于搞定了 好累阿 这是我写的第一篇破解 是一个保护比较差的软件 没有办法 谁叫俺水平不济哩 只好捡软骨头吃了 呵呵
BYEBYE 如果有错误 希望各位前辈指出!!
______________________________________________ 娃娃(NYDoll) —————————————————————————
NYDoll@Etang.Com
