“言论自由,莫谈国事!游戏研发中立论坛...”  (10-10)  “论坛主旨:激发你游戏制作的潜能”  (08-12)    

首页  列表  注册  登陆  搜索  用户  排行  帮助
欢迎光临何苦做游戏-游戏开发论坛,请登陆注册
会员总数:18026 新进会员:2333
用户   自动登录
密码    
主题总数:16092 回复总数:24457
今日主题:1 今日回复:2
访问峰值:723 发生时间:2005年06月01日
论坛首页--程序技术专区--chm帮助编辑器v2.6 注册码破解详谈之一*脱壳篇*
帖子主题:chm帮助编辑器v2.6 注册码破解详谈之一*脱壳篇*
    天下
 
  
 注册:2004/7/26         

 状态:普通会员            
 经验:2099

 帖子:198

楼主[2005/5/12 15:47:53]      

   就先说说软件的脱壳吧!它用upx加壳. 

    第一种脱壳方法:trw+冲击波0.2 
启动冲击波,点击Trace,然后运行要脱壳的软件,此时冲击波会显示一个数值(这里应该是00488C78),这 
就是程序的入口. 
trw载入文件,Ctrl+N, 
            g 00488C78 
            MakePe 或 pedump 
脱壳成功! 

    第二种脱壳方法:只用trw. 
    用trw载入程序,选择加载,这时TRW弹出,按一次F10,程序来到这里: 
:004BA000 60                      pushad 
:004BA001 E800000000              call 004BA006 
一直按F10运行到上面这一行,注意这个call一定要进去,因为你再按一次F10的话,程序就运行了! 
于是按F8进入: 
* Referenced by a CALL at Address: 
|:004BA001  

:004BA006 83CDFF                  or ebp, FFFFFFFF 
:004BA009 31DB                    xor ebx, ebx 
:004BA00B 5E                      pop esi 
:004BA00C 8DBEFA6FF4FF            lea edi, dword ptr [esi+FFF46FFA] 
:004BA012 57                      push edi 
:004BA013 668187F4830B000100      add word ptr [edi+000B83F4], 0001 
:004BA01C 81C6B3010000            add esi, 000001B3 
:004BA022 EB0A                    jmp 004BA02E 

到了这里,再继续按F10跳转到 004BA02E,继续跟踪 

:004BA02E 01DB                    add ebx, ebx 
:004BA030 7507                    jne 004BA039 
:004BA032 8B1E                    mov ebx, dword ptr [esi] 
:004BA034 83EEFC                  sub esi, FFFFFFFC 
:004BA037 11DB                    adc ebx, ebx 

* Referenced by a (U)nconditional or (C)onditional Jump at Address: 
|:004BA030(C) 

:004BA039 72ED                    jb 004BA028      
:004BA03B B801000000              mov eax, 00000001 

在004BA039这一行程序将*向上*跳到004BA028,进行循环解压,而我们没有必要跟着它走,所以将光标 
定位于004BA03B,按F7,这样就省去了许多步骤了,接着软件还会有很多类似于这里的地方,都可以用这 
种方法跳过去.若是程序向下跳跃的时候,就不要多此一举了,让它跳就是了,还要注意的是按F7前,最好 
先在跳转的地方设个断点,再bd掉,这样即使判断错误,也还有的救,be就可以了继续跟踪了.继续向下走: 
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses: 
|:004BA04F(C), :004BA05A(C) 

:004BA040 01DB                    add ebx, ebx 
:004BA042 7507                    jne 004BA04B      \\这里会*向下*跳转,让它跳就是了. 
:004BA044 8B1E                    mov ebx, dword ptr [esi] 
:004BA046 83EEFC                  sub esi, FFFFFFFC 
:004BA049 11DB                    adc ebx, ebx 

这两种情况已经明白了吧!那我就省去一些了. 
来到这里 

* Referenced by a (U)nconditional or (C)onditional Jump at Address: 
|:004BA177(C) 

:004BA18A 240F                    and al, 0F 
:004BA18C C1E010                  shl eax, 10 
:004BA18F 668B07                  mov ax, word ptr [edi] 
:004BA192 83C702                  add edi, 00000002 
:004BA195 EBE2                    jmp 004BA179 

* Referenced by a (U)nconditional or (C)onditional Jump at Address: 
|:004BA173(C) 

:004BA197 61                      popad  运行到这里以后看看下面这个跳转 
:004BA198 E9DBEAFCFF              jmp 00488C78    //这里程序便完成来内存中的解工作, 
                                                    将要跳到程序入口点00488C78 
然后就来到了这里: 
00488C78  PUSH EBP    //在这里下MAKEPE命令(但我的TRW经常出错,Why)或是Pedump 
00488C79  MOV  EBP,ESP  但若你用了Pedump那脱壳后的文件将不能在其它操作系统和 
                          其它机器上运行! 
  
到trw目录中,这时看见一个文件在那儿,这就是我们脱壳后的文件,运行一下,挺好的! 


学而不思则罔,思而不学则殆,欢迎大家踊跃发言!

该主题帖子共[ 1 ]页 页码:第 1 页

论坛图例
开放帖 热门帖 被锁帖 总固顶 类固顶 固顶帖 精华帖
© 1998-2018 Npc6.Com 版权所有. ALL RIGHTS RESERVEDD
沪ICP备16050065号-3