|
tELock 0.98 精彩代码
啊,缩进还是丢失了 |
|
请教斑竹了,请进!!!!
不快一点就被这位兄台连灌4帖了:o |
|
|
|
|
|
请教斑竹了,请进!!!!
首先我想大家应该先明白“壳”的概念。在自然界中,我想大家对壳这东西应该都不会陌生了,植物用它来保护种子,动物用它来保护身体等等。同样,在一些计算机软件里也有一段专门负责保护软件不被非法修改或反编译的程序。它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。就像动植物的壳一般都是在身体外面一样理所当然(但后来也出现了所谓的“壳中带籽”的壳)。由于这段程序和自然界的壳在功能上有很多相同的地方,基于命名的规则,大家就把这样的程序称为“壳”了。就像计算机病毒和自然界的病毒一样,其实都是命名上的方法罢了。 最早提出“壳”这个概念的,据我所知,应该是当年推出脱壳软件 RCOPY 3 的作者熊焰先生。在几年前的 DOS 时代,“壳”一般都是指磁盘加密软件的段加密程序,可能是那时侯的加密软件还刚起步不久吧,所以大多数的加密软件(加壳软件)所生成的“成品”在“壳”和需要加密的程序之间总有一条比较明显的“分界线”。有经验的人可以在跟踪软件的运行以后找出这条分界线来,至于这样有什么用这个问题,就不用我多说了。但毕竟在当时,甚至现在这样的人也不是很多,所以当 RCOPY3 这个可以很容易就找出“分界线”,并可以方便的去掉“壳”的软件推出以后,立即就受到了很多人的注意。老实说,这个我当年在《电脑》杂志看到广告,在广州电脑城看到标着999元的软件,在当时来说,的确是有很多全新的构思,单内存生成 EXE 可执行文件这项,就应该是世界首创了。但它的思路在程序的表现上我认为还有很多可以改进的地方(虽然后来出现了可以加强其功力的 RO97),这个想法也在后来和作者的面谈中得到了证实。在这以后,同类型的软件想雨后春笋一般冒出来,记得住名字的就有: UNKEY、MSCOPY、UNALL .... 等等,但很多的软件都把磁盘解密当成了主攻方向,忽略了其它方面,当然这也为以后的“密界克星”“解密机器”等软件打下了基础,这另外的分支就不多祥谈了,相信机龄大一点的朋友都应该看过当时的广告了。 解密(脱壳)技术的进步促进、推动了当时的加密(加壳)技术的发展。LOCK95和 BITLOK 等所谓的“壳中带籽”加密程序纷纷出笼,真是各出奇谋,把小小的软盘也折腾的够辛苦的了。正在国内的加壳软件和脱壳软件较量得正火红的时候,国外的“壳”类软件早已经发展到像 LZEXE 之类的压缩壳了。这类软件说穿了其实就是一个标准的加壳软件,它把 EXE 文件压缩了以后,再在文件上加上一层在软件被执行的时候自动把文件解压缩的“壳”来达到压缩 EXE 文件的目的。接着,这类软件也越来越多, PKEXE、AINEXE、UCEXE 和后来被很多人认识的 WWPACK 都属于这类软件,但奇怪的是,当时我看不到一个国产的同类软件。 过了一段时间,可能是国外淘汰了磁盘加密转向使用软件序列号的加密方法吧,保护 EXE 文件不被动态跟踪和静态反编译就显得非常重要了。所以专门实现这样功能的加壳程序便诞生了。 MESS 、CRACKSTOP、HACKSTOP、TRAP、UPS 等等都是比较有名气的本类软件代表,当然,还有到现在还是数一数二的,由台湾同胞所写的 FSE 。其实以我的观点来看,这样的软件才能算是正宗的加壳软件。 在以上这些加壳软件的不断升级较劲中,很多软件都把比较“极端”技术用了上去,因为在这个时候 DOS 已经可以说是给众高手们玩弄在股掌之间了,什么保护模式、反 SICE 、逆指令等等。相对来说,在那段时间里发表的很多国外脱壳程序,根本就不能对付这么多的加壳大军,什么 UPC、TEU 等等都纷纷成为必防的对象,成绩比较理想的就只有 CUP386 了,反观国内,这段时间里也没了这方面的“矛盾斗争”。加壳软件门挥军直捣各处要岗重地,直到在我国遇到了 TR 这个铜墙铁壁以后,才纷纷败下阵来各谋对策,但这已经是一年多以后的事情了。我常想,如果 TR 能早两年“出生”的话,成就肯定比现在大得多,甚至盖过 SICE 也有可能。TR 发表的时候 WIN95 的流行已经成为事实,DOS 还有多少的空间,大家心里都清楚。但话又说回来, TR 的确是个好软件,比起当年的 RCOPY3 有过之而无不及,同时也证明了我们中国的 CRACK 实力(虽然有点过时)。这个时候,前面提到过的 FSE 凭着强劲的实力也渐渐的浮出了水面,独领风骚。其时已经是 1997 年年底了,我也走完了学生“旅程”。工作后在CFIDO 的 CRACK 区认识了 Ding-Boy ,不久 CRACK 区关了,我从此迷上了 INTERNET,并于98年6月建起了一个专门介绍“壳”的站台: http://topage.126.com ,放上了我所收集的所有“壳”类软件。在这段时间里,各种“壳”类软件也在不段的升级换代,但都没什么太大的进展,差不多就是 TR 和众加壳软件的版本数字之争而已。 1998年8月,一个名为 UNSEC (揭秘)的脱壳软件发表了,它号称可以脱掉98年8月以前发表的所有壳。我测试之后,觉得并没传闻中的那么厉害,特别是兼容性更是令我不想再碰它。 Ding-Boy 给这个软件的作者提了很多建议,但寄去的 EMIAL 有如泥牛入海,可能是一怒之下吧,不久 Ding-Boy 的 BW (冲击波)就诞生了。这个使用内存一次定位生成 EXE 文件(后来放弃了)的脱壳软件,在我的站台公开后,得到了很多朋友们的肯定。要知道,从RCOPY 3 开始,绝大部分的脱壳软件都是要两次运行目标程序来确定 EXE 的重定位数据的。BW 的这一特点虽然有兼容性的问题,但也树立了自己的风格、特色。经过几个月的改善, BW 升级到了 2.0 版本,这个版本的推出可以说是 BW 的转折点,因为它已经是一个成熟、稳定脱壳软件了,它可以对付当时(现在)大多数的壳,包括当时最新的 FSE 0.6 等。更重要的是这个版本把选择壳的和软件“分界线”这个最令新手头疼的步骤简化到不能再简化的地步,使更多的朋友接受了它。另外,能加强 BW 功力的 CI 模式也是其它脱壳软件没有的东西。最近,BW 发表了最新的 2.5 BETA2 版本,增强了一些方面的功能,因它竟然可以脱掉号称最厉害的磁盘加密工具 LOCKKING 2.0 的加密壳,因而进一步奠定了它在“脱壳界”的地位。说到最新,就不能不提 GTR、LTR、EDUMP、ADUMP、UPS、UPX、APACK 这几个国外的好软件了,它们每个都有自己的特色,可以说都是当今各类“壳”中的最新代表了。(这些软件和详细介绍请到我的主页查阅) 由于 WINDOWS 3.1 只是基于 DOS 下的一个图形外壳,所以在这个平台下的“壳”类软件很少,见过的就只有像 PACKWIN 等几个有限的压缩工具,终难成气候。 可能是 MICROSOFT 保留了 WIN95 的很多技术上的秘密吧,所以即便是 WIN95 已经推出了 3 年多的时间,也没见过在其上面运行的“壳”类软件。直到 98 年的中期,这样的软件才迟迟的出现,而这个时候 WIN98 也发表了有一段日子了。应该是有 DOS 下的经验吧,这类的软件不发表由自可,一发表就一大批地的冲了出来。先是加壳类的软件如: BJFNT、PELOCKNT 等,它们的出现,使暴露了 3 年多的 WIN95 下的 PE 格式 EXE 文件得到了很好的保护。大家都应该知道现在很多 WIN95 下的软件都是用注册码的方法来区分、确定合法与非法用户的吧,有了这类加壳软件,这种注册方法的安全性提高了不少,如果大家也有自己编的 WIN95 程序,就一定要多留意一下本类软件了。接着出现的就是压缩软件了,因为 WIN95 下运行的 EXE 文件“体积”一般都比较大,所以它的实用价值比起 DOS 下的压缩软件要大很多,这类的软件也很多,早些时候的 VBOX、PEPACK、PETITE 和最近才发表的 ASPACK、UPX 都是其中的佼佼者。在 DOS 下很流行的压缩软件 WWPACK 的作者也推出了对应 WIN95 版本的 WWPACK32,由于性能并不是十分的突出,所以用的人也不太多。由于压缩软件其实也是间接给软件加了壳,所以用它们来处理 EXE 也是很多软件作者喜欢做的事情,最近新发表的很多软件里都可以看到这些加壳、加压缩软件的名字了。有加壳就一定会有脱壳的,在 WIN95 下当然也不例外,但由于编这类软件比编加壳软件要难得多,所以到目前为止,我认为就只有 PROCDUMP 这个软件能称为通用脱壳软件了,它可以对付现在大多数的加壳、压缩软件所加的壳,的确是一个难得的精品。其它的脱壳软件多是专门针对某某加壳软件而编,虽然针对性强、效果好,但收集麻烦,而且这样的脱壳软件也不多。前些时候 TR 作者也顺应潮流发表了 TR 的 WIN95 版本: TRW ,由现在的版本来看可以对付的壳还不多,有待改进。 BW 的作者 Ding-Boy 最新发表了一个 WIN95 的 EXE 加壳软件 DBPE 。虽然它还不太成熟,但它可以为软件加上使用日期限制这个功能是其它加壳软件所没有的,或者以后的加壳软件真的会是像他说的那样可以:加壳和压缩并重、并施;随意加使用日期;加上注册码;加软件狗(磁盘)保护;加硬件序列号判别;加... 。 |
|
unprackme (unpackme & crackme) v0.9
Borland的DFM保护比较常见,你做的到资源重定位的话可以随便干点什么,参考OBS....(好复杂的名字) 我怎么才想起来esp定律就是DRx....huh,多谢提醒 图标发到forgot@army.com或者Q150099182直接发给我好了.:D |
|
寻求OllyDbg v1.10c英文原版
pediy首页上找ollydbg的主页 |
|
|
|
|
|
幻影之旅――[DBPE 2.x -> Ding Boy & zer0]流程攻略
最初由 nyjzhang 发布 用OD就脱出来了:D |
|
幻影之旅――[DBPE 2.x -> Ding Boy & zer0]流程攻略
最初由 wangshy 发布 你可以跳过patch IAT的地方,把IT地址和Size(也许没必要)得到 然后直接修改Data Dir里的指针。 这个方法没必要……除非是完美狂比如heXer...:D |
|
新手报道!PC Shrinker 0.71这个壳?
看着源代码脱吧:D @Loader_Start: ; DATA XREF: CompressFile+4A9o ; CompressFile+52Ao ... pushf pusha ; ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ db 0BDh ; ? ; mov ebp @1 dd 0 ; DATA XREF: CompressFile+4AEw ; ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ add ss:@Dcomp_Buffer_Offset[ebp], ebp push ss:@Largest_Needed_Buffer[ebp] push GPTR call ss:_GlobalAlloc[ebp] push eax push eax sub eax, offset @Critical_Symbiont mov ss:@2[ebp], eax pop edi lea esi, @Critical_Symbiont[ebp] mov ecx, (@Loader_End - @Loader_Start)/4+1 rep movsd pop edi jmp edi ; ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ @Critical_Symbiont db 0BDh ; DATA XREF: pcs1:00403961o ; pcs1:0040396Dr @2 dd 0 ; DATA XREF: pcs1:00403966w ; ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ mov esi, edi add esi, 160h add edi, @Loader_End-@Loader_Start push edi push esi push edi push ebp push edi push esi call aP_Depack add esp, 8 pop ebp xchg eax, ecx pop esi pop edi rep movsb jmp decomp_done @Largest_Needed_Buffer dd 0 ; DATA XREF: CompressFile+3C2r ; CompressFile+3CAw ... @Dcomp_Buffer_Offset dd offset dcomp_buffer ; DATA XREF: pcs1:0040394Bw fake_import_table dd 28h ; DATA XREF: CompressFile+4BAw dd 2 dup(0) dword_403A64 dd 3Ch ; DATA XREF: CompressFile+4C0w dword_403A68 dd 28h ; DATA XREF: CompressFile+4C6w dd 5 dup(0) ; end marker _LoadLibraryA dd 49h ; DATA XREF: CompressFile+4CCw ; pcs1:00403B6Cr ... _GetProcAddress dd 58h ; DATA XREF: CompressFile+4D2w ; pcs1:00403B7Er ... _GlobalAlloc dd 69h ; DATA XREF: CompressFile+4D8w ; pcs1:00403959r _ExitProcess dd 77h ; DATA XREF: CompressFile+4DEw ; pcs1:00403B95r dd 0 aKernel32_dll_0 db 'KERNEL32.DLL',0 dw 0 aLoadlibrarya db 'LoadLibraryA',0 dw 0 aGetprocaddress db 'GetProcAddress',0 dw 0 aGlobalalloc db 'GlobalAlloc',0 dw 0 aExitprocess db 'ExitProcess',0 ; ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ decomp_done: ; CODE XREF: pcs1:004039A4j ; DATA XREF: sub_402185+45o ... pop edi lea esi, byte_403C71[ebp] loc_403AE4: ; CODE XREF: pcs1:00403B25j push ebp push edi push esi lodsd or eax, eax jz short loc_403B27 xchg eax, edx lodsd xchg eax, ecx push edi push ecx mov esi, edx rep movsb pop ecx pop edi cmp edx, ss:dword_403C6D[ebp] jnz short loc_403B15 mov eax, ss:RsrcDisplacement[ebp] pusha mov esi, edi mov edi, edx mov ecx, eax rep movsb popa add edi, eax add edx, eax sub ecx, eax loc_403B15: ; CODE XREF: pcs1:00403AFDj push edx push edi call aP_Depack add esp, 8 pop esi pop edi pop ebp add esi, 8 jmp short loc_403AE4 ; ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ loc_403B27: ; CODE XREF: pcs1:00403AEAj add esp, 0Ch lea esi, byte_403CC9[ebp] loc_403B30: ; CODE XREF: pcs1:00403B5Cj lodsd or eax, eax jz short loc_403B5E xchg eax, ebx lodsd xchg eax, edx lodsd xchg eax, ecx push edi push esi xchg ebx, esi push edi push ecx rep movsb pop ecx pop esi mov edi, edx rep movsb pop esi lodsd xchg eax, ecx xor eax, eax rep stosb mov edi, [esi-10h] mov ecx, [esi-0Ch] sub ecx, edi xor eax, eax rep stosb pop edi jmp short loc_403B30 ; ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ loc_403B5E: ; CODE XREF: pcs1:00403B33j call _ProcessImports jnb short goto_entry lea ebx, aUser32_dll_0[ebp] ; "USER32.DLL" push ebx call ss:_LoadLibraryA[ebp] or eax, eax jz short _No_Error_Message lea ebx, aMessageboxa[ebp] ; "MessageBoxA" push ebx push eax call ss:_GetProcAddress[ebp] lea ebx, aRequiredDllMis[ebp] ; "Required DLL missing!" push 30h push 0 push ebx push 0 call eax _No_Error_Message: ; CODE XREF: pcs1:00403B74j push 0 call ss:_ExitProcess[ebp] goto_entry: ; CODE XREF: pcs1:00403B63j popa popf ; ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ db 0BAh ; ? ; mov edx,dword host_eip dd 0 ; DATA XREF: CompressFile+507w ; ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ jmp edx ; 〓〓〓〓〓〓〓〓 S U B R O U T I N E 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓 _ProcessImports proc near ; CODE XREF: pcs1:00403B5Ep mov esi, ss:iAddress[ebp] or esi, esi jz short @Success mov edx, ss:@ImageBase[ebp] add esi, edx @Process_IID_Loop: ; CODE XREF: _ProcessImports+22j push edx push esi call _ProcessImportDir ; ProcessImportDir(DWORD *IMPORT_DIRECTORY_VA, DWORD *IMAGEBASE) jb short @Error add esi, 14h ; size IID cmp dword ptr [esi+0Ch], 0 ; no Name? jnz short @Process_IID_Loop @Success: ; CODE XREF: _ProcessImports+8j clc retn ; ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ @Error: ; CODE XREF: _ProcessImports+19j stc retn _ProcessImports endp ; sp = -8 ; 〓〓〓〓〓〓〓〓 S U B R O U T I N E 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓 ; ProcessImportDir(DWORD *IMPORT_DIRECTORY_VA, DWORD *IMAGEBASE) _ProcessImportDir proc near ; CODE XREF: _ProcessImports+14p pop eax pop esi ; 1st import dir pop edx ; edx->imagebase push eax mov ecx, [esi] ; OriginalFirstThunk mov edi, [esi+10h] ; FirstThunk or ecx, ecx jnz short @Original1stThunkOK mov ecx, edi @Original1stThunkOK: ; CODE XREF: _ProcessImportDir+Bj add ecx, edx add edi, edx mov eax, [esi+0Ch] ; eax->dll name add eax, edx ; +ImageBase push ecx push edx push eax call ss:_LoadLibraryA[ebp] pop edx pop ecx or eax, eax jz short @Error mov ss:DllHandle[ebp], eax @Process_Dir_Loop: ; CODE XREF: _ProcessImportDir+5Ej mov ebx, [ecx] or ebx, ebx jz short iret_success test ebx, IMAGE_ORDINAL_FLAG32 jnz short @Ordinal ; clear 31st bit add ebx, edx ; skip hint(WORD) inc ebx inc ebx @Ordinal: ; CODE XREF: _ProcessImportDir+39j and ebx, 7FFFFFFFh ; clear 31st bit push ecx push edx push ebx push ss:DllHandle[ebp] call ss:_GetProcAddress[ebp] pop edx pop ecx or eax, eax jz short @Error stosd add ecx, 4 jmp short @Process_Dir_Loop ; ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ iret_success: ; CODE XREF: _ProcessImportDir+31j clc retn ; ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ @Error: ; CODE XREF: _ProcessImportDir+25j ; _ProcessImportDir+58j stc retn _ProcessImportDir endp ; sp = 4 ; ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ aRequiredDllMis db 'Required DLL missing!',0 ; DATA XREF: pcs1:00403B84r aUser32_dll_0 db 'USER32.DLL',0 ; DATA XREF: pcs1:00403B65r aMessageboxa db 'MessageBoxA',0 ; DATA XREF: pcs1:00403B76r DllHandle dd 0 ; DATA XREF: _ProcessImportDir+27w ; _ProcessImportDir+48r iAddress dd 0 ; DATA XREF: CompressFile+4EAw ; _ProcessImportsr @ImageBase dd 0 ; DATA XREF: CompressFile+E9w ; CompressFile+29Fr ... RsrcDisplacement dd 0 ; DATA XREF: Scan_Resource_Dir+7Br ; CompressFile+1FBw ... dword_403C6D dd 0 ; DATA XREF: CompressFile+1B3w ; CompressFile+287r ... byte_403C71 db 0 ; DATA XREF: CompressFile+25Co ; pcs1:00403ADEr dd 13h dup(0) db 3 dup(0) dword_403CC1 dd 2 dup(0) ; DATA XREF: CompressFile+271o byte_403CC9 db 67h dup(0) ; DATA XREF: CompressFile+233o ; CompressFile+243o ... @Loader_End db 36h dup(0) ; DATA XREF: pcs1:00403973t ; pcs1:0040398At db 3 dup(0) dcomp_buffer label BYTE |
|
unprackme (unpackme & crackme) v0.9
最初由 cyclotron 发布 我没有VM就不测试了,不过图标我喜欢:D 可以把BCB/Delphi的DFM拷到内存并修改指针,如果Dump就无效,当然出错。 怎么反的esp定律?sub esp, 50h破坏堆栈 注意XP风格不能压缩。 |
|
欢迎 lipton 新任看雪脱壳论坛斑竹!
TTT:D |
|
|
|
用进程注入来实现一个壳
直接保存目标进程代码,写入执行你的代码再还原不就行了 |
|
欢迎评测 EncryptPE V2.2004.5.18 Preview
当初我说remote老王不答,我以为错了...原来真是 |
|
征集一下ANTI―DEBUG的方法!!!!!!!!!!
kongfoo不是写了. |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值