首页
社区
课程
招聘
[旧帖] [求助]标题栏加密修改 0.00雪花
2007-11-14 13:36 6048

[旧帖] [求助]标题栏加密修改 0.00雪花

2007-11-14 13:36
6048
程序为一娱乐免费软件,无壳!空了拿来试练修改标题,用资源工具修改了所有的有关信息但是就是标题没办法更改!

后OD载入调试
下断 bp SetWindowTextA  F9两次后看到标题栏信息!
005610D8  /$  55            push    ebp
005610D9  |.  8BEC          mov     ebp, esp
005610DB  |.  81C4 F8FEFFFF add     esp, -108
005610E1  |.  8955 F8       mov     dword ptr [ebp-8], edx
005610E4  |.  8945 FC       mov     dword ptr [ebp-4], eax
005610E7  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
005610EA  |.  80B8 A4000000>cmp     byte ptr [eax+A4], 0
005610F1  |.  74 2A         je      short 0056111D
005610F3  |.  68 00010000   push    100                              ; /Count = 100 (256.)
005610F8  |.  8D85 F8FEFFFF lea     eax, dword ptr [ebp-108]         ; |
005610FE  |.  50            push    eax                              ; |Buffer
005610FF  |.  8B45 FC       mov     eax, dword ptr [ebp-4]           ; |
00561102  |.  8B40 30       mov     eax, dword ptr [eax+30]          ; |
00561105  |.  50            push    eax                              ; |hWnd
00561106  |.  E8 D1670700   call    <jmp.&USER32.GetWindowTextA>     ; \GetWindowTextA
0056110B  |.  8BC8          mov     ecx, eax
0056110D  |.  8D95 F8FEFFFF lea     edx, dword ptr [ebp-108]
00561113  |.  8B45 F8       mov     eax, dword ptr [ebp-8]
00561116  |.  E8 3120FBFF   call    0051314C
0056111B  |.  EB 11         jmp     short 0056112E
0056111D  |>  8B45 F8       mov     eax, dword ptr [ebp-8]
00561120  |.  8B55 FC       mov     edx, dword ptr [ebp-4]
00561123  |.  8B92 8C000000 mov     edx, dword ptr [edx+8C]
00561129  |.  E8 821FFBFF   call    005130B0
0056112E  |>  8BE5          mov     esp, ebp
00561130  |.  5D            pop     ebp
00561131  \.  C3            retn
00561132      90            nop
00561133      90            nop
00561134  /$  55            push    ebp
00561135  |.  8BEC          mov     ebp, esp
00561137  |.  83C4 F4       add     esp, -0C
0056113A  |.  33C9          xor     ecx, ecx
0056113C  |.  894D F4       mov     dword ptr [ebp-C], ecx
0056113F  |.  8955 F8       mov     dword ptr [ebp-8], edx
00561142  |.  8945 FC       mov     dword ptr [ebp-4], eax
00561145  |.  33C0          xor     eax, eax
00561147  |.  55            push    ebp
00561148  |.  68 CD115600   push    005611CD
0056114D  |.  64:FF30       push    dword ptr fs:[eax]
00561150  |.  64:8920       mov     dword ptr fs:[eax], esp
00561153  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
00561156  |.  80B8 A4000000>cmp     byte ptr [eax+A4], 0
0056115D  |.  74 48         je      short 005611A7
0056115F  |.  8D55 F4       lea     edx, dword ptr [ebp-C]
00561162  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
00561165  |.  E8 6EFFFFFF   call    005610D8
0056116A  |.  8B45 F4       mov     eax, dword ptr [ebp-C]
0056116D  |.  8B55 F8       mov     edx, dword ptr [ebp-8]
00561170  |.  E8 E322FBFF   call    00513458
00561175  |.  75 0C         jnz     short 00561183
00561177  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
0056117A  |.  83B8 8C000000>cmp     dword ptr [eax+8C], 0
00561181  |.  74 34         je      short 005611B7
00561183  |>  8B45 F8       mov     eax, dword ptr [ebp-8]
00561186  |.  E8 8123FBFF   call    0051350C
0056118B  |.  50            push    eax                              ; /Text
0056118C  |.  8B45 FC       mov     eax, dword ptr [ebp-4]           ; |
0056118F  |.  8B40 30       mov     eax, dword ptr [eax+30]          ; |
00561192  |.  50            push    eax                              ; |hWnd
00561193  |.  E8 1E690700   call    <jmp.&USER32.SetWindowTextA>     ; \SetWindowTextA
00561198  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
0056119B  |.  05 8C000000   add     eax, 8C
005611A0  |.  E8 B71EFBFF   call    0051305C
005611A5  |.  EB 10         jmp     short 005611B7
005611A7  |>  8B45 FC       mov     eax, dword ptr [ebp-4]
005611AA  |.  05 8C000000   add     eax, 8C
005611AF  |.  8B55 F8       mov     edx, dword ptr [ebp-8]
005611B2  |.  E8 F91EFBFF   call    005130B0
005611B7  |>  33C0          xor     eax, eax
005611B9  |.  5A            pop     edx
005611BA  |.  59            pop     ecx
005611BB  |.  59            pop     ecx
005611BC  |.  64:8910       mov     dword ptr fs:[eax], edx
005611BF  |.  68 D4115600   push    005611D4
005611C4  |>  8D45 F4       lea     eax, dword ptr [ebp-C]
005611C7  |.  E8 901EFBFF   call    0051305C
005611CC  \.  C3            retn
005611CD   .^ E9 B218FBFF   jmp     00512A84
005611D2   .^ EB F0         jmp     short 005611C4
005611D4   .  8BE5          mov     esp, ebp
005611D6   .  5D            pop     ebp
005611D7   .  C3            retn
椎栈信息得
0012FF00   00561198  /CALL 到 SetWindowTextA 来自 EntClien.00561193
0012FF04   002F0220  |hWnd = 002F0220 ('QZEntCli_051111',class='TApplication')
0012FF08   01022990  \Text = "强者网",B0,"捎槔制",BD,"?,A8,""

ALT+F9 返回修改分析
程序不正常!
想请高手指点象这样的问题改怎么处理,能制作内存补丁之类的吗?
有经验的高人指点,以供菜鸟学习

[培训]科锐软件逆向50期预科班报名即将截止,速来!!! 50期正式班报名火爆招生中!!!

上传的附件:
收藏
免费 0
打赏
分享
最新回复 (10)
雪    币: 184
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
樱花散落 2007-11-14 15:06
2
0
解压不了,没办法弄,你试下十六进制编辑器修改下
雪    币: 218
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
limin520 2007-11-14 15:10
3
0
谢谢仁兄,UE测试无效!标题加密后要找出来 好比大海捞针
雪    币: 184
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
樱花散落 2007-11-14 15:27
4
0
呵呵。是不是UNCODE的格式啊//记得以前汉化修改程序是遇到过。好象是用十六进制能修改的。
你抓图看下是什么
雪    币: 218
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
limin520 2007-11-14 18:53
5
0
OK  ,图片已经上传,按你的思路
我来处理下!先谢谢了
雪    币: 218
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
limin520 2007-11-15 11:31
6
0
问题棘手 不好解决 想用其他软件达到效果!
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xiaolz 2007-11-15 15:55
7
0
00401EE9   >mov dword ptr ss:[ebp-30],1              ; 已加密字节的偏移量初始为1
00401EF0   >xor eax,eax
00401EF2   >mov al,byte ptr ss:[ebp-29]
00401EF5   >inc eax
00401EF6   >push eax
00401EF7   >call EntClien.005B43F4
00401EFC   >pop ecx
00401EFD   >mov dword ptr ss:[ebp-34],eax
00401F00   >mov byte ptr ss:[ebp-35],0               ; 已处理字节数初始0
00401F04   >mov dl,byte ptr ss:[ebp-35]
00401F07   >cmp dl,byte ptr ss:[ebp-29]
00401F0A   >jnb EntClien.00401FA9

;----------- 开始处理
00401F10   >inc dword ptr ss:[ebp-30]                ; 当前要处理的已加密字节的偏移量加1
00401F13   >mov ecx,dword ptr ss:[ebp+C]             ; 取出ecx 为加密串存放地址
00401F16   >mov eax,dword ptr ss:[ebp-30]            ; 取出加密字节偏移量到eax
00401F19   >mov dl,byte ptr ds:[ecx+eax]             ; [加密串地址+偏移] 取出一字节
00401F1C   >mov byte ptr ss:[ebp-36],dl              ; 存到局部变量中
00401F1F   >xor ecx,ecx
00401F21   >mov cl,byte ptr ss:[ebp-35]              ; 已处理字节数
00401F24   >xor eax,eax
00401F26   >mov al,byte ptr ss:[ebp-29]              ; 取出要处理的字节数到 al
00401F29   >sar eax,1                                ; 除2
00401F2B   >jns short EntClien.00401F30              ; 符号位为"0"时转移? 高手解释下
00401F2D   >adc eax,0                                ; 加0啥意思
00401F30   >cmp ecx,eax                              ; 已处理字节 >= (要处理总字节数/2)
00401F32   >jge short EntClien.00401F58              ; 大于等于转移
00401F34   >mov dl,byte ptr ss:[ebp-36]              ; 取出加密的字节
00401F37   >shl edx,4                                ; 左移4位,低4位现在为高4位
00401F3A   >mov byte ptr ss:[ebp-37],dl
00401F3D   >xor ecx,ecx
00401F3F   >mov cl,byte ptr ss:[ebp-36]              ; 取出加密的字节
00401F42   >sar ecx,4                                ; 字节右移4位,原高4位移至低4位
00401F45   >or byte ptr ss:[ebp-37],cl               ; or 运算后,实现加密字节的高4位、低4位进行交换
00401F48   >xor eax,eax
00401F4A   >mov al,byte ptr ss:[ebp-35]              ; 存放下一个已解密出来的字节的偏移量
00401F4D   >mov edx,dword ptr ss:[ebp-34]            ; 解密后的串地址存入edx
00401F50   >mov cl,byte ptr ss:[ebp-37]              ; 取出解密后的字节
00401F53   >mov byte ptr ds:[edx+eax],cl
00401F56   >jmp short EntClien.00401F97
00401F58   >mov eax,dword ptr ss:[ebp-30]            ; 下一个加密字节偏移
00401F5B   >and eax,80000003                         ; 是否4的倍数???
00401F60   >jns short EntClien.00401F67
00401F62   >dec eax
00401F63   >or eax,FFFFFFFC
00401F66   >inc eax
00401F67   >test eax,eax                             ; 如果是倍数eax=0
00401F69   >je short EntClien.00401F82               ; 等于0跳
00401F6B   >xor edx,edx                              ; --->当前偏移不是4的倍数入口
00401F6D   >mov dl,byte ptr ss:[ebp-35]              ; 存放已解密出来的字节的偏移量
00401F70   >mov ecx,dword ptr ss:[ebp-34]            ; 解密后的串地址
00401F73   >mov eax,dword ptr ss:[ebp+C]             ; 加密串的地址
00401F76   >mov ebx,dword ptr ss:[ebp-30]            ; 当前要处理的已加密字节的偏移量
00401F79   >mov al,byte ptr ds:[eax+ebx+2]           ; 加密串地址+当前偏移+2
00401F7D   >mov byte ptr ds:[ecx+edx],al             ; 直接把取出的字节放入解密后的地址
00401F80   >jmp short EntClien.00401F97
00401F82   >xor edx,edx                              ; --->当前偏移为4的倍数入口
00401F84   >mov dl,byte ptr ss:[ebp-35]
00401F87   >mov ecx,dword ptr ss:[ebp-34]
00401F8A   >mov eax,dword ptr ss:[ebp+C]
00401F8D   >mov ebx,dword ptr ss:[ebp-30]
00401F90   >mov al,byte ptr ds:[eax+ebx-2]           ; 加密串地址+当前偏移-2
00401F94   >mov byte ptr ds:[ecx+edx],al
00401F97   >inc dword ptr ss:[ebp-30]                ; 下一个要处理的已加密字节的偏移量加1(在前面代码还会再加1)
00401F9A   >inc byte ptr ss:[ebp-35]                 ; 已处理字节数加1
00401F9D   >mov dl,byte ptr ss:[ebp-35]
00401FA0   >cmp dl,byte ptr ss:[ebp-29]              ; [ebp-29]存放着要处理的字节总数
00401FA3  ^>jb EntClien.00401F10                     ; 小于就跳转

有些注释可能不准.
找到加密过的串
005DA17E  10 00 7C DC FB 54 5D 73 FD 31 DC 33 8F 00 0B 40  .|茺T]s??? @
005DA18E  9C 92 E9 00 D3 58 D6 58 C0 10 BD 02 C6 23 A8 20  湌?覺諼????
005DA19E  CC 00                                            ?M

005DA17E 的偏移0 (1个字节长)为已加密的字节长度(16进制的),这里为 10H 就是16个字节
正好等于 len("强者网吧娱乐平台")=16
加密字节偏移初始为1,取加密字节之前又inc,也就是从偏移2开始

strLen = 10H        ;byte ptr [005DA17E+0] 要处理的字节数
iDecNum = 0        ;已处理字节初始为0
pUnDec = 1        ;加密字节偏移初始为1

Loop:
inc pUnDec        ; 第1次=2
[005DA17E + pUnDec] 取出 7C
.if iDecNum < (StrLen/2)
        ;如果已处理字节数 < 总长度的一半
        ;把取出的字节的高低4位进行调换
        7C -> C7 [第1次] pUnDec=2
        FB -> BF [第2次] pUnDec=4
        5D -> D5 [第3次] pUnDec=6
        FD -> DF [第4次] pUnDec=8
        ...
        9C -> C9 [第8次] pUnDec=16
.else
        ; >= 一半
        ;mov eax,dword ptr ss:[ebp-30]
        ;and eax,80000003
        ;计算当前偏移是否是4的倍数??
        .if (pUnDec mod 4) <> 0
               
                ;[005DA17E + pUnDec + 2] 从偏移量再加2的位置直接取出
                ;直接放入已解密串地址
                D3   [第9次]  pUnDec=18
                C0   [第11次] pUnDec=22
                C6   [第13次] pUnDec=26
                CC   [第15次] pUnDec=30
        .else
                ;4的倍数
                ;[005DA17E + pUnDec - 2] 从偏移量再加2的位置直接取出
                ;直接放入已解密串地址
               
                E9   [第10次] pUnDec=20
                D6   [第12次] pUnDec=24
                BD   [第14次] pUnDec=28
                A8   [第16次] pUnDec=32
               
        .ednif
       
.endif
inc pUnDec        ;当前加密串偏移加1
inc iDecNum        ;已处理字节数加1
还没处理完 jmp Loop

用UE 打开 程序,可以找到 "10 00 7C DC FB 54 5D 73 FD 31"有3个地方
只要改第2 个地方就可以了。
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xiaolz 2007-11-15 16:11
8
0
也不用那么麻烦去研究这些。
直接用 SetWindowText 把它的窗口标题改了.更简单

.386
.model flat,stdcall
option casemap:none
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
.data
szOldWinText db '强者网吧娱乐平台',0
szNewWinText db '随便改改',0
szSetOK db 'OK',0
szFaile db '没找到窗口',0
.code
start:

invoke FindWindow,0,addr szOldWinText
.if eax
invoke SetWindowText,eax,addr szNewWinText
invoke MessageBox,0,addr szSetOK,0,MB_OK
.else
invoke MessageBox,0,addr szFaile,0,MB_OK
.endif

invoke ExitProcess,0

end start
雪    币: 218
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
limin520 2007-11-15 19:32
9
0
谢谢高手指点,学到不少!新手们大家一起努力学习吧!!
雪    币: 2831
活跃值: (1668)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
wofan[OCN] 21 2007-11-15 19:37
10
0
一个免费软件,连个标题都要改了它!不会是想标上自已的大名吧……
雪    币: 218
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
limin520 2007-11-20 18:48
11
0
空了拿来试练修改标题,没其他意思高手指点学到了很多!
游客
登录 | 注册 方可回帖
返回