首页
社区
课程
招聘
[原创]ty123 Reverseme 3(适合新手,难度略增)
2007-2-14 08:39 5577

[原创]ty123 Reverseme 3(适合新手,难度略增)

2007-2-14 08:39
5577
======== ty123 Reverseme 3 ========

作者:ty123[DFCG]

邮件:soy_ty123@163.com

语言:Win32汇编语言

难度:2/10

适用的操作平台:WinXP/Win2K

文件:       
        - ty123 Reverseme3.exe       
        - Readme.txt

规则和要求:
        - 程序目前无法运行,请找出原因并修正
        - 给Help菜单添加一个Register子菜单,该子菜单应与Register按钮完成相同的功能
        - Reg-code验证通过后,程序应将Register子菜单和Register按钮一并置灰
        - 编写Reverse教程

说明:
        - Reverseme 3适合初学者练习,难度比前两个Reverseme略有增加       
        - 其他说明请点击程序About按钮查看

致谢:
        - DFCG的老大“我要”及全体成员
        - Kanxue及论坛的道友们
        - 流动的情感、yugung等大侠关注并破解“ty123 Crackme5”
        - netwind、dewar等大侠关注并破解“ty123 Crackme6”
        - 流动的情感等大侠关注并破解“ty123 Crackme4 -CPN Augur”
        - 4st0ne等大侠关注并完成“ty123 Reverseme 1”
        - 小娃崽等大侠关注并完成“ty123 Reverseme 2”

ty123

2007年2月14日

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

上传的附件:
收藏
免费 7
打赏
分享
最新回复 (3)
雪    币: 383
活跃值: (41)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
小娃崽 13 2007-2-14 15:57
2
0
1.程序运行不了,看了一下
发现:VOffset=7479,把它改成4000就可以了,为什么不是5000?因为SizeOfimage也就是5000而已

2,增加一个Register,用资源黑客最省事了:
10000 MENUEX
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
{
POPUP "&File", 0, MFT_STRING, MFS_ENABLED, 0
{
        MENUITEM "E&xit", 10001, MFT_STRING, MFS_ENABLED
}
POPUP "&Help", 0, MFT_STRING, MFS_ENABLED, 0
{
        MENUITEM "&About", 10101, MFT_STRING, MFS_ENABLED
       MENUITEM "&Register", 10102, MFT_STRING, MFS_ENABLED        //增加这一行

}
}

3.另Register菜单与Register按妞起相同的作用~!

原来的代码如下:
00401167  |.  8B45 10       mov     eax, dword ptr [ebp+10]          ;  Case 111 (WM_COMMAND) of switch 004010FA
0040116A  |.  25 FFFF0000   and     eax, 0FFFF
0040116F  |.  3D 11270000   cmp     eax, 2711                        ;  //是不是exit菜单
00401174  |.  75 13         jnz     short 00401189                      //不是跳走,是就发送关闭消息!
00401176  |.  6A 00         push    0                                ; /lParam = 0; Case 2711 of switch 0040116F
00401178  |.  6A 00         push    0                                ; |wParam = 0
0040117A  |.  6A 10         push    10                               ; |Message = WM_CLOSE
0040117C  |.  FF75 08       push    dword ptr [ebp+8]                ; |hWnd
0040117F  |.  E8 6C020000   call    <jmp.&user32.SendMessageA>       ; \SendMessageA
00401184  |.  E9 9F000000   jmp     00401228
00401189  |>  3D E9030000   cmp     eax, 3E9                          //比较是不是按下了Risgeter
0040118E  |.  75 41         jnz     short 004011D1                   //不是跳走
00401190  |.  6A 00         push    0                                ; /lParam = NULL; Case 3E9 of switch 0040116F
00401192  |.  68 2E124000   push    0040122E                         ; |DlgProc = ty123_Re.0040122E
00401197  |.  FF35 34304000 push    dword ptr [403034]               ; |hOwner = NULL
0040119D  |.  68 D0070000   push    7D0                              ; |pTemplate = 7D0
004011A2  |.  FF35 2C304000 push    dword ptr [40302C]               ; |hInst = NULL
004011A8  |.  E8 F5010000   call    <jmp.&user32.DialogBoxParamA>    ; \DialogBoxParamA,显示注册对话框

修改后如下:
0040116F     /E9 F3020000   jmp     00401467                        跳到我们的代码处!            

00401467      3D 76270000   cmp     eax, 2776                        //比较是不是菜单
0040146C      75 05         jnz     short 00401473                   //不是跳到比较是不是按妞
0040146E    ^ E9 1DFDFFFF   jmp     00401190                          //是就跳到显示注册对话匡
00401473      3D 11270000   cmp     eax, 2711                       //比较是不是按妞
00401478    ^ E9 F7FCFFFF   jmp     00401174                        //跳回原来代码处

4。现在Register菜单与Register按妞起相同的作用了,但是点击以后只有按妞变灰,但是菜单没有,还得修改代码!

灰化完按妞之后继续灰化菜单,这样就达到要求了~~
00401152   . /E9 28030000   jmp     0040147F                             //条到我们的代码处

0040147F      E8 2AFFFFFF   call    <jmp.&user32.EnableWindow>
.............
              jmp   原来代码处
=============最后一步取得菜单句柄的函数不大熟悉,等高手答案====
雪    币: 342
活跃值: (318)
能力值: ( LV12,RANK:740 )
在线值:
发帖
回帖
粉丝
aalloverred 18 2007-2-14 20:02
3
0
还可以动态的添加菜单:

00401124  |. A3 40304000    MOV DWORD PTR DS:[403040],EAX
改成下面这样,让它跳到我们的代码:
00401124     E9 77030000    JMP ty123_Re.004014A0
:::
004014A0   > A3 40304000    MOV DWORD PTR DS:[403040],EAX
004014A5   . 90             NOP     
004014A6   . 6A 01          PUSH 1                           ; /Pos = 1
004014A8   . 50             PUSH EAX                         ; |hMenu
004014A9   . E8 AC209277    CALL user32.GetSubMenu           ; \GetSubMenu
004014AE   . 68 C5144000    PUSH ty123_Re.004014C5           ; /pItem = "&Register"
004014B3   . 68 E9030000    PUSH 3E9                         ; |ItemID = 3E9 (1001.)
004014B8   . 6A 00          PUSH 0                           ; |Flags = MF_BYCOMMAND|MF_ENABLED|MF_STRING
004014BA   . 50             PUSH EAX                         ; |hMenu
004014BB   . E8 AC5C9277    CALL user32.AppendMenuA          ; \AppendMenuA
004014C0   .^E9 64FCFFFF    JMP ty123_Re.00401129
004014C5   . 26 52 65 67 69>ASCII "&Register",0
因为ty123根据消息提供的ID直接跳到相应的处理程序,所以将新菜单的ID直接设置为和“注册”按钮的ID一样,它们就会有相同的功能了。

下面是菜单变灰的部分:
040114C   . FF35 3C304000  PUSH DWORD PTR DS:[40303C]       ; |hWnd = NULL
改为=>
0040114C     E9 7F030000    JMP ty123_Re.004014D0
00401151     90             NOP
:::004014D0:::
004014D0   > FF35 3C304000  PUSH DWORD PTR DS:[40303C]       ; |hWnd = NULL
004014D6   . E8 F9AF9177    CALL user32.EnableWindow         ; \EnableWindow
004014DB   . 6A 01          PUSH 1                           ; /Pos = 1
004014DD   . FF35 40304000  PUSH DWORD PTR DS:[403040]       ; |hMenu = NULL
004014E3   . E8 72209277    CALL user32.GetSubMenu           ; \GetSubMenu
004014E8   . 6A 01          PUSH 1                           ; /Flags = MF_BYCOMMAND|MF_GRAYED|MF_STRING
004014EA   . 68 E9030000    PUSH 3E9                         ; |ItemID = 3E9 (1001.)
004014EF   . 50             PUSH EAX                         ; |hMenu
004014F0   . E8 47E79177    CALL user32.EnableMenuItem       ; \EnableMenuItem
004014F5   .^E9 5DFCFFFF    JMP ty123_Re.00401157
上传的附件:
雪    币: 383
活跃值: (41)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
小娃崽 13 2007-2-14 20:15
4
0
因为ty123根据消息提供的ID直接跳到相应的处理程序,所以将新菜单的ID直接设置为和“注册”按钮的ID一样,它们就会有相同的功能了。
........


这个我事后才想到

原来是EnableMenuItem函数....

========由 小娃崽 于 2007-02-14 20:22 最后编辑=====
楼上的直接在代码里面call函数,估计不通用,看来ty123的目的是想叫我们自己添加...
游客
登录 | 注册 方可回帖
返回