【文章作者】: 冰橙子
【详细过程】
今天拿到PcShare远程控制会员版本20070826,看看说明
一、加了插默认浏览器的功能
二、重新修改了文件下载,一目了然,肉机不上线也可以管理。
三、加了窗口管理的功能、
四、加了群发消息的功能
五、加了强制肉机访问网页的功能
六、增加代理(不完善测试阶段)
七、增加了记录系统登录密码功能
看着看着 就想破解,说干就干,不管是不是菜鸟,还是先查壳把,
用PEID查壳:
Themida/WinLicense V1.8.2.0 + -> Oreans Technologies * Sign.By.fly *
如果你的查不到,可以下载最新的特征库
由于是Themida壳,1.9版本的后反OD的插件,只能用工具隐藏,PEID分辨不是很好,所以干脆就用HideToolz.exe 把OD隐藏起来
在HideToolz.exe里添加上你的OD的目录,在隐藏选项里选上:
Hide process
Protect process
Hide windows
Protect form windows
Anti-anti debug
Auto Start
设置好后打开OD,
1、设置OllyDBG忽略所有异常选项。
2、用HideOD插件:
勾选Auto Run HideOD、HideNtdebugBit。
勾选ZwQueryInformationProcess-->method2。
OD载入后,到这里:
00556014 P> B8 00000000 mov eax,0
00556019 60 pushad
0055601A 0BC0 or eax,eax
0055601C 74 68 je short 00556086 ; PcShare.00556086
0055601E E8 00000000 call 00556023 ; PcShare.00556023
00556023 58 pop eax ; kernel32.7C816FD7
00556024 05 53000000 add eax,53
00556029 8038 E9 cmp byte ptr ds:[eax],0E9
0055602C 75 13 jnz short 00556041 ; PcShare.00556041
0055602E 61 popad
0055602F EB 45 jmp short 00556076 ; PcShare.00556076
00556031 DB2D 37605500 fld tbyte ptr ds:[556037]
00556037 FFFF ??? ; Unknown command
00556039 FFFF ??? ; Unknown command
0055603B FFFF ??? ; Unknown command
0055603D FFFF ??? ; Unknown command
0055603F 3D 40E80000 cmp eax,0E840
00556044 0000 add byte ptr ds:[eax],al
00556046 58 pop eax ; kernel32.7C816FD7
00556047 25 00F0FFFF and eax,FFFFF000
0055604C 33FF xor edi,edi ; ntdll.7C930738
接着运行okdodo大侠的Themida脚本后:
运行完成后有提示:
脚本执行完毕,请注意OEP是否被偷代码!
点确定,来到这里:
00422C05 50 push eax
00422C06 64:8925 00000000 mov dword ptr fs:[0],esp
00422C0D 83EC 68 sub esp,68
00422C10 53 push ebx
00422C11 56 push esi ; PcShare.0067B539
00422C12 57 push edi
00422C13 8965 E8 mov dword ptr ss:[ebp-18],esp
00422C16 33DB xor ebx,ebx
00422C18 895D FC mov dword ptr ss:[ebp-4],ebx
00422C1B 6A 02 push 2
00422C1D FF15 4C0D4800 call dword ptr ds:[480D4C] ; msvcrt.__set_app_type
00422C23 59 pop ecx ; PcShare.00422D5A
00422C24 830D 34EA4900 FF or dword ptr ds:[49EA34],FFFFFFFF
被偷了OEP。
拿一个VC++的程序来参考下:
00401F10 D> 55 push ebp
00401F11 8BEC mov ebp,esp
00401F13 6A FF push -1
00401F15 68 E8394000 push 4039E8
00401F1A 68 96204000 push 402096
00401F1F 64:A1 00000000 mov eax,dword ptr fs:[0]
00401F25 50 push eax
00401F26 64:8925 00000000 mov dword ptr fs:[0],esp
00401F2D 83EC 68 sub esp,68
00401F30 53 push ebx
00401F31 56 push esi
00401F32 57 push edi ; ntdll.7C930738
00401F33 8965 E8 mov dword ptr ss:[ebp-18],esp
00401F36 33DB xor ebx,ebx
00401F38 895D FC mov dword ptr ss:[ebp-4],ebx
00401F3B 6A 02 push 2
00401F3D FF15 4C334000 call dword ptr ds:[40334C] ; msvcrt.__set_app_type
00401F43 59 pop ecx ; kernel32.7C816FD7
00401F44 830D 6C514000 FF or dword ptr ds:[40516C],FFFFFFFF
00401F4B 830D 70514000 FF or dword ptr ds:[405170],FFFFFFFF
00401F52 FF15 48334000 call dword ptr ds:[403348] ; msvcrt.__p__fmode
为了防止代码混淆,点分析代码,向上看 :
00422BEA . C3 retn
00422BEB > E9 70010000 jmp 00422D60 ; jmp to msvcrt.terminate
00422BF0 96 db 96
00422BF1 85 db 85
00422BF2 CB db CB
00422BF3 1B db 1B
00422BF4 1D db 1D
00422BF5 . A6 cmps byte ptr ds:[esi],byte ptr es:[e>
00422BF6 . AD lods dword ptr ds:[esi]
00422BF7 . 9B wait
00422BF8 . DDD0 fst st
00422BFA . A9 7B8C7D46 test eax,467D8C7B
00422BFF . 2AF8 sub bh,al
00422C01 . 4C dec esp
00422C02 . 014E 2B add dword ptr ds:[esi+2B],ecx
00422C05 . 50 push eax
00422C06 . 64:8925 00000000 mov dword ptr fs:[0],esp
00422C0D . 83EC 68 sub esp,68
00422C10 . 53 push ebx
00422C11 . 56 push esi ; PcShare.0067B539
00422C12 . 57 push edi
00422C13 . 8965 E8 mov dword ptr ss:[ebp-18],esp
00422C16 . 33DB xor ebx,ebx
00422C18 . 895D FC mov dword ptr ss:[ebp-4],ebx
00422C1B . 6A 02 push 2
00422C1D . FF15 4C0D4800 call dword ptr ds:[480D4C] ; msvcrt.__set_app_type
确定OEP:00422BF0
并补上OEP:
00422BF0 55 push ebp
00422BF1 8BEC mov ebp,esp
00422BF3 6A FF push -1
00422BF5 68 E8394000 push 4039E8-------------------------①
00422BFA 68 96204000 push 402096-------------------------②
00422BFF 64:A1 00000000 mov eax,dword ptr fs:[0]
00422C05 . 50 push eax
00422C06 . 64:8925 00000000 mov dword ptr fs:[0],esp
00422C0D . 83EC 68 sub esp,68
00422C10 . 53 push ebx
00422C11 . 56 push esi ; PcShare.0067B539
00422C12 . 57 push edi
00422C13 . 8965 E8 mov dword ptr ss:[ebp-18],esp
00422C16 . 33DB xor ebx,ebx
00422C18 . 895D FC mov dword ptr ss:[ebp-4],ebx
00422C1B . 6A 02 push 2
其中①和②处的数据可以看考堆栈里的数据
在堆栈里找到:
0012FF7C 00000212
0012FF80 00422C05 PcShare.00422C05
0012FF84 00422D5A jmp to msvcrt._except_handler3----------------------------③
0012FF88 004873E8 PcShare.004873E8------------------------------------------④
0012FF8C FFFFFFFF
0012FF90 79ED1599
0012FF94 5300CF5B
0012FF98 006CB800 PcShare.006CB800
0012FF9C 0012FFE0
0012FFA0 006BF644 PcShare.006BF644
0012FFA4 7C930738 ntdll.7C930738
0012FFA8 FFFFFFFF
0012FFAC 0012FFF0
0012FFB0 0012FFC4
0012FFB4 7FFDC000
0012FFB8 0012FFC4
0012FFBC 0012FFB0
0012FFC0 745438A6
0012FFC4 7C816FD7 RETURN to kernel32.7C816FD7
0012FFC8 7C930738 ntdll.7C930738
0012FFCC FFFFFFFF
0012FFD0 7FFDC000
0012FFD4 8054BB38
0012FFD8 0012FFC8
0012FFDC FEFE6D78
0012FFE0 FFFFFFFF End of SEH chain
0012FFE4 7C839AA8 SE handler
0012FFE8 7C816FE0 kernel32.7C816FE0
0012FFEC 00000000
0012FFF0 00000000
0012FFF4 00000000
0012FFF8 00556014 offset PcShare.<ModuleEntryPoint>
0012FFFC 00000000
④处的数据就是①,③处的数据就是②
补好OEP后 把EIP指针改到OEP处 用LordPE_fix.EXE脱壳
打开ImportREC 填上OEP后自动查找IAT,获取函数输入表 如果有无效的就剪切掉。
到此脱壳完成,
PEID 查壳:Microsoft Visual C++ 6.0 脱壳后3.85 MB
运行程序,程序有时候提示操作系统错误,原因我不是很清楚,用OD载入 F9运行,
找到出错的地方 修改下跳转就可以了,不过后来没修改的也可以运行了。
【详细过程】
今天拿到PcShare远程控制会员版本20070826,看看说明
一、加了插默认浏览器的功能
二、重新修改了文件下载,一目了然,肉机不上线也可以管理。
三、加了窗口管理的功能、
四、加了群发消息的功能
五、加了强制肉机访问网页的功能
六、增加代理(不完善测试阶段)
七、增加了记录系统登录密码功能
看着看着 就想破解,说干就干,不管是不是菜鸟,还是先查壳把,
用PEID查壳:
Themida/WinLicense V1.8.2.0 + -> Oreans Technologies * Sign.By.fly *
如果你的查不到,可以下载最新的特征库
由于是Themida壳,1.9版本的后反OD的插件,只能用工具隐藏,PEID分辨不是很好,所以干脆就用HideToolz.exe 把OD隐藏起来
在HideToolz.exe里添加上你的OD的目录,在隐藏选项里选上:
Hide process
Protect process
Hide windows
Protect form windows
Anti-anti debug
Auto Start
设置好后打开OD,
1、设置OllyDBG忽略所有异常选项。
2、用HideOD插件:
勾选Auto Run HideOD、HideNtdebugBit。
勾选ZwQueryInformationProcess-->method2。
OD载入后,到这里:
00556014 P> B8 00000000 mov eax,0
00556019 60 pushad
0055601A 0BC0 or eax,eax
0055601C 74 68 je short 00556086 ; PcShare.00556086
0055601E E8 00000000 call 00556023 ; PcShare.00556023
00556023 58 pop eax ; kernel32.7C816FD7
00556024 05 53000000 add eax,53
00556029 8038 E9 cmp byte ptr ds:[eax],0E9
0055602C 75 13 jnz short 00556041 ; PcShare.00556041
0055602E 61 popad
0055602F EB 45 jmp short 00556076 ; PcShare.00556076
00556031 DB2D 37605500 fld tbyte ptr ds:[556037]
00556037 FFFF ??? ; Unknown command
00556039 FFFF ??? ; Unknown command
0055603B FFFF ??? ; Unknown command
0055603D FFFF ??? ; Unknown command
0055603F 3D 40E80000 cmp eax,0E840
00556044 0000 add byte ptr ds:[eax],al
00556046 58 pop eax ; kernel32.7C816FD7
00556047 25 00F0FFFF and eax,FFFFF000
0055604C 33FF xor edi,edi ; ntdll.7C930738
接着运行okdodo大侠的Themida脚本后:
运行完成后有提示:
脚本执行完毕,请注意OEP是否被偷代码!
点确定,来到这里:
00422C05 50 push eax
00422C06 64:8925 00000000 mov dword ptr fs:[0],esp
00422C0D 83EC 68 sub esp,68
00422C10 53 push ebx
00422C11 56 push esi ; PcShare.0067B539
00422C12 57 push edi
00422C13 8965 E8 mov dword ptr ss:[ebp-18],esp
00422C16 33DB xor ebx,ebx
00422C18 895D FC mov dword ptr ss:[ebp-4],ebx
00422C1B 6A 02 push 2
00422C1D FF15 4C0D4800 call dword ptr ds:[480D4C] ; msvcrt.__set_app_type
00422C23 59 pop ecx ; PcShare.00422D5A
00422C24 830D 34EA4900 FF or dword ptr ds:[49EA34],FFFFFFFF
被偷了OEP。
拿一个VC++的程序来参考下:
00401F10 D> 55 push ebp
00401F11 8BEC mov ebp,esp
00401F13 6A FF push -1
00401F15 68 E8394000 push 4039E8
00401F1A 68 96204000 push 402096
00401F1F 64:A1 00000000 mov eax,dword ptr fs:[0]
00401F25 50 push eax
00401F26 64:8925 00000000 mov dword ptr fs:[0],esp
00401F2D 83EC 68 sub esp,68
00401F30 53 push ebx
00401F31 56 push esi
00401F32 57 push edi ; ntdll.7C930738
00401F33 8965 E8 mov dword ptr ss:[ebp-18],esp
00401F36 33DB xor ebx,ebx
00401F38 895D FC mov dword ptr ss:[ebp-4],ebx
00401F3B 6A 02 push 2
00401F3D FF15 4C334000 call dword ptr ds:[40334C] ; msvcrt.__set_app_type
00401F43 59 pop ecx ; kernel32.7C816FD7
00401F44 830D 6C514000 FF or dword ptr ds:[40516C],FFFFFFFF
00401F4B 830D 70514000 FF or dword ptr ds:[405170],FFFFFFFF
00401F52 FF15 48334000 call dword ptr ds:[403348] ; msvcrt.__p__fmode
为了防止代码混淆,点分析代码,向上看 :
00422BEA . C3 retn
00422BEB > E9 70010000 jmp 00422D60 ; jmp to msvcrt.terminate
00422BF0 96 db 96
00422BF1 85 db 85
00422BF2 CB db CB
00422BF3 1B db 1B
00422BF4 1D db 1D
00422BF5 . A6 cmps byte ptr ds:[esi],byte ptr es:[e>
00422BF6 . AD lods dword ptr ds:[esi]
00422BF7 . 9B wait
00422BF8 . DDD0 fst st
00422BFA . A9 7B8C7D46 test eax,467D8C7B
00422BFF . 2AF8 sub bh,al
00422C01 . 4C dec esp
00422C02 . 014E 2B add dword ptr ds:[esi+2B],ecx
00422C05 . 50 push eax
00422C06 . 64:8925 00000000 mov dword ptr fs:[0],esp
00422C0D . 83EC 68 sub esp,68
00422C10 . 53 push ebx
00422C11 . 56 push esi ; PcShare.0067B539
00422C12 . 57 push edi
00422C13 . 8965 E8 mov dword ptr ss:[ebp-18],esp
00422C16 . 33DB xor ebx,ebx
00422C18 . 895D FC mov dword ptr ss:[ebp-4],ebx
00422C1B . 6A 02 push 2
00422C1D . FF15 4C0D4800 call dword ptr ds:[480D4C] ; msvcrt.__set_app_type
确定OEP:00422BF0
并补上OEP:
00422BF0 55 push ebp
00422BF1 8BEC mov ebp,esp
00422BF3 6A FF push -1
00422BF5 68 E8394000 push 4039E8-------------------------①
00422BFA 68 96204000 push 402096-------------------------②
00422BFF 64:A1 00000000 mov eax,dword ptr fs:[0]
00422C05 . 50 push eax
00422C06 . 64:8925 00000000 mov dword ptr fs:[0],esp
00422C0D . 83EC 68 sub esp,68
00422C10 . 53 push ebx
00422C11 . 56 push esi ; PcShare.0067B539
00422C12 . 57 push edi
00422C13 . 8965 E8 mov dword ptr ss:[ebp-18],esp
00422C16 . 33DB xor ebx,ebx
00422C18 . 895D FC mov dword ptr ss:[ebp-4],ebx
00422C1B . 6A 02 push 2
其中①和②处的数据可以看考堆栈里的数据
在堆栈里找到:
0012FF7C 00000212
0012FF80 00422C05 PcShare.00422C05
0012FF84 00422D5A jmp to msvcrt._except_handler3----------------------------③
0012FF88 004873E8 PcShare.004873E8------------------------------------------④
0012FF8C FFFFFFFF
0012FF90 79ED1599
0012FF94 5300CF5B
0012FF98 006CB800 PcShare.006CB800
0012FF9C 0012FFE0
0012FFA0 006BF644 PcShare.006BF644
0012FFA4 7C930738 ntdll.7C930738
0012FFA8 FFFFFFFF
0012FFAC 0012FFF0
0012FFB0 0012FFC4
0012FFB4 7FFDC000
0012FFB8 0012FFC4
0012FFBC 0012FFB0
0012FFC0 745438A6
0012FFC4 7C816FD7 RETURN to kernel32.7C816FD7
0012FFC8 7C930738 ntdll.7C930738
0012FFCC FFFFFFFF
0012FFD0 7FFDC000
0012FFD4 8054BB38
0012FFD8 0012FFC8
0012FFDC FEFE6D78
0012FFE0 FFFFFFFF End of SEH chain
0012FFE4 7C839AA8 SE handler
0012FFE8 7C816FE0 kernel32.7C816FE0
0012FFEC 00000000
0012FFF0 00000000
0012FFF4 00000000
0012FFF8 00556014 offset PcShare.<ModuleEntryPoint>
0012FFFC 00000000
④处的数据就是①,③处的数据就是②
补好OEP后 把EIP指针改到OEP处 用LordPE_fix.EXE脱壳
打开ImportREC 填上OEP后自动查找IAT,获取函数输入表 如果有无效的就剪切掉。
到此脱壳完成,
PEID 查壳:Microsoft Visual C++ 6.0 脱壳后3.85 MB
运行程序,程序有时候提示操作系统错误,原因我不是很清楚,用OD载入 F9运行,
找到出错的地方 修改下跳转就可以了,不过后来没修改的也可以运行了。