-
-
[旧帖]
[原创]一次用od做加壳软件的纯运行态破解 (36计外挂破解)
0.00雪花
-
发表于:
2010-7-3 21:04
1721
-
[旧帖] [原创]一次用od做加壳软件的纯运行态破解 (36计外挂破解)
0.00雪花
目前36计是一个比较流行的游戏 有不少外挂 其 中的一个是 65不限时间的 最近看了一下这个程序加壳又反调试 直接破解没能成功 所以把一些心得发出来 希望高手能搞定壳 做更简单的破解
36计实际上现在已经取消了通讯过程中的加密,基本外挂很好做了 只要肯抓包研究 肯岀体力写代码
破解的方法:
开始测试了一下,和很多在线验证的软件一样,登陆检查向网站发送 |username|5位随机数| 加密的串
http://sn.9wsg.cn/s.asp?S=6A1C6DAED6CD47E3C8D9DF3F751A5DFD958194622D
返回
第一个不知道干嘛 后面是网址 版本
7CFC77A9905C72CC5B39736DA87B04CDA042CFB33C3B3CB948A758039D08|708983227C36A6EFCB28B05826FFA203F4|708983227C36A6EFCB28B05826FFA203F4|6BCF65332749683416B1445D55EB358DE31D2AF3F0|3928ECFD41681FE9||1.4.5.1
只要有返回就过登陆check
10个包后又请求一个U.asp 用第一个串做参数 返回用户名
用dns改到自己的服务器后可以绕过登陆检查 但练进游戏无个人信息 ,部分功能可用(查看国家等)
感觉是第一个返回参数和随机数不匹配,导致10个包后不向游戏发包了
随机数用来解密第一个串 第一个串是 区号+名字+名字+80cdce83
相同才会继续发包
由于程序不能打软件中断 只好用硬件中断,不断调试找到check的点,
新的破解, 本机伪装一个80的服务器,
在 发送包时返回值 , 断点 00662953
返回后 改写 服务器地址 断点 00662A41
这样 就只需要再跟踪另外2个 JNE 006625A3,0066305C
最后破解的思路是用ollydbg的scripts插件 在每个判断处打硬件断点,然后改寄存器值 改变程序判断,终于破解成功。
贴岀我的脚本
// sbaa crack 36ji.exe 2010.7.3
var a
var b
var c
bphws 006625A3 ,"x"
bphws 0066305C ,"x"
bphws 00662953 ,"x"
bphws 00662A41 ,"x"
run
check:
cmp eip,00662953
je change1
cmp eip,00662A41
je change3
change2:
mov !ZF,1
run
jmp check
change3:
mov c,"s60.36ji.uuzu.com"
mov a,esp
add a,40
mov b,[a]
mov
, c
add a,8
mov b,[a]
mov , c
run
jmp check
change1:
mov [edx],#22687474703A2F2F3132372E302E302E313A313037322F0000#
//log edx
//msg "ok"
run
jmp check
下面是附件用法
--------------------------------------------------------------------------------------------------
1. 运行 run_me.bat
在ollydbg 菜单 第4个plugin,找不到plugin的去ollydbg.ini里把
改成
Plugin path=.\
2. 菜单选plugin->ollyscripts->runscripts
选my_s
程序开始运行了
my_s.txt 里有个网址是游戏服务器网址,改掉可以上任何区,默认是60
输入你的帐号登陆,如果在60区应该ok
ps: 这个程序反debug,自己也是加壳改动程序马上就退出.只好在内存里打补丁了,ollydbg不能关.
找个隐藏桌面的工具 如 HideWizard_setup.zip把ollydbg隐藏掉,免得老跳出来
写的有些乱 希望在这边抛砖,初学破解,连这个exe什么东西加的壳都不知道 惭愧
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!