首页
社区
课程
招聘
[旧帖] [原创]菜鸟脱壳+破解外挂 0.00雪花
发表于: 2009-7-24 09:39 4674

[旧帖] [原创]菜鸟脱壳+破解外挂 0.00雪花

2009-7-24 09:39
4674
文章标题】: 菜鸟脱壳+破解外挂
【文章作者】: 未注册!
【软件名称】: 飞飞简单辅助5.0.6(单开版)
【下载地址】:自己搜索
【加壳方式】: 未知壳!
【使用工具】: OD WinHex 12.75SR-6汉化版
【操作平台】: windows xp sp2
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】第一步脱壳:查壳,什么都没有。。。!好,OD载入
壳入口:
0040101B >- E9 45C80700     jmp 飞飞简单.0047D865
00401020    B4 09           mov ah,9
00401022    BA 0B01CD21     mov edx,21CD010B
00401027    B4 4C           mov ah,4C
00401029    CD 21           int 21
0040102B    70 61           jo short 飞飞简单.0040108E
0040102D    636B 65         arpl word ptr ds:[ebx+65],bp
00401030    64:2062 79      and byte ptr fs:[edx+79],ah
00401034    206E 73         and byte ptr ds:[esi+73],ch
00401037    70 61           jo short 飞飞简单.0040109A
00401039    636B 24         arpl word ptr ds:[ebx+24],bp
0040103C    40              inc eax
0040103D    0000            add byte ptr ds:[eax],al
0040103F    0050 45         add byte ptr ds:[eax+45],dl
00401042    0000            add byte ptr ds:[eax],al
00401044    4C              dec esp
00401045    0102            add dword ptr ds:[edx],eax
00401047    00A3 FF9B0500   add byte ptr ds:[ebx+59BFF],ah
0040104D    0000            add byte ptr ds:[eax],al
0040104F    0000            add byte ptr ds:[eax],al
00401051    0000            add byte ptr ds:[eax],al
00401053    00E0            add al,ah
00401055    000F            add byte ptr ds:[edi],cl
00401057    010B            add dword ptr ds:[ebx],ecx
00401059    010400          add dword ptr ds:[eax+eax],eax
0040105C    0000            add byte ptr ds:[eax],al


咱们F8一下,哈哈来到真正的壳入口!什么壳自己看吧,

0047D865    9C              pushfd
0047D866    60              pushad
0047D867    E8 00000000     call 飞飞简单.0047D86C
0047D86C    5D              pop ebp
0047D86D    B8 07000000     mov eax,7
0047D872    2BE8            sub ebp,eax
0047D874    8DB5 A3FEFFFF   lea esi,dword ptr ss:[ebp-15D]
0047D87A    8B06            mov eax,dword ptr ds:[esi]
0047D87C    83F8 00         cmp eax,0
0047D87F    74 11           je short 飞飞简单.0047D892
0047D881    8DB5 CBFEFFFF   lea esi,dword ptr ss:[ebp-135]
0047D887    8B06            mov eax,dword ptr ds:[esi]
0047D889    83F8 01         cmp eax,1
0047D88C    0F84 4B020000   je 飞飞简单.0047DADD
0047D892    C706 01000000   mov dword ptr ds:[esi],1
0047D898    8BD5            mov edx,ebp
0047D89A    8B85 5FFEFFFF   mov eax,dword ptr ss:[ebp-1A1]
0047D8A0    2BD0            sub edx,eax
0047D8A2    8995 5FFEFFFF   mov dword ptr ss:[ebp-1A1],edx
0047D8A8    0195 8FFEFFFF   add dword ptr ss:[ebp-171],edx
0047D8AE    8DB5 D3FEFFFF   lea esi,dword ptr ss:[ebp-12D]


下面咱们用ESP定律法到达OEP,程序C++的,呵呵!脱壳修复成功!

但运行的时候出现数据错误:Invalid data in the file!

此类数据效验简单,大家应该都明白!不明白最好在坛子里找找!很容易

用户工具(十六进制编辑工具):WinHex 12.75SR-6汉化版!不会照着我下面操作^_^;

程序OEP:
0040389F    55              push ebp
004038A0    8BEC            mov ebp,esp
004038A2    6A FF           push -1
004038A4    68 F8724000     push 飞飞简单.004072F8
004038A9    68 04554000     push 飞飞简单.00405504
004038AE    64:A1 00000000  mov eax,dword ptr fs:[0]
004038B4    50              push eax
004038B5    64:8925 0000000>mov dword ptr fs:[0],esp
004038BC    83EC 58         sub esp,58
004038BF    53              push ebx
004038C0    56              push esi
004038C1    57              push edi
004038C2    8965 E8         mov dword ptr ss:[ebp-18],esp
004038C5    FF15 48704000   call dword ptr ds:[407048]            ; kernel32.GetVersion
004038CB    33D2            xor edx,edx
004038CD    8AD4            mov dl,ah
004038CF    8915 94BA4000   mov dword ptr ds:[40BA94],edx
004038D5    8BC8            mov ecx,eax
004038D7    81E1 FF000000   and ecx,0FF
004038DD    890D 90BA4000   mov dword ptr ds:[40BA90],ecx
004038E3    C1E1 08         shl ecx,8
004038E6    03CA            add ecx,edx
004038E8    890D 8CBA4000   mov dword ptr ds:[40BA8C],ecx
004038EE    C1E8 10         shr eax,10
004038F1    A3 88BA4000     mov dword ptr ds:[40BA88],eax
004038F6    33F6            xor esi,esi


打开WinHex 12.75SR-6汉化版!放进外挂原程序,先把进度条拉到最后,最往上拉,找到全为0的地方!右键选择选块开始,最到代码最后一个代码选块结束!点上面的复制!
继续打开脱了壳的程序:拉到最后一个代码处,粘贴---保存----OK,试程序运行-----成功!!

此时脱壳修复完成,并成功运行,下面就开始破解了,哈哈!

先说下我的思路!此程序要登陆,那么只要成功登录就成功便用了!于是着手研究,但是进去才知分析的代码太多了,不实用!代码通通是先比较用户大于几位,密码不能小于几位,最进行网络返回比较:比如用户名已存在等!特多代码。

最后发现登陆旁边有个呼出!哈哈。这不是关键了吗!已然有呼出,那么我们可以跳过登录,直接呼出外挂程序不就行了!经验证此想法是可行的,,,想想如果作者做成进游戏后最按快捷键呼出外挂。可就得继续分析上面的第一个想法了。。。。。。下面操作!!

载入脱壳后的程序,用F12暂停法来到关键处:咱现一步一步来!

F9运行程序!点呼出!显示出错:请先登陆。。哈哈!F12暂停之!

最点调用堆栈!来到代码处:
100626A0    FF15 A0260C10   call dword ptr ds:[<&USER32.MessageBo>; user32.MessageBoxA    
100626A6    5F              pop edi
100626A7    83F8 03         cmp eax,3
100626AA    5E              pop esi
100626AB    75 0F           jnz short krnln.100626BC
100626AD    8B4C24 68       mov ecx,dword ptr ss:[esp+68]
100626B1    B8 02000000     mov eax,2


以上代码是系统的领空,咱们返回到程序的领空
F8单步走返回到程序的领空:
004382AA E8 7F170100 call dumped_.00449A2E 出现请先登陆对话框!
004382AF 83C4 28 add esp,28
004382B2 E9 16020000 jmp dumped_.004384CD
004382B7 833D D00CE500 0>cmp dword ptr ds:[E50CD0],1
004382BE 0F85 F4000000 jnz dumped_.004383B8
004382C4 FF35 D40CE500 push dword ptr ds:[E50CD4]
004382CA 68 57C44000 push dumped_.0040C457
004382CF B9 02000000 mov ecx,2
004382D4 E8 1BFFFFFF call dumped_.004381F4
004382D9 83C4 08 add esp,8

向上看看,有没有跳转可以跳过此对话框的! 来到:

00438250    55              push ebp
00438251    8BEC            mov ebp,esp
00438253    81EC 10000000   sub esp,10
00438259    6A FF           push -1
0043825B    6A 06           push 6
0043825D    68 F20B0116     push 16010BF2
00438262    68 01000152     push 52010001
00438267    E8 E6170100     call dumped_.00449A52
0043826C    83C4 10         add esp,10
0043826F    8945 F8         mov dword ptr ss:[ebp-8],eax
00438272    837D F8 00      cmp dword ptr ss:[ebp-8],0   标志位!
00438276    0F85 3B000000   jnz dumped_.004382B7         关键跳!
0043827C    68 04000080     push 80000004
00438281    6A 00           push 0
00438283    68 45C44000     push dumped_.0040C445
00438288    68 01030080     push 80000301
0043828D    6A 00           push 0
0043828F    68 30000000     push 30
00438294    68 04000080     push 80000004
00438299    6A 00           push 0
0043829B    68 4AC44000     push dumped_.0040C44A
004382A0    68 03000000     push 3
004382A5    BB 00030000     mov ebx,300
004382AA    E8 7F170100     call dumped_.00449A2E    出现请先登陆对话框
004382AF    83C4 28         add esp,28
004382B2    E9 16020000     jmp dumped_.004384CD
004382B7    833D D00CE500 0>cmp dword ptr ds:[E50CD0],1
004382BE    0F85 F4000000   jnz dumped_.004383B8
004382C4    FF35 D40CE500   push dword ptr ds:[E50CD4]
004382CA    68 57C44000     push dumped_.0040C457
004382CF    B9 02000000     mov ecx,2
004382D4    E8 1BFFFFFF     call dumped_.004381F4
004382D9    83C4 08         add esp,8


00438272    837D F8 00      cmp dword ptr ss:[ebp-8],0   标志位!
咱们把的0修为1,运行试试!成功了,呵呵!咱们也可把JNZ修改也行!上面的CALL修改也行!!

有很多种方法,自己慢慢调试就清楚了!


总结:完成得差不到了!!就是程序运行的时候随便输个用户名及密码,填一个也行!密码不填!!点呼出就行了!!,经测试可用!!

但程序退出的有出错,这并不影响使用!!想得完美的自己调试了!!

谢谢你有耐心得完,希望你也能学到东西!!失误之处还望各位大侠指教!!!

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
米看懂有视频没?
2009-9-18 14:24
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
很明显是VC++6.0的
2009-9-27 15:16
0
雪    币: 183
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这也出来了哦!
2009-9-27 15:18
0
游客
登录 | 注册 方可回帖
返回
//