首页
社区
课程
招聘
[原创]易语言变态反调试自校验多重验证
发表于: 2007-4-7 17:10 27934

[原创]易语言变态反调试自校验多重验证

2007-4-7 17:10
27934
【文章标题】: 易语言变态反调试自校验多重验证
【文章作者】: BoXer[ICY]
【作者邮箱】: [email]scship@163.com[/email]
【作者主页】: http://boxer.yo2.cn
【作者QQ号】: **********
【软件名称】: 艺*********转换系统 V2007
【软件大小】:
【下载地址】: 自己搜索下载
【加壳方式】: 没有
【保护方式】: 反调试+自校验
【编写语言】: 易语言
【使用工具】: 看雪主页的od
【操作平台】: 盗版中的正版xp sp2
【软件介绍】: 一款用来实现批里*******进行批量相互智能转换的工具
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  一位看雪的朋友发邮件叫我看看这个软件,因为他说易语言,我觉得应该比较容易吧,然后一试。。。
  
  才知道原来容易的话人家就不会找别人帮忙了。。。
  
  这个软件非常的恐怖。。。像我们这样的菜鸟真的没遇见这样的情况
  
  过程如下:
  
  ===================================================================================================
  1。信息收集
  
  查壳,是易语言写的,运行软件,标题有个“试用版”提示,点击 帮助-注册,注册框上面也有“试用版”字符
  
  有个硬件码,随便输入用户名和注册码,提示重启验证。
  
  
  ===================================================================================================
  
  2。恐怖的反调试和自校验
  
  习惯性的od载入,F9运行。。。od一下子就不见了!
  
  以为没有设置隐藏od,然后设置一次再来F9,一样的下场,od给秒杀。。。
  
  换各种版本的od,看雪版,fly版,汉化第三版,shooo的野猪版(还有些私人版本)。。。。等等等等
  
  这些od都是一样下场--给秒杀。
  
  换个思路,直接改关键的注册跳转试试。
  
  由于这个软件是非独立编译,我们要找到真正的易语言程序的oep,可以用脚本,也可以自己手动跟
  
  (我以前总结的搜索“ FC DB E3 ”在这个软件不能用的)
  
  到了下面的oep:
  
  0042C59F    FC              cld                                      ; (initial cpu selection)
  0042C5A0    DBE3            finit
  
  我们就可以搜索字符串,找到下面这个字符串(而最上面那几项表明是MD5字样,可能是MD5校验了):
  
  Ultra String Reference, 条目 11
   Address=0041A7AD
   Disassembly=push    艺匠、知.004036AA
   Text String=注册窗口(正式版)
  
  双击来到这里:
  
  0041A7A1    837D F8 01      cmp     dword ptr ss:[ebp-8], 1              
  0041A7A5    0F85 76000000   jnz     艺匠、知.0041A821                    ;nop掉
  0041A7AB    6A 00           push    0
  0041A7AD    68 AA364000     push    艺匠、知.004036AA                    ; 注册窗口(正式版)//停在这里
  0041A7B2    6A FF           push    -1
  0041A7B4    6A 08           push    8
  0041A7B6    68 98020106     push    6010298
  0041A7BB    68 99020152     push    52010299
  0041A7C0    E8 501E0100     call    艺匠、知.0042C615
  
  
  
  往上看找到一个跳转:0041A7A5    0F85 76000000   jnz     艺匠、知.0041A821
  nop掉保存。
  
  
  双击运行保存修改的,结果。。。没反应。估计是程序做了校验了。
  
  (大家不妨用记事本打开同目录下的dp1.fne文件,看看最下面的中文写什么,-_-! )
  
  
  ===================================================================================================
  
  3。菜鸟遇到难题时候怎么办?
  
  在实在没办法的情况下,我看到了看雪一个帖子说,看雪精华是破解的MSDN,菜鸟们应该人手一份
  
  里面几乎包含了全部菜鸟遇到的难题的解决方法或者思路。
  
  所以,我还是拿出了下载已久的看雪精华,终于在精华7那里找到了相关的精华
  
  weiyi75[Dfcg][D.4s]大侠(这位大侠就是二哥吧?!)的文章:
  
  《易语言幻真随心听 3.83反调试+破解分析》
  《易语言Windows 系统风云 V4.5 两层简单壳反反脱壳+(一锅端+1)破解》
  
  这2篇文章起了启发作用啊!!!
  
  后来卡卡也告诉我去自校验反调试的方法:
  
  载入主程序,下 bp ExitProcess 断点,F9运行,断了下来,查看堆栈如下:
  
  0012FE20   100298AD  /CALL 到 ExitProcess 来自 krnln.100298A7
  0012FE24   00000000  \ExitCode = 0
  0012FE28  /0012FE54
  0012FE2C  |0042ABB0  返回到 艺匠、知.0042ABB0 来自 艺匠、知.0042C5DF
  
  我们跟ctrl+G跟到 0042C5DF ,发现一堆跳转,应该是去调用验证是否存在调试器的
  
  我们把下面这句(就是第一个跳转):
  
  0042C5DF  - FF25 5E874100   jmp     near dword ptr ds:[41875E]       ; krnln.10029892
  
  改为 retn ,然后保存为1.exe
  
  再打开文件,主程序出现了!这时候自校验已经除去了!
  
  OD载入1.exe,F9,也能运行了!不过有错误提示!
  
  第一个提示是“不知如何回避位于地址00404090的命令”,我们Ctrl+G去到00404090
  
  直接把它nop掉,保存为2.exe。
  
  od载入2.exe,F9运行,又有一个错误提示:“不知如何回避位于地址00404214的命令”
  
  我们Ctrl+G去到00404214,同样把它nop掉保存为3.exe
  
  这时候od载入3.exe,F9后终于可以正常运行了。退出OD双击3.exe,程序也能正常运行。
  
  
  ===================================================================================================
  
  4。搞定注册验证
  
  od载入3.exe,先去到易语言的oep
  
  0042C59F    FC              cld
  0042C5A0    DBE3            finit
  
  然后下 bp RegOpenKeyExA
  
  (菜鸟问为什么会是这个函数?这个是试出来的,试几个注册表的函数就有了,再不行就用万能断点工具)
  
  F9,停了下来,然后几次F9,注意堆栈,发现出现了有关注册的信息后就停止F9了
  
  比如出现下面信息就可以停下来:
  
  0012FBC8   10061430  /CALL 到 RegOpenKeyExA 来自 krnln.1006142A
  0012FBCC   80000001  |hKey = HKEY_CURRENT_USER
  0012FBD0   009C3FE0  |Subkey = "SOFTWARE\foxzf"
  0012FBD4   00000000  |Reserved = 0
  0012FBD8   00020019  |Access = KEY_READ
  0012FBDC   0012FBF0  \pHandle = 0012FBF0
  
  往下翻动堆栈,看到这么一句:
  
  0012FC84   0041A860  返回到 3.0041A860 来自 3.0042C609
  
  取消断点,跟去0041A860
  
  0041A860    83C4 28         add     esp, 28                            ;来到这里
  0041A863    8945 FC         mov     dword ptr ss:[ebp-4], eax
  0041A866    8B45 FC         mov     eax, dword ptr ss:[ebp-4]
  
  往上翻到 0041A825 处
  
  0041A825    55              push    ebp                                ;从到这里开始改
  0041A826    8BEC            mov     ebp, esp
  0041A828    81EC 10000000   sub     esp, 10
  0041A82E    E8 23F1FFFF     call    3.00419956
  
  
  改为下面:
  
  xor eax,eax
  inc eax
  retn
  
  按照上面改法保存4.exe,然后运行,发现主程序标题已经是xx专用版了(这个作者也真是的。。。)
  
  看看注册窗口,已经是正式版了,而且注册按钮已经灰了。
  
  是不是大功告成了呢?
  
  ===================================================================================================
  
  5。再次突破功能验证
  
  看看注册要求那里写明,不注册的是不能用最后3个选项的,我们点最后3个选项其中一个,又弹出注册窗口了
  
  看来没有真正的爆破,功能还是有限制啊!
  
  od载入4.exe,F9运行,下 bp RegOpenKeyExA

  再次下注册表的断点就是因为那个功能限制还是读取注册表的注册信息判断是否注册

  所以就下注册表断点,其实下窗口断点也是可以的,大家可以随意发挥
   
  点主程序功能受限制的3个选项其中一个,断下来后
  
  看到堆栈往下找到如下:
  
  0012FB3C  |0042B4E7  返回到 4.0042B4E7 来自 4.00429372
  
  来到 0042B4E7  ,往上找到起点:
  
  0042B3C6    55              push    ebp
  0042B3C7    8BEC            mov     ebp, esp
  0042B3C9    81EC 28000000   sub     esp, 28
  
  同样改标志位:
  
  xor eax,eax
  inc eax
  retn
  
  保存为5.exe。
  
  运行程序,功能限制去掉,跟注册的一样了。
  
  ===================================================================================================
  
  6。完善一下
  
  由于我们处理反调试的时候把程序的“退出系统”的按钮功能搞没了。。。就是这个按钮按了退出没反映
  
  我们用EcE来查看到按钮事件,退出按钮是 004289D4
  
  od载入5.exe去到 004289D4 ,改为 call 0042C5DF (这个是易语言oep那里最后的一个call,就是退出的call)
  
  这样就可以用“退出系统”按钮了。
  
  如果想运行多个程序而没有烦人的“该应该程序已经运行”提示
  
  可以把 0042BA5B   /0F85 3A000000   jnz     6.0042BA9B 这句改为jmp就可以了。
  
--------------------------------------------------------------------------------
【经验总结】
  菜鸟第一次遇到那么猛的反调试,但是没有给吓到,而是迎难而上,充分借助已有的精华和别人的方法完成了这次破解。
  
  所以菜鸟们不要遇到什么问题都立刻去发帖问高手,应该首先想办法解决,这样才能提高。
  
  同时希望高手能多写点东西给菜鸟,等我们遇到困难的时候可以有个参考。

  同时向作者致歉。
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2007年04月07日 17:03:56

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (39)
雪    币: 144
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
浩大的工程:)不死的耐性:)
2007-4-7 18:18
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
学习!谢谢分享。
2007-4-7 19:43
0
雪    币: 2278
活跃值: (1446)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
学习学习啊!
2007-4-7 19:56
0
雪    币: 443
活跃值: (200)
能力值: ( LV9,RANK:1140 )
在线值:
发帖
回帖
粉丝
5
无法学习,我连主程序也无法运行起来,别说还OD载入了~

支持~~
2007-4-7 22:43
0
雪    币: 200
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
zcg
6
楼上被直接的剥夺 调试权 了
2007-4-7 23:20
0
雪    币: 325
活跃值: (97)
能力值: ( LV13,RANK:530 )
在线值:
发帖
回帖
粉丝
7
楼主喜欢玩易语言的话 建议玩玩求真工具箱
这个还有点意思 多线程 SMC 反正能用的都用了
2007-4-8 05:00
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
楼主真有耐性,赞~~~
2007-4-8 05:15
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
说的很清楚明白,再次赞~~希望楼主继续发表好文章
2007-4-8 05:16
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10

不是喜欢玩易语言,而是遇到难题没有放弃而已。。。

看到这么恐怖的反调试,估计我还没有实力。
2007-4-8 12:55
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
谢谢。
2007-4-8 12:57
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
哇..ICY的强人啊.!!支持!!
2007-4-8 20:37
0
雪    币: 167
活跃值: (1574)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
13
软件呢 没有下载了 国软
思路不错
最近见到一句好流行的话:追求爆破最高境界:)
支持下 希望能找到该软件调试一下~~
2007-4-9 07:59
0
雪    币: 405
活跃值: (10)
能力值: ( LV9,RANK:1130 )
在线值:
发帖
回帖
粉丝
14
易语言官方论坛那里曾经有一个教程,是教你如何反破解的。非常详细。还有源码。相信是官方提供的,为的是吸引更多人使用。所以易语言才这么恐怖。

我曾经看过一些用数字签名注册的软件,外加md5自校验。真的是非常难破。我们根本就不知道作者把MD5的字符串藏在那个角落,你随便修改个字节都会通知软件“有破解”。

楼主真有耐心。
2007-4-9 09:33
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
后来我再看看易语言的其他软件,很多软件都是像这个软件那样反调试,手法非常的像。估计是那些官方教程衍生出来的吧。
我不懂易语言,所以不能发表什么评论。
不过易语言毕竟是比较新的事物,以后发展起来的话用到的反调试可能更加的恐怖。
2007-4-9 12:39
0
雪    币: 269
活跃值: (51)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
16
破解还真需要有点耐心
2007-4-9 15:17
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
我也不太懂,还在学习!
2007-4-10 20:58
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
学习!E语言我一直不敢玩 ,这次要好好学习!
2007-4-10 23:25
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
学习,谢谢楼主分享!
2007-4-11 10:31
0
雪    币: 215
活跃值: (85)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
20
楼主,有耐性,也很有经验,牛,实在是佩服,支持
希望多发些这样的好帖~1
2007-4-15 18:00
0
雪    币: 214
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
支持,对我们菜鸟的革命事业的继续很有帮助!
2007-5-11 16:00
0
雪    币: 740
活跃值: (952)
能力值: ( LV9,RANK:160 )
在线值:
发帖
回帖
粉丝
22
我还见到一更BT的,是个CM,OD一打开立刻秒,W32,C32,SOFTICE,F**,还有很多调试反编译工具不管什么版本都秒。不是被秒就是重启(SHUTDOWN)……想来真PF那个CREAK ME,可惜现在网上找不到了………………
2007-5-11 20:58
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
哇,楼主的耐性真大哦,光看都有点怕怕的
2007-5-12 01:44
0
雪    币: 314
活跃值: (15)
能力值: ( LV12,RANK:410 )
在线值:
发帖
回帖
粉丝
24
[QUOTE=;]...[/QUOTE]
有人对爆破很不以为然,不赞同爆破,而我却认为爆破自有爆破的好处,因为我最讨厌别人向我的注册表或硬盘里写东西,那些都是垃圾,而且如果重装了系统还得把那些垃圾请回来,实在麻烦。。。。所以我也是个爆破手
2007-6-17 23:00
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
这个教程不错下个软件试下
2007-9-8 06:27
0
游客
登录 | 注册 方可回帖
返回
//