forgot/hexer变形telock

【目    标】: forgot/hexer做的变形telock
【工    具】:Olydbg1.1
【任    务】:当然是要脱光它的衣服了:D
【操作平台】:WINXP pro sp1
【作    者】:loveboom[DFCG][FCG]
【相关链接】: 附件就是了
【简要说明】:呵呵,前几天看看forgot在做"某护肤产品的公告",所以就进去看看,不看可能还没事,一看我的机子就重启了N次,晕呀!
【详细过程】:
      既然搞得我的机子重启这么多次不脱他个光光就太对不起我电脑吧,打开OD设置一下:
 忽略异常里除了'Invalid or privileged instruction'和最下面的一个,其它的全钩上,不用隐身你的OD的,因为壳里"忘记?"了
 还好forgot这次没有清DRX要不,可能就更难了。
先在peid的userdb里加上标志先,这样下次见到好有个照应.
在userdb里加上:
[TElock v0.98b1<->Modifly by forgot/hexer]
signature = 9C 6A 03 73 0B EB 02 75 75
ep_only=false
这样以后和forgot又亲了一点:)
 用OD载入后停在入口:
 
00462862 >^/E9 99D7FFFF     JMP d1.00460000             ;ep
00462867    0000            ADD BYTE PTR DS:[EAX],AL
 
按F9出现异常了:
 
004607E5    8DC0            LEA EAX,EAX                              ; 这里异常了
004607E7    74 03           JE SHORT d1.004607EC
 
异常后我们下断bp GetModuleHandleA,呵呵,他这时还没有检查这里有没有CC呢.下断-->shift+f9断下:
 
77E5AD86 >  837C24 04 00    CMP DWORD PTR SS:[ESP+4],0        ;断在这里
77E5AD8B    0F84 37010000   JE kernel32.77E5AEC8
 
断下来了就先"还东西"(取消断点),再按alt+f9执行到用户代码:
 
00460E97    0BC0            OR EAX,EAX                               ; 回到程序了地盘咯
00460E99    75 07           JNZ SHORT d1.00460EA2
 
回到用户代码后,按CTRL+B找85FF74也就是找:
 
004617E4    85FF            TEST EDI,EDI    ;找的就是这里
004617E6    74 0F           JE SHORT d1.004617F7
 
在4617E4处下he 4617E4(硬件访问断点),下断完毕f9运行一下又异常了.
 
77E53887    5E              POP ESI                                 
77E53888    C9              LEAVE
 
在77E53887处会异常三次,第四次到就了我们刚才下硬件断点的地方:
 
004617E4    85FF            TEST EDI,EDI                             ; ntdll.ZwSetInformationThread
004617E6    74 0F           JE SHORT d1.004617F7
004617E8    FF95 191F4000   CALL DWORD PTR SS:[EBP+401F19]
 
呵呵,看到了吧,壳想搞破坏了,这里我们就把edi给填0,这样的话,不用再担心有效验。
同样,还东西后,走下一步,再次按ctrl+B查找61C685:
 
00461EF7    61              POPAD
00461EF8    C685 E1314000 0>MOV BYTE PTR SS:[EBP+4031E1],0
00461EFF    74 24           JE SHORT d1.00461F25     ;这就是我们要找的,这里一改就会有全部的IAT
 
把00461EFF改成EB24也就是jmp 00461F25,改完后接f9又出现一次异常,这时先不要急着按shift+f9再按程序就跑了.
 
00462336    8DC0            LEA EAX,EAX               ; 异常在这里
00462338    EB 01           JMP SHORT d1.0046233B
 
异常后有两种方法可以很快到程序的OEP的.
第一种 ESP的方法:
异常后下断hr 12ffa4,这样中断在这里:
 
004623B0    874424 FC       XCHG DWORD PTR SS:[ESP-4],EAX            ; 这里断下
004623B4    83EC 04         SUB ESP,4
 
断后取消断点按ctrl+f9执行到返回,然后按一次f8到了入口:
 
00462422    5F              POP EDI
00462423    C3              RETN
......
0044CA98    55              PUSH EBP                                 ; OEP!
0044CA99    8BEC            MOV EBP,ESP
0044CA9B    83C4 F0         ADD ESP,-10
 
第二种 段断点:
    打开内存页,在下面的段上按f2:
   Memory map, item 18
     Address=00401000
     Size=0004C000 (311296.)
    Owner=d1       00400000
     Section=.BJFnt
     Contains=code
    Type=Imag 01001004
    Access=RW
    Initial access=RWE
    然后shift+f9就到入口了:
    0044CA98    55              PUSH EBP                                 ; OEP!
    0044CA99    8BEC            MOV EBP,ESP
 
到了这里就dump+fixdump我就不再多说了,介于这个壳对我的电脑打击过于"利害",所以决定来个"脱壳机器人".哈哈!
code:
   msgyn "设置:按ALT+O打开异常项,除倒数第一和第三项外,其它全部打钩,这个脚本只对forgot/hexer的修改版telock有用,要继续吗?"
   cmp $RESULT,0
   je lblret
 
var addr
var cbase
var csize
gmi eip,CODEBASE
mov cbase,$RESULT
gmi eip,CODESIZE
mov csize,$RESULT
 
start:
   run
 
lbl1:
   gpa "GetModuleHandleA","kernel32.dll"
   bp $RESULT
   esto
 
lbl2:
   bc $RESULT
   rtu
   find eip,#85FF74??FF95#
   cmp $RESULT,0
   je lblabort
   mov addr,$RESULT
   bphws addr,"x"
  
lbl3:
   eob lbl4
   run
   esto
   esto
   esto
 
lbl4:
   bphwc addr
   mov edi,0
   find eip,#61C685#
   cmp $RESULT,0
   je lblabort
   mov addr,$RESULT
   add addr,8
   mov [addr],#EB#
lbl5:
   run
lbl6:
   bprm cbase,csize
   esto
 
end:
   bpmc
   cmt eip,"OEP!"
   msg "Script by loveboom[DFCG][FCG],Thank you for using my script!"
  
lblret:
   ret
 
lblabort:
   msg "出错,脚本将会结束,可能目标程序不是forgot/hexer的变形telock加的壳:(!"
   ret
 
Greetz:
 
Fly,Jingulong,yock,tDasm,David,ahao,vcasm,UFO(brother),alan(sister),all of my friends and you!
                           
                            By loveboom[DFCG][FCG]
                            Email:bmd2chen@tom.com
### PWN 安全漏洞利用的关键技术回顾 #### 缓冲区溢出防护机制及其局限性 尽管 DEP 功能能够有效防止缓冲区溢出攻击,但这并不是唯一存在的威胁形式。为了全面保护系统免受多种类型的恶意攻击,除了启用 DEP 外,还应部署反病毒软件、反间谍软件及网络防火墙等多种安全措施[^2]。 #### 内存分配函数的安全特性 当程序采用 `calloc` 函数来动态分配内存块时,由于该方法初始化了所分配的空间,使得 tcache 攻击变得不可行;同时,如果请求的 chunk 尺寸超过特定阈值(如大于 0x90),则 fastbin 攻击同样不适用于此场景。不过,在某些情况下,可能仍需考虑 largebin_attack 的可能性以针对 global_max_fast 进行潜在的风险评估[^3]。 #### 反汇编工具的选择与应用 IDA Pro 提供了支持不同体系结构版本的支持包,包括但不限于 32 位和 64 位环境下的二进制文件分析能力。这意味着开发者可以根据目标平台的特点选择合适的 IDA 版本来进行逆向工程工作,而无需担心因架构差异带来的兼容性问题[^4]。 #### Payload 构建技巧 在构建用于触发已知漏洞的有效载荷过程中,需要注意 send 和 sendline 方法之间的区别所带来的影响。例如,假设先前调用了 sendline,则后续填充字符的数量应当相应减少一位(即从 0x48 调整至 0x47)。此外,通过适当组合 rop 链中的 gadget 地址和其他参数,可以实现对远程命令执行等功能的操作: ```python from pwn import * payload = b'a' * 0x47 + p64(pop_rdi) + p64(bin_sh) + p64(system) payload += cyclic(200 - len(payload)) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值