首页
社区
课程
招聘
[旧帖] [求助][求助][求助]刚学破解就遇到保密性非常强的变态软件 0.00雪花
发表于: 2007-8-24 18:48 4608

[旧帖] [求助][求助][求助]刚学破解就遇到保密性非常强的变态软件 0.00雪花

2007-8-24 18:48
4608
大家好,我是刚学会破解的菜鸟,最近我遇到了1个保密性很好的软件,我弄了几天都没找到

关键跳,在这里想请前辈们指导指导,谢谢:)
详细情况是这样的:
1。这个软件的壳用peid查不出来,我手动脱壳并简单修复后,可以运行,但是如果首先就去

注册,提示注册失败的时候,信息会变成乱码。必须要先存盘或者用了其他需要注册认可的

功能出现正常的“未注册”英文提示后,再去注册窗口输错码注册注册失败提示才是正常字

符!这个暂时不影响主要功能我也不知道错误原因,所以就没管。
2。我用w32dasm打开反编译后,在字符串信息里找不到注册失败那句英文提示,连成功注册

的提示也没发现。我想到在内存查看,就打开winhex,然后选择打开了虚拟内存,单独打开

了这个脱壳文件的内存段(这个脱壳程序在运行中并且已经注册失败1次)。我搜索字符串找

到了错误提示的位置,然后我就把这个脱壳程序的内存段全部复制写入了1个新文件中,我又

用w32dasm打开这个新文件进行反编译,然后找到了错误提示的代码位置,但是注意字符串信

息里仍然没有成功注册的英文句子。我顺着这个错误提示位置的代码往上查看,限于水平没

找到关键call 和关键跳,我用od载入脱壳后的文件(内存直接复制下来的新文件只能看不能

运行,运行要报错)然后通过在w32dasm上错误信息代码的偏移位置,在od里同样的偏移位置

找到了注册失败信息代码,我在这里设断点,然后运行这个程序,注册后被拦截在提示以前

,此时代码如下:
004428D0    813D 0C4E5200 1>cmp dword ptr ds:[524E0C],75BCD15
004428DA    56              push esi
004428DB    8B7424 08       mov esi,dword ptr ss:[esp+8]
004428DF    6A 00           push 0
004428E1    68 804F5200     push 新3.00524F80                ; ASCII "Info"
004428E6    75 07           jnz short 新3.004428EF
004428E8    68 904F5200     push 新3.00524F90       ; ASCII "The product is 

registered! "
004428ED    EB 05           jmp short 新3.004428F4
004428EF    68 584F5200     push 新3.00524F58       ; ASCII "the product is not 

registered!"
004428F4    56              push esi
004428F5    FF15 E4825000   call dword ptr ds:[<&USER32.MessageBoxA>]   ; 

USER32.MessageBoxA
004428FB    8D4424 08       lea eax,dword ptr ss:[esp+8]
004428FF    50              push eax
00442900    6A 00           push 0
00442902    56              push esi
00442903    68 B0284400     push 新3.004428B0
00442908    6A 00           push 0
0044290A    6A 00           push 0
0044290C    FF15 D4815000   call dword ptr ds:[<&kernel32.CreateThread>>; 

kernel32.CreateThread

它是判断以后选择性的把提示内容压栈,和网上找到的破解例子都不同,后面又都是用同1个

call来完成显示信息。而且在我贴上的这段代码再往上就是数个int 3 然后是1个ret接着上面代码。

3。我找不到关键跳,就又想了内存查找的方法,在出现注册失败提示的时候不点确定,用

winhex打开这个脱壳文件的整个内存段,然后查找我输的错误注册码,但是只能找到我输的

,找不到正确的注册码,(我知道正确注册码是纯数字组合)我想可能它用的不是明码比较

,也许是1位位的比较或者是16进制数的比较。
4。这个软件我后来用pe-scan查出是UPX的壳但提示原入口点不可用,我用了很多upx脱壳软

件都脱不掉,提示压缩数据冲突!我上面自己手动脱壳是用的esp定律。在popad后面不是接

的jmp大跳。代码是这样的:

0070370A    61              popad
0070370B    8D4424 80       lea eax,dword ptr ss:[esp-80]
0070370F    6A 00           push 0
00703711    39C4            cmp esp,eax
00703713  ^ 75 FA           jnz short 新.0070370F
00703715    83EC 80         sub esp,-80
00703718  - E9 2CD9CFFF     jmp 新.00401049
0070371D    0000            add byte ptr ds:[eax],al
0070371F    0000            add byte ptr ds:[eax],al

我f8运行到jmp大跳的位置跳了过去出现下面代码:
00401049    6A 60           push 60
0040104B    68 20845000     push 新.00508420
00401050    E8 B7100000     call 新.0040210C
00401055    BF 94000000     mov edi,94

我想这个应该是入口点了,就在这里脱的壳。

上面就是具体的情况,希望各位大哥大姐能指导我1下,谢谢。我权限不够上传不了原代码。。。

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 184
活跃值: (108)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
2
看样子你遇见了难题,但有几点你没有完整的表达出来。

压缩用的是UPX 2.XX版本,ESP定律很容易搞定。乱码脱壳后将资源整理一下就好了。

一般拦截弹出式提示信息,你可以采用几种方式来拦截。
按照你提示的,这个注册信息可能是动态生成的,可以用OD内存搜索后,用内存访问断点。
也可以在信息窗弹出后,中断OD,然后ALT-F9返回用户领空。
拦截窗口的方式很多,可以在看学搜索。
2007-8-24 21:33
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢hnhuqiong老师的指点,不过我想老师能不能具体说下如何整理这个脱壳后的文件,我在网上只看到了关于修复附加数据的动画介绍,但那个操作对这个文件起不了修复的作用,还有1个奇怪的地方,这个脱壳后文件我如果用pe修复工具重建pe后,它的文件大小会缩小1半,还是可以运行。这个文件我用winhex看过,的确发现了UPX字符前面有 2。02的标示,可是我下载网上比2.02高版本的upx 用-d这个参数都没用。
2007-8-24 22:11
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我在内存找到这个 错误信息的地址,然后下断点,拦在1个调用模块里,alt+f9后返回的地方还是在调用模块。。。。继续再alt+f9程序就死了。
2007-8-25 10:12
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
怎么没老师愿意指点呢。。。。
2007-8-26 18:19
0
游客
登录 | 注册 方可回帖
返回