* Reference T USER32.GetDlgItem, Ord:0000h
|
:00401088 E8159C0000 Call 0040ACA2 ;得到文本框句柄
:0040108D 6A64 push 00000064 ;得到字符串的更大长度
:0040108F 8D9548FFFFFF lea edx, dword ptr [ebp+FFFFFF48]
:00401095 52 push edx ;EDX是存取字符串的地址
:00401096 50 push eax ;EAX是上面得到的文本框句柄
* Reference T USER32.GetWindowTextA, Ord:0000h
|
:00401097 E8129C0000 Call 0040ACAE ;得到用户名,在[ebp+FFFFFF48]
* Possible Reference to Dialog: DialogID_0001, CONTROL_ID:0068, ""
|
:0040109C 6A68 push 00000068 ;同样的操做,输进 注册码的文本框ID
:0040109E 53 push ebx
* Reference T USER32.GetDlgItem, Ord:0000h
|
:0040109F E8FE9B0000 Call 0040ACA2
:004010A4 6A64 push 00000064
:004010A6 8D8DE4FEFFFF lea ecx, dword ptr [ebp+FFFFFEE4]
:004010AC 51 push ecx
:004010AD 50 push eax
* Reference T USER32.GetWindowTextA, Ord:0000h
|
:004010AE E8FB9B0000 Call 0040ACAE ;得到注册码,在[ebp+FFFFFEE4]
* Possible Reference to Dialog: DialogID_0001, CONTROL_ID:0067, ""
|
:004010B3 6A67 push 00000067 ;那个是最下面的提醒的文本框的ID
:004010B5 53 push ebx
7
* Reference T USER32.GetDlgItem, Ord:0000h
|
:004010B6 E8E79B0000 Call 0040ACA2 ;得到句柄
:004010BB 8BF0 mov esi, eax ;放在ESI备用
:004010BD 8D8548FFFFFF lea eax, dword ptr [ebp+FFFFFF48]
:004010C3 50 push eax ;指向用户名
:004010C4 E867050000 call 00401630 ;得到用户名长度
:004010C9 59 pop ecx
:004010CA 8945D8 mov dword ptr [ebp-28], eax ;长度放在[ebp-28]
:004010CD 8D95E4FEFFFF lea edx, dword ptr [ebp+FFFFFEE4]
:004010D3 52 push edx ;指向注册码
:004010D4 E857050000 call 00401630 ;得到注册码长度
:004010D9 59 pop ecx
:004010DA 68EAB04000 push 0040B0EA
:004010DF E84C050000 call 00401630
:004010E4 59 pop ecx
:004010E5 680EB14000 push 0040B10E
:004010EA E841050000 call 00401630
:004010EF 59 pop ecx
:004010F0 837DD803 cmp dword ptr [ebp-28], 00000003
:004010F4 7E7B jle 00401171 ;用户名长度不克不及小于等于3
:004010F6 90 nop
:004010F7 90 nop
:004010F8 90 nop
:004010F9 90 nop
:004010FA 33C9 xor ecx, ecx
:004010FC 33D2 xor edx, edx
:004010FE 33DB xor ebx, ebx
:00401100 33C0 xor eax, eax
:00401102 837DD832 cmp dword ptr [ebp-28], 00000032
:00401106 7D69 jge 00401171 ;用户名长度不克不及大于等于32h
:00401108 90 nop
:00401109 90 nop
:0040110A 90 nop
:0040110B 90 nop
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040111C(C)
|
:0040110C 0FBE840D48FFFFFF movsx eax, byte ptr [ebp+ecx-000000B8];依次取用户名的字符
:00401114 41 inc ecx ;ECX为轮回变量
:00401115 33C1 xor eax, ecx ;取的字符与轮回变量XOR
:00401117 03D8 add ebx, eax ;把成果累加到EBX
:00401119 3B4DD8 cmp ecx, dword ptr [ebp-28] ;轮回变量与用户名长度比拟
:0040111C 75EE jne 0040110C ;假设 未取完就跳回陆续
:0040111E 6BC006 imul eax, 00000006 ;最初一轮计算的成果在EAX, 乘6
:00401121 C1E307 shl ebx, 07 ;前面累加成果左移7位
:00401124 03C3 add eax, ebx ;相加
:00401126 8945C8 mov dword ptr [ebp-38], eax
:00401129 FF75C8 push [ebp-38] ;把上面成果压栈
* Possible StringData Ref from Data Obj -"%lX"
|
:0040112C 6838B44000 push 0040B438 ;一个转换的标识
:00401131 8D8D80FEFFFF lea ecx, dword ptr [ebp+FFFFFE80]
:00401137 51 push ecx ;存放转换成果的地址
:00401138 E8873D0000 call 00404EC4 ;数字转为十六进造字串
:0040113D 83C40C add esp, 0000000C
:00401140 8D8580FEFFFF lea eax, dword ptr [ebp+FFFFFE80]
:00401146 50 push eax ;上面转换的字串
:00401147 8D95E4FEFFFF lea edx, dword ptr [ebp+FFFFFEE4]
:0040114D 52 push edx ;假注册码
* Reference T KERNEL32.lstrcmpA, Ord:0000h
|
:0040114E E8339C0000 Call 0040AD86 ;比力
:00401153 85C0 test eax, eax
:00401155 750D jne 00401164 ;那里就是关键 的跳转
* Possible StringData Ref from Data Obj -"Congratulations! IF this number "
-"comes *FROM YOUR* keygen, Write "
-"a tutorial dude ;)."
|
:00401157 683CB44000 push 0040B43C ;指向表达 胜利的字符串
:0040115C 56 push esi ;ESI还记得么?阿谁提醒文本框的句柄
* Reference T USER32.SetWindowTextA, Ord:0000h
|
:0040115D E8289B0000 Call 0040AC8A ;展现 出来
:00401162 EB18 jmp 0040117C
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401155(C)
|
* Possible StringData Ref from Data Obj -"This serial is *NOT* Valid!! Try "
-"again... : UNREGISTERED"
|
:00401164 6890B44000 push 0040B490 ;起头时停在那句,向上找跳转
:00401169 56 push esi ;ESI提醒文本框的句柄
* Reference T USER32.SetWindowTextA, Ord:0000h
|
:0040116A E81B9B0000 Call 0040AC8A
:0040116F EB0B jmp 0040117C
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:004010F4(C), :00401106(C)
|
* Possible StringData Ref from Data Obj -"Name must contain more than 4 "
-"chars and less than 50 chars !!"
|
:00401171 68C9B44000 push 0040B4C9 ;用户名不契合要求跳到那里
:00401176 56 push esi ;ESI提醒文本框的句柄
* Reference T USER32.SetWindowTextA, Ord:0000h
|
:00401177 E80E9B0000 Call 0040AC8A
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00401162(U), :0040116F(U)
|
:0040117C 5F pop edi
:0040117D 5E pop esi
:0040117E 5B pop ebx
:0040117F 8BE5 mov esp, ebp
:00401181 5D pop ebp ;整理一下返回了
。(那是找爆破点时的根本思惟)向上找找看,找到了:
:00401155 750D jne 00401164
正好跳到401164错误信息那一句。呵呵,假设 你想爆破的话,只要把750D改成740D(je,把前提反过来,注册码错误就展现 准确信息:D)或者改成EB0D(jmp,无前提跳转,不管三七二十一就准确)。
keymake有什么感化它是一款能够很便利的造造 出本身的“注册机”或软件补钉的软件。之所以给“注册机”加上了引号,是因为严厉 说来,用Keymake来造造 的“注册机”并非实正的注册机,只能算做是软件的补钉或另类注册机(用Keymake造造 的“注册机”在运行后,能够让注册码本身跳出来,间接展现 在屏幕上)。
目前有许多法式的注册码算法都与硬件有关,那类法式在每一台机上安拆时城市生成一个机器码,要把那个机器码E-MAIL给做者,待他收到机器码后,再算出注册码寄回给用户,一机一码的成果就是软件只能一机一用。原来如许无可厚非,但是有些时候,如许做给用户却形成了很多的费事,因为只要用户重拆系统或晋级改换硬件,就要从头往 注册软件。关于那种法式,一般人只能在内存中找到本身机器的注册码,但那种注册码到了其它的机器上又不克不及用了,而本身又没有办法 写出注册机来,为领会决那方面的问题,做者写了那个小软件,它能够从另一历程中取出注册码,并在屏幕中展现 出来,而且不需要你往 领会待注册法式的算法也不需要你会编程。
阐发:注册机编写器Keymake
我不的不说你的话有点搞笑!我不晓得你说的Keymake 1.73与我想象的能否一致,假设 是的话,你就完全错误了。
起首注册机编写器是给那些破解他人软件的人写出注册机,然后他人就能够用那个软件生成注册码,意思就是你的软件不再有奥秘 可言了,因为任何人都能够用他生成注册码来免费利用你的软件!如今的破解手艺是越来越高了,一般的加密算法(好比注册码形式)可以被能够说是菜鸟的人随便破解,所以说假设 你的软件实正的花了良多心血,而你也期看 因而赚更多的钱的话,那么注册的形式就不克不及那么简单了,有一个可行的办法 是 你不供给完全 的版本,等他人用了试用版后,给你发邮件,给你寄钱,你再给他们完全 的版本。我也不晓得你的工具是不是要在网上传播,假设 是的话,相信 一般的办法 是不可的,我说的那个办法应该比力好了,你能够喊 那些有了完全 版本的人不要传出往 ,相信 他们也不会本身花钱,他人免费吧!假设 不在网上传,你的用户对破解又不领会的话,仍是能够用注册码的办法,当然找专业公司需要更多的钱,你本身写的话,简单不平安,但是不花钱,办法绝对不是用注册机编写器来些。能够在代码的部门加上注册的算法,能够搜集机器硬件信息,那就是一机一码了!我想说的是如许的话,假设 那些人放到网上喊 人破的话,就求助紧急 了。我的意思就是没有一个平安的办法 了,我确实没有想到,就想我假设 能定位到一个软件的注册部门,算法应该是能够发现的!
说了那么多,你晓得了吗?其实我是一个刚起步的破解者,我所晓得的其实不多,我能破的也只要简单的工具了!我觉得注册机编写器还没有我用WIN32汇编爽,我本身也写了个模板,也后写注册机的时候间接加上注册算法就好了。写出来的工具也是本身的性格!
有问题能够联络我啊,我晓得必然答复!
结交电脑常识丰富 者 对破解等手艺非常猎奇瞄到一款要注册的软件,先看下能不克不及破,是能破解的软件吗?有那么一句话:若软件能在本机上完全 的运行一遍;一般是能够破解的.若软件是Demo(演示试用版),那就不消白忙了.你能够歇息了. 能破的就先查壳,东西如peid,die, 有壳常规的办法是先脱壳,差别的壳有差别的脱法,有的有好几种脱的办法,那就看你的才能了.一般小壳用脱壳机就能够搞定的,如RL!dePacker ,quick unpack,超等巡警之虚拟机主动脱壳机.我那人很懒的,能用脱壳机脱的,绝对不会手脱,小我认为脱壳只是破解的一部门,重要的还在于破解,脱壳我要的只是一个成果,就是把它脱掉,至于怎么脱的那个过程就能够随意了. 说到手脱,谈谈几种最根本的办法吧~ 东西:OD 1.单步跟踪 OD载进 ,不阐发代码,.近CALL—F7,远CALL—F8,实现向下的跳转.有回跳处,下一句代码处—F4 (右键—代码断点运行到所选),大的跳转(大跨段,JMP***或JE***或RETN),很快就会到OEP. 2.ESP定律 F8,看 察OD右上角存放器中ESP有没有实现(红色),.号令行下 DD ******(当前代码ESP值),回车,DD就选中下端地址,断点—硬件拜候—DWORD断点,F9运行,到跳转处按F8 到DEP. 3.最初一次反常 OD翻开—点选项—调试选项—往 掉所有反常 —CTRL+F2重载,SHIFT+F9.只到法式运行,记下次数M,CTRL+F2重载—按SHIFT+F9(次数为M-1次),按CTRL+G—输进 OE右下角的SE句柄前的地址,F2下断—SHIFT+F9到断点处,往 断按F8,到OEP. 4.内存镜像 OD载进 软件,点选项—调试选项—漠视 全数—CTRL+F2重载,ALT+N翻开内存镜像,找法式第一个.rsrc—F2下断—SHIFT+F9运行到断点,再翻开找到法式第一个.rsrc上面的.code处(就是00401000处),F2下断—SHIFT+F9或无反常 按F9,到OEP. 5.模仿跟踪 无暗桩情状 下利用 F9试运行,跑起来就无SEH暗桩之类的,不然就有,.ALT+N翻开内存镜像,找到包罗“=sfx,imports reloco tions”字符,地址=*** 号令行输进 :tceip***,回车. 6.一步到OEP 只合适少数壳,如UPX,ASPACK CTRL+F—输进 :POPAD.回车查找—F2下断—F9运行到此处,来到大跳转处,点F8到OEP. 7.SFX 设置OD,漠视 所有反常 ,切换到SFX选项卡,抉择 “字节形式跟踪现实进 口”,确定,.重载—“否”压缩代码,到OEP. 至于那些变形壳,双重壳,超强壳,你可能要运用到几种办法,还可能要用到脚本,或者改点什么,那根本上都有人做过总结的,什么壳用哪种办法,详尽 步调等等,你往 专门的网站搜下就能够找到的. 壳脱完后不要忘记修复,东西:Import REConstructor(小鸟,我起的名字,呵呵) 请记住那么一句话:一款软件脱壳后要修复是很一般的一件事. 修复后能运行了,就随意输进 什么工具试注册下,封闭再运行,瞄下软件是哪种注册类型的: 如有注册错误/准确提醒,下bp MessageBoxA断点 VB法式下bp rtcMsgBox 若无任何提醒,下bp GetDlgItem 若下次启动提醒,下bp GetDlgItem获取按钮事务代码 若未注册一启动或封闭就跳出个注册框或提醒框,下bp RegOpenKey(A)或 bp CreateFileA或bp GetPrivateProfileStringA. 若未注册一启动或封闭就翻开网页链接,下 bp ShellExecuteA 若未注册就日期限造,下bp GetLocalTime 获取当地时间,bp GetSystemTime 获取系统时间bp GetFileTime 获取文件时间 若收集验证,下bp ExitProcess 改收集验证为当地验证 若狗加密,一启动就会检测所需要的狗文件,下bp CreateFileA;若没有狗文件,提醒错误,下bp MessageBoxA 找到关键 CALL及关键 跳,接下来你是想爆破或逃码或写注册机,那就实的要看你的才能了. 爆破常见修改: jnz/jne-nop 75-90 jnz/jne - jmp 75- EB jz/je-nop 74-90 jz/je - jmp 74- EB jnz - jz 75-74 或 0F 85 - 0F 84 jz - jnz 74-75 或 0F 84 - 0F 85 jnz - jz 75-74 或 0F 85 - 0F 84 je- jne 74-75 或 0F 84 - 0F 85 爆破有首无敌口诀的: 一条(跳)就死,九筒(90)就胡 (对应上面的(2)――修改为nop) 一条(跳)就胡,一饼(EB)侍候 (对应上面的(1)――修改为jmp) 妻死(74)便妻无(75) 爸死(84)便爸无(85) 逃码我晓得的办法: 1.OD载进 .利用自带的"ULtra字符串参考"插件(一般VB的法式就用UNICODE!非VB的就用ASCII),查找到提醒信息双击之,向上看,查找关键 CALL,F2下断,F9运行,随意输进 注册,法式若被断下,看右边的存放器窗口. 2.OD载进 ,按CTRL+N,找比力函数(譬如C++编写的,找lstrcmpA,VB编写的,找_vbastrcomp),点右键的enter,F2下断,F9运行,随意输进 注册,法式若被断下,看右边的存放器或右下脚的内容. 3.用W32Dasm(非无极版)载进 法式,参考---串式参考,找提醒信息,双击来到代码处,向上找关键 CALL(一般关键 跳上面的一个CALL就是关键 CALL),记下前面的代码,OD载进 ,CTRL+G输进 记下代码,F2再F9,随意输进 注册,若被断下,看右边. 4.用W32Dasm(非无极版)载进 ,点击函数-输进 ,找比力函数,双击之.调试-加载处置(CTRL+L),间接点载进 ,W32Dasm停下来,若乱跑,请重头再来,F2下断加亮的那行,前面呈现小黄块后按F9,随意输进 注册,若被断下,能够看见我们输进 的假注册玛,向下找实注册玛. 5.随意输进 注册,记下提醒信息.利用WinHex,翻开RAM,找到最下面那一行,点确定-整个内存再点确定,CTRL+F-填进 你随意输进 的假注册码,一般实注册码就在上面,若不在,请按F3陆续 查找. 写注册机,我习习用keymake,当然你若会一种或多种编程语言,用之写注册机,那就更能阐明 你牛了, 呵呵~~~ 有良多人问:学破解有什么前提吗? 有人开打趣说过:性别只能是男或女,年龄 7 岁,智商一般,能够独立完成电脑开机关机,无理解障碍 ,无视觉障碍 ...... 小我认为学破解更好晓得点汇编常识,有句名言说:学破解不懂汇编者永久只能是菜鸟.那句话到实的一点都没有夸饰 ,实的是如许. 那里写一点汇编最根本的工具吧: cmp a,b //比力a与b mov a,b //把b的值送给a,使a=b ret //返回主法式 nop //无感化,英文"no operation"的简写,意思是"do nothing"(机器码90) (阐明 :ultraedit翻开编纂exe文件时看到90,等同于汇编语句nop) call //挪用子法式,子法式以ret结尾 je 或jz //若相等则跳(机器码74 或0F84) jne或jnz //若不相等则跳(机器码75或0F85) jmp //无前提跳(机器码EB) jb //若小于则跳 ja //若大于则跳 jg //若大于则跳 jge //若大于等于则跳 jl //若小于则跳 jle //若小于等于则跳 pop xx //xx出栈 push xx //xx压栈 更为详尽 的指令请查阅汇编册本。 我晓得的破解似乎 就那些了吧,简要的说了下.破解是编程的逆命题,进修点对编程是有益处的.但是定见 仍是不要四处破,如今中国的法令对收集还不是很完美 ,以后必定会有规定的,事实 软件做者也不随便 ,他的权益是要被庇护的,不外有些做者软件价格是有点过了,呵呵~~~破解学是能够学的,任何常识学会了绝对是没有害处的.会了,要用什么注册软件,破掉它在本身的电脑上偷偷用用,我想应该不会有人会说什么的吧?呵呵~~~ 那是我很久以前颁发的一篇文章...... 2010.2.23
芝麻开门的密码事实是什么各人晓得,在电子邮件软件Foxmail中能够给本身的账户加上拜候口令,如许只要晓得口令的人才气进进 此账户阅读信件。假设 忘记了邮箱口令该怎么办呢?我们能够本身打造一款Foxmail密码找回器,运行后能够得轻松地到Foxmail的口令!而整个过程无需你懂得任何编程常识,只要循序渐进的操做就能够了!有的伴侣可能对Foxmail的账户口令还不是很领会,所以在此让我们简单地领会一下Foxmail中设置账户口令的办法。选定本身的帐户以后,右键单击此帐户,在弹出菜单中抉择 “拜候口令”号令,会翻开“口令”对话框(图1),然后输进 口令两边,单击“确定”按钮即可为本身的帐户设置一个密码。以后要想进进 此账户,必需输进 你刚刚设定的口令才行。
图1接下来说说造造 Foxmail密码找回器所必需的东西:Keymake,那是一款国产软件(呵呵,典型的爱国情结,就是喜好利用国产软件),Keymake是中文界面的国产软件,它是一款能够很便利的造造 出本身的“注册机”或软件补钉的软件。之所以给“注册机”加上了引号,是因为严厉 说来,用Keymake来造造 的“注册机”并非实正的注册机,只能算做是软件的补钉或另类注册机。Keymake能够从另一历程中取出软件的注册码或口令,并在屏幕中展现 出来,发现了吗?我们借此能够找到忘记的Foxmail密码。下载地址:211.86.67.4/myweb/kanxue/tools/tools/Patchers/KEYMAKE/keymake1.73.zip。。好了,下面我们就要正式起头了,本文以目前利用用户最多的Foxmail5.0为例来说说,当然我们也不会忘记利用Foxmail4.2的用户,关于Foxmail4.2的密码找回办法也会鄙人文中提到。运行Keymake(图2)。
图2点击“其它”菜单中的“内存注册机”号令(图3)。
图3会呈现“设置注册机信息”窗口(图4)。
图4点击“阅读”按钮找到Foxmail安拆目次下的Foxmail.exe文件,点击“确定”按钮将它加载到“法式名称”栏中,如许就指定了我们的目标 法式。接下来点击屏幕左下角的“添加”按钮,呈现“添加数据”窗口(图5)。
图5在“中断地址”一栏中输进 :005BC9AE(关于Foamail4.2则是00565A02)。在“中断次数”一栏中输进 :1。然后在“第一字节”栏中输进 :E8,接下来在“指令长度”栏中输进 :5。点击“添加”按钮就把刚刚填完的内容加进 到“设置注册机信息”窗口的“中断地址列表:”列表中。单击“封闭”按钮,封闭“添加数据”窗口,返回到“设置注册机信息”中。如今我们在“设置注册机信息”中抉择 “内存体例”,而且在“存放器:”前面打上对勾,在它的下拉列表框中选定EDX(因为实正的Foxmail账户口令会呈现在存放器EDX中),如许就设置完毕了,看起来就象如许(图6)。
图6下面请点击“用户信息”按钮,在那里能够为你的“Foxmail密码找回器”设置一些信息,如软件的窗口题目,你的主页和邮件地址以及关于该软件的阐明 等,在“窗口题目”中输进 肆意内容,例如说我输进 的是:Foxmail密码找回器,在“你的主页”和“你的邮件”中输进 你的相关信息即可,假设 没有能够不填,那些内容会在你造造 的“Foxmail密码找回器”中展现 出来,假设 你想让你的大名名扬全国的话,仍是填进 为好。在“阐明 信息”中输进 该文件的相关阐明 ,那些阐明 的内容会在你造造 的“Foxmail密码找回器”运行界面中呈现。例如说你能够输进 该软件的利用办法和重视 事项等,例如象我输进 的如许:本补钉只可在Foxmail密码忘记时利用,不成用于不法用处。利用办法:运行本法式,然后按提醒找到待打补钉的软件,再点击“利用 ”按钮即就行了。再运行Foxmail就能够得到邮箱密码了!如今你就能够随意查看本身以前的邮件内容,呵呵,再也不怕忘记Foxmail密码了。如图所示是我输进 的内容(图7)。
图7点击“确定”按钮返回到“设置注册机信息”对话框中。如今点击“生成”按钮,会呈现一个窗口让你抉择 生成的注册机的外看 界面(图8)。
图8有“界面一(传统款式)”和“界面二(加强款式)”以及“界面三(仿XP款式)”可供抉择 ,我们抉择 “界面三(仿XP款式)”,然后单击“确定”按钮,抉择 好文件保留途径,并将该文件定名为“Foxmail密码找回器”(之所以起那个名字次要原因是比力酷,随便 吸引各人的眼球),然后点击“保留”按钮就能够了。生成的文件是EXE格局,大小只要18.3KB。假设 抉择 “界面一(传统款式)”则生成的文件体积更小!重视 ,一般说来如许造造 出的文件,只能利用 于该版本的Foxmail,不克不及混用。到那里我们就胜利的造造 出Foxmail账户口令捕获 器!让我们尝尝刚刚“编写”出来的“Foxmail密码找回器”效果若何。运行刚刚生成的文件“Foxmail密码找回器.exe”,它会主动挪用启动Foxmail.exe,用鼠标点击有口令庇护的账户前面的“+”号,会弹出要你输进 口令的对话框,随意输进 一个字符或者什么都不消输进 ,点击“确定”按钮,此时会弹出一个动静框,里面呈现了该账户的准确口令(图9)!呵呵,我们胜利了!
图9重视 :上面的挨次不成搞反,必然要先运行“Foxmail密码找回器”才行。绝对不克不及先运行Foxmail,再运行“Foxmail密码找回器”,那样不会胜利。好了,到了那里你如今已经胜利的“体例”出一款软件,放到互联网上往 发布吧,你的大名将在互联网上传播开来,每一个利用该软件的人城市看到你的大名!是不是很骄傲 ?而实现那一切其实不需要你会编程,也不需要浩荡 的编程工
法式脱壳是什么意思?壳的概念:
所谓“壳”就是专门压缩的东西。
那里的压缩并非我们日常平凡利用的RAR、ZIP那些东西的压缩,壳的压缩指的是针对exe、com、和dll等法式文件停止压缩,在法式中加进 一段好像庇护层的代码,使原法式文件代码失往 原来面目,从而庇护法式不被不法修改和反编译,那段好像庇护层的代码,与天然界动动物的壳在功用上有良多类似的处所,所以我们就形象地称之为法式的壳。
壳的感化:
1.庇护法式不被不法修改和反编译。
2.对法式专门停止压缩,以减小文件大小,便利传布和贮存。
壳和压缩软件的压缩的区别是
压缩软件只可以压缩法式
而颠末壳压缩后的exe、com和dll等法式文件能够跟一般的法式一样运行
下面来介绍一个检测壳的软件
PEID v0.92
那个软件能够检测出 450种壳
新版中增加病毒扫描功用,是目前各类查壳东西中,性能最强的。
别的还可识别出EXE文件是用什么语言编写的VC++、Delphi、VB或Delphi等。
撑持文件夹批量扫描
我们用PEID对easymail.exe停止扫描
找到壳的类型了
UPX 0.89.6 - 1.02 / 1.05 - 1.24 - Markus Laszlo
阐明 是UPX的壳
下面停止
步调2 脱壳
对一个加了壳的法式,往 除此中无关的骚乱 信息和庇护限造,把他的壳脱往 ,去除 假装,复原软件原来的面目。那个过程就喊 做脱壳。
脱壳胜利的标记
脱壳后的文件一般运行,功用没有损耗。
还有一般脱壳后的文件长度城市大于原文件的长度。
即便统一叠文件,摘 用差别的脱壳软件停止脱壳,因为脱壳软件的机理欠亨,脱出来的文件大小也不尽不异。
关于脱壳有手动脱壳和主动脱壳
主动脱壳就是用专门的脱壳机脱 很简单 按几下就 OK了
手动脱壳相对主动脱壳 需要的手艺含量微高 那里不多说了
UPX是一种很老并且强大的壳 不外它的脱壳机到处就能找到
UPX自己法式就能够通过
UPX 文件名 -d
来解压缩 不外那些需要的 号令符中输进
长处便利灵敏 缺点DOS界面
为了让各人省往 费事的操做 就产生了一种喊 UPX SHELL的外壳软件
UPX SHELL v3.09
UPX 外壳法式!
目标让UPX的脱壳加壳傻瓜化
注:假设 法式没有加壳 那么我们就能够省往 第二步的脱壳了,间接对软件停止阐发了。
脱完后 我们停止
步调3
运行法式
测验考试注册
获取注册相关信息
通过测验考试注册 我们发现一个关键 的字符串
“序列号输进 错误”
步调4
反汇编
反汇编一般用到的软件 都是 W32Dasm
W32dasm关于新手 易于上手 操做简单
W32Dasm有良多版本 那里我选举 利用 W32Dasm 无极版
我们如今反汇编WebEasyMail的法式文件easymail.exe
然后看看能不克不及找到适才的字符串
步调5
通过eXeScope那个软件来查看未能在w32dasm中准确展现 的字符串信息
eXeScope v6.50
更改字体,更改菜单,更改对话框的摆列,重写可施行文件的资本,包罗(EXE,DLL,OCX)等。是便利强大的汉化东西,能够间接修改用 VC++ 及 DELPHI 体例的法式的资本,包罗菜单、对话框、字符串表等
新版能够间接查看 加壳文件的资本
我们翻开eXeScope
找到如下字串符
122,"序列号输进 错误 "
123,"恭喜您成为WebEasyMail正式用户中的一员! "
124,注册胜利
125,失败
重点是122
步调6
再次返回 w32dasm
* Possible Reference to String Resource ID=00122: "?鲹e?"
但是双击后
提醒说找不到那个字串符
不是没有 是因为 "?鲹e?"是乱码 w32dasm关于中文展现 不是太好
事实 不是国产软件
先把今天会用到的汇编根本指令跟各人阐明 一下
mov a,b ;把b的值赋给a,使a=b
call :挪用子法式 ,子法式以ret结为
ret :返回主法式
je或jz :若相等则跳转
jne或jnz :若不相等则跳转
push xx:xx 压栈
pop xx:xx 出栈
栈,就是那些由编译器在需要的时候分配,在不需要的时候主动清晰 的变量的存储区。里面的变量凡是是部分变量、函数参数等。
我们搜刮
Possible Reference to String Resource ID=00122
因为对E文撑持很好
我们来到了
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00406F17(C) //跳转来自 406F17
|
* Possible Reference to String Resource ID=00125: "1%"
|
:004070DD 6A7D push 0000007D
:004070DF 8D4C2410 lea ecx, dword ptr [esp+10]
:004070E3 E8F75A1200 call 0052CBDF
* Possible Reference to String Resource ID=00122: "?鲹e?"
|
:004070E8 6A7A push 0000007A
:004070EA 8D4C2408 lea ecx, dword ptr [esp+08]
:004070EE E8EC5A1200 call 0052CBDF
我们来到
:00406F01 8B876C080000 mov eax, dword ptr [edi+0000086C]那里是对
:00406F07 8B4C2408 mov ecx, dword ptr [esp+08]
:00406F0B 50 push eax//那两个eax和ecx进 栈就比力让我们思疑了
:00406F0C 51 push ecx//产生注册码
:00406F0D E8AE381100 call 0051A7C0//那CALL里对注册位应该会有设置
:00406F12 83C40C add esp, 0000000C
:00406F15 85C0 test eax, eax// 检测注册位
:00406F17 0F85C0010000 jne 004070DD //不存在注册位 就会跳到4070DD就会呈现阿谁错误的字串符了
我们记住406F01那个地址
接着停止下一步
步调7
那一步我们停止的是调试
用到的软件是ollydbg
好了我们找到了 注册码0012AF04 00FD4A10 ASCII "04893e058f9c1c9fb16764c3b86f78e6"
但是那个并非我们的次要目标
我们还要做出属于本身的注册机
相信 那个是良多人求之不得的工作
步调8
造造 注册机
注册机我们需要的是一个KEYMAKE的软件
因为2.0是演示版并且停行更新了
所以我们用1.73版
做一个内存注册机 需要下面几个材料
中断地址:406F0C
中断次数:1
第一字节:51
指令长度:1
好了 一个完美的注册机 就产生了
还不赶紧 发给你的伴侣 夸耀一下
包管让他含混死 钦佩 得你要死
其实最初还有几个步调
就是撰写破文
不外各人都是新手 那个步调 就往 了吧
不知不觉说了那么多废话 期看 能对各人有些感化
假设 有什么不懂 不睬解的工作 请联络我 或者到论坛发贴
QQ:9595859
MSN:kcarhc@163.com
今天的课程就到那里 各人赶紧 往 脱手理论吧~!
--------------------------------------------------------------------------------
-- 做者:admin
-- 发布时间:2005-10-11 11:13:00
-- 实战查壳脱壳造造 破解注册机最详尽 的教程
各人好,我是kcarhc
今天8月1日了 刚从病院回来 正好凌晨
那期的课程做晚了 那里给各人道个歉
8月1日 假设 我没记错
是建军节
既然是建军节 也要象征性的弄些工具来
为了建军节 那期我抉择 冲击暗中权力--黑社会
那么今天的主题就是
-----------
驱逐建军节,根除黑社会
-----------
起首介绍软件
黑社会2.0
[功用简介]:
1 五大必备功用
长途屏幕; 完全掌握 ; 文件传送; Telnet; 长途关机
2 供给IP反弹定位功用
能够通过静态IP动态域名,网页文件的体例反弹通知IP.
3 集成vidc客户端
内网的伴侣想用主动上线功用,能够实现了
4 本软件集成了常用进攻 东西(如OpenTelnet OpenTftp等)
通过IPC拷贝,并且带有原则 的拷贝进度,全球初次面世;
opentelnet就不介绍了,相信 各人都晓得;
opentftp为本软件首创,能够长途开启tftp办事;
5 本软件集成的极速端口扫描器(扫描速度世界领先)
最起头我用的扫描器是大名鼎鼎的SuperScan3.0,觉得速度很慢;
后来改用SSPort1.0 扫描速度有了明显的进步.
颠末速度比照,本软件扫描速度比SSPort快 1/3 ,是SuperScan的N倍!!!
我的机器是 赛扬700+256M内存,一般扫描速度为180台/秒;
一些号称能够到达1000台/秒的扫描器在本机上试验只要120台/秒.
--------------------
预备 工做:
安拆黑社会
--------------------
步调一 查壳
Peid v0.92
ASPack 2.12 - Alexey Solodovnikov、
--------------------
步调二 脱壳
手动脱壳
快速脱掉ASPACK所有版本的办法
的OEP关键 点鄙人面
0048D3AF 61 POPAD
0048D3B0 75 08 JNZ SHORT 黑社会.0048D3BA
0048D3B2 B8 01000000 MOV EAX,1
0048D3B7 C2 0C00 RETN 0C//402c4a
0048D3BA 68 00000000 PUSH 0
402ca4就是我们要找的OEP
主动脱壳
AspackDie v1.41
那是一个小小的 PE 文件解压缩器 (EXE, DLL, ...) 她能够解压缩
自 Aspack 2000 以后的任何 Aspack 版本. 包罗:
- Aspack 2000
- Aspack 2001
- Aspack 2.1
- Aspack 2.11
- Aspack 2.11c/d
- Aspack 2.12
- Aspack 2.12a/b
- 一些未知的版本
-------------------
步调三 试运行法式 发现打破点
看到关键 字符串
“注册码错误!”
-------------------
步调四 W32DASM 觅 觅 打破点
用w32dasm载进 已经脱壳的法式
字符串观察
未发现 字符串 而是发现一堆乱码
各人于是必然想到了第一节的办法
用EXESCOPE
-------------------
步调四 察找 字符串
翻开eXeScope 并载进 但是发现 都没有字符串
那项
为啥呢?各人必然会疑问
一般用eXeScope查不到
我们将起头
-------------------
步调五 查询软件的编译类型
Peid v0.92
Microsoft Visual Basic 5.0 / 6.0
--------------------
步调六 摘 用GetVBRes v0.51 对于VB法式
GetVBRes v0.51 一个十分好的VB汉化东西
关于VB法式 我们用专门汉化用的GetVBRes v0.51来对于它
也许有人不睬解 为啥用汉化东西呢
其实eXeScope也属于汉化东西
GetVBRes载进 黑社会
发现没有乱码了
看到的满是完全 的字符
我们找到了
注册码错误!
那个字符串
接着为了能搞到法式关键 点地址
我们把“注册码错误!”
改成111111
为啥改成111111因为111111111
保留修改
---------------------
步调六 用W32Dasm载进 修改后的文件
发现字符串中有111111
阿谁就是我们修改的 本来是“注册码错误!”
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004792EF(C)
|
:00479474 B904000280 mov ecx, 80020004
:00479479 B80A000000 mov eax, 0000000A
:0047947E 894D9C mov dword ptr [ebp-64], ecx
:00479481 894DAC mov dword ptr [ebp-54], ecx
:00479484 894DBC mov dword ptr [ebp-44], ecx
:00479487 8D5584 lea edx, dword ptr [ebp-7C]
:0047948A 8D4DC4 lea ecx, dword ptr [ebp-3C]
:0047948D 894594 mov dword ptr [ebp-6C], eax
:00479490 8945A4 mov dword ptr [ebp-5C], eax
:00479493 8945B4 mov dword ptr [ebp-4C], eax
* Possible StringData Ref from Code Obj -"1111111" //适才我们看到的注册吗错误的哦
|
:00479496 C7458C98194100 mov [ebp-74], 00411998
:0047949D C7458408000000 mov [ebp-7C], 00000008
发现跳转来自到4792EF
安照习惯 我们来到4792EF后 接着向前看
看到一个跳到那里的阿谁地址
那里是40928C
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00479278(C)
|
:0047928C 8B55E4 mov edx, dword ptr [ebp-1C]
* Reference T MSVBVM60.__vbaStrMove, Ord:0000h
|
:0047928F 8B3578124000 mov esi, dword ptr [00401278]
:00479295 8D4DE0 lea ecx, dword ptr [ebp-20]
:00479298 895DE4 mov dword ptr [ebp-1C], ebx
:0047929B FFD6 call esi
:0047929D 8B4DE8 mov ecx, dword ptr [ebp-18]
:004792A0 6A01 push 00000001
:004792A2 8D55E0 lea edx, dword ptr [ebp-20]
:004792A5 51 push ecx
:004792A6 52 push edx
:004792A7 E8440F0000 call 0047A1F0
:004792AC 8BD0 mov edx, eax
:004792AE 8D4DDC lea ecx, dword ptr [ebp-24]
:004792B1 FFD6 call esi
:004792B3 50 push eax
:004792B4 53 push ebx
* Reference T MSVBVM60.__vbaInStr, Ord:0000h
|
:004792B5 FF15E8114000 Call dword ptr [004011E8]
:004792BB 8BF0 mov esi, eax
:004792BD 8D45E8 lea eax, dword ptr [ebp-18]
:004792C0 F7DE neg esi
:004792C2 8D4DDC lea ecx, dword ptr [ebp-24]
:004792C5 50 push eax
:004792C6 1BF6 sbb esi, esi
:004792C8 8D55E0 lea edx, dword ptr [ebp-20]
:004792CB 51 push ecx
:004792CC 52 push edx
:004792CD F7DE neg esi
:004792CF 6A03 push 00000003
:004792D1 F7DE neg esi
* Reference T MSVBVM60.__vbaFreeStrList, Ord:0000h
|
:004792D3 FF150C124000 Call dword ptr [0040120C]
:004792D9 8D45D4 lea eax, dword ptr [ebp-2C]
:004792DC 8D4DD8 lea ecx, dword ptr [ebp-28]
:004792DF 50 push eax
:004792E0 51 push ecx
:004792E1 6A02 push 00000002
* Reference T MSVBVM60.__vbaFreeObjList, Ord:0000h
|
:004792E3 FF1548104000 Call dword ptr [00401048]
:004792E9 83C41C add esp, 0000001C
:004792EC 663BF3 cmp si, bx
:004792EF 0F847F010000 je 00479474
我们在
004792AC看到下面那些
EAX=0015A47C, (UNICODE "1000464401458371268751252821609291844811465000")
EDX=00000000
思疑EAX为的
1000464401458371268751252821609291844811465000
为注册码
------------------
步调七 用不确定准确的注册 测验考试注册
用
1000464401458371268751252821609291844811465000
那个注册后
我们发现 注册胜利
------------------
步调八 造做注册机
Keymake v1.73
中断地址:4792AC
中断次数:1
第一字节:8B
指令长度:2
------------------
步调九 发布注册机
找一个网站好比黑基或者你的伴侣之间
------------------
步调十 歇息
黑社会末于干掉了
如今往 找你的男伴侣或者女伴侣
老公或者妻子
找个处所聊聊天 放松放松
告诉他们 你刚刚把黑社会 摆平了
必然很有趣的
------------------
课程完毕
------------------
有工作各人能够往 论坛
不外你假设 性质急
或者嫌我回复的速度慢
我定见 你间接联络我
只要我在 根本能够立即 给你解答
不在能够留言
我的两个联络体例
QQ:9595859
MSN:kcarhc@163.com
最初 说一个事
我的女伴侣比来生病了
所以才招致那期的课程 那么晚才做出来
期看 各人能理解我
我还期看 各人能祝愿她早日康复
否则的话
你们见到我的日子可能会少了
以至可能会消逝在你们面前
好了不说了 今天就是到此OVER吧
---------- kcarhc
2004年8月1日 凌晨 沈阳
--------------------------------------------------------------------------------
-- 做者:admin
-- 发布时间:2005-10-11 16:42:00
-- 利用OllyDbg快速脱壳
做者:KU-凌
目标 :摘 用ASPACK、UPX加壳的NOTEPAD.EXE
东西:OllyDbg 1.09英文版、DUMP插件、PEditor
系统:Win98SE
关键 词: 脱壳、OllyDbg、OD、DUMP、PUSHAD、POPAD
预备常识
大大都壳都有一个配合的特征 。在壳预备 起头解压时都要施行PUSHAD,当壳解压
完时都要挪用POPAD。到底PUSHAD和POPAD是什么干什么用的呢?其实PUSHAD是用来将
所有通俗存放器挨次进栈的指令,POPAD是所有通俗存放器挨次出栈指令。POPAD的出
栈挨次和PUSHAD相反。壳为了庇护存放器,便在解压前将所有存放器进栈庇护起来,
当解压完成后又将存放器出栈,恢复其原貌,并将IP设置为原法式的OEP。如许我们就能够通过那个特征 快速脱掉多种软件的壳。
ASPACK篇
先用ASPACK将NOTEPAD.EXE加壳。用OllyDbg(以下简称OD)载进 。看见光标停在
壳的进 口处。
0040D001 60 PUSHAD ;壳的进 口。预备 起头解压,庇护存放器
0040D002E8 03000000CALLNOTEPAD.0040D00A
……
我们不管它,间接向下翻页找POPAD指令。在40D3AF处找到POPAD
……
0040D3AF61 POPAD ;解压完成,恢复存放器
0040D3B075 08 JNZSHORT NOTEPAD.0040D3BA
0040D3B2B8 01000000MOVEAX, 1
0040D3B7C2 0C00RETN0C
0040D3BA68 CC104000PUSHNOTEPAD.004010CC ;返回到原法式OEP处
0040D3BFC3 RETN
……
选定40D3AF那一行,F4运行到此处。在那里阐明 壳已经完成解压工做。而且返回到原
法式的进 口处。F8单步到4010CC,那里即是原法式的OEP。用DUMP插件间接DUMP出来就能够了(在DUMP时重视 将进 口点改为10CC,即4010CC-400000=10CC,400000是映象基地址)。文件大小是77059字节,用PEditor重建PE头即可以了。未压缩的文件大小是53248字节,脱壳后的文件大小是60930字节。
UPX篇
用UPX将NOTEPAD.EXE加壳,然后用OD载进 。停在PUSHAD处,用脱ASPACK同样的方
法,向下翻页找POPAD。
……
0040E9FE61 POPAD
0040E9FF - E9 C826FFFFJMPNOTEPAD.004010CC
……
下面的JMP就是跳转到法式的OEP处。F4到40E9FF处,F8单步一下,来到OEP处,DUMP出来。DUMP文件的大小是65536字节,间接就能够运行。为了完美,用PEditor重建PE头。那么脱壳后的文件大小是60293字节。
跋文
用上面说的办法,良多种壳都能够快速的手动脱掉。假设 你没有OD的DUMP插件,
能够到新论坛的下载区找。假设 其实没有,也能够间接停在OEP处用PEDump来DUMP。很久没有写工具了。那一篇是写给初学者练手的。其实壳也是软件,再怎么复杂都有可能被脱下来。祝你好运。
别的,转载时请连结本文的完全 。
--------------------------------------------------------------------------------
-- 做者:admin
-- 发布时间:2005-10-11 17:10:00
-- 用Ollydbg手脱EncryptPE V1.2003.5.18加壳的DLL
有兄弟让看看EncryptPE加壳的DLL,我说新版的就不可了,搞不定的。后来看是EncryptPE V1.2003.5.18旧版加壳的,应该用的是老王教师发布的免费版。呵呵,所以脱了一下,趁便笔录 过程。
各人能够本身用EncryptPE V1.2003.5.18免费版加个EdrLib.dll看看。
—————————————————————————————————
一、避开IAT加密
设置Ollydbg漠视 所有的反常 选项。用IsDebug 1.4插件往 掉Ollydbg的调试器标记。
添加“同时漠视 0EEDFADE、C0000008、009B25C、00953D74”反常 。
代码:--------------------------------------------------------------------------------
00877000 60 pushad//进进 OD后停在那
00877001 9C pushfd
00877002 64:FF35 00000000 push dword ptr fs:[0]
00877009 E8 79010000 call EdrLib.00877187
--------------------------------------------------------------------------------
下断:BP IsDebuggerPresent 断下后取缔 断点
如今我们Ctrl+G:711A0000
为何用那个地址?因为V12003518.EPE是不异的。呵呵,钻了个旧版的空子。
其实能够再BP GetProcAddress,根据 返回地址来揣度 。假设 返回地址是711XXXXX,阐明 那是V12003518.EPE的挪用,就能够取缔 断点Ctrl+F9返回了。详细情状 以仓库的返回地址为准。
如今Ctrl+S 在“整个区段”搜刮号令序列:
代码:--------------------------------------------------------------------------------
mov eax,edi
mov edx,dword ptr ss:[ebp-8]
mov dword ptr ds:[eax],edx
xor eax,eax
--------------------------------------------------------------------------------
找到在711A339F处,我们在711A339F处下个 硬件施行 断点。
如今我们封闭Ollydbg,从头载进 那个dll,间接Shift+F9运行,中断在711A339F处
代码:--------------------------------------------------------------------------------
711A339F 8BC7 mov eax,edi
711A33A1 8B55 F8 mov edx,dword ptr ss:[ebp-8]
//改为: mov edx,dword ptr ss:[ebp-4] ★ 准确函数写进
711A33A4 8910 mov dword ptr ds:[eax],edx
711A33A6 33C0 xor eax,eax
711A33A8 5A pop edx
711A33A9 59 pop ecx
711A33AA 59 pop ecx
711A33AB 64:8910 mov dword ptr fs:[eax],edx
711A33AE EB 0A jmp short V1200351.711A33BA
--------------------------------------------------------------------------------
把711A33A1处修改好之后,取缔 以前下的711A339F处的断点。
再Ctrl+S搜刮号令序列:
代码:--------------------------------------------------------------------------------
add ebx,4
mov eax,dword ptr ss:[ebp-4C]
add eax,4
--------------------------------------------------------------------------------
找到在711A43C2处,我们鄙人面xor eax,eax的711A4401下断。Shift+F9运行
代码:--------------------------------------------------------------------------------
711A43C2 83C3 04 add ebx,4
711A43C5 8B45 B4 mov eax,dword ptr ss:[ebp-4C]
711A43C8 83C0 04 add eax,4
711A43CB 8945 B4 mov dword ptr ss:[ebp-4C],eax
711A43CE 8B03 mov eax,dword ptr ds:[ebx]
711A43D0 85C0 test eax,eax
711A43D2 0F87 39FDFFFF ja V1200351.711A4111
711A43D8 A1 74C71B71 mov eax,dword ptr ds:[711BC774]
711A43DD 8038 00 cmp byte ptr ds:[eax],0
711A43E0 75 1F jnz short V1200351.711A4401
711A43E2 8B45 C4 mov eax,dword ptr ss:[ebp-3C]
711A43E5 83C0 14 add eax,14
711A43E8 8945 C4 mov dword ptr ss:[ebp-3C],eax
711A43EB 8B45 C4 mov eax,dword ptr ss:[ebp-3C]
711A43EE 8378 0C 00 cmp dword ptr ds:[eax+C],0
711A43F2 76 0D jbe short V1200351.711A4401
711A43F4 8B45 C4 mov eax,dword ptr ss:[ebp-3C]
711A43F7 8378 10 00 cmp dword ptr ds:[eax+10],0
711A43FB 0F87 38FCFFFF ja V1200351.711A4039//轮回处置IAT
711A4401 33C0 xor eax,eax//此处下断! ★
--------------------------------------------------------------------------------
当我们中断在711A4401处时IAT已经处置完毕,此时就能够用ImportREC得到准确的输进 表了。
因为EncryptPE后面有自校验,所以我们返回711A33A1处,点右键-撤销抉择 ,恢复本来的代码。
—————————————————————————————————
二、得到重定位表信息、获得OEP
Ctrl+S 在“整个区段”搜刮号令序列: