且行且远
分类: 逆向手札 由 ssfighter 于 2008年10月23日 发表

有感于博客长期缺少学术氛围,每天都是在为生活的琐事牢骚,今天俺决定写点技术性的东西,免得让人觉得自己不学无术——虽然我的确觉得自己就是如此。

这个程序是一位QQ上的朋友Livermore和我共同研究的,我的破解里面用到了许多他的研究成果,这里先向Livermore表示感谢。这个程序网上挺常见的,可以给EPSON ME2打印机清零,但网上给出的破解方法太麻烦,所以Livermore打算做个好点的破解,我只是做了一些打下手的工作,却征得了他的同意在这儿大言不惭地在这儿写博客,有点惭愧。

网上给出的破解需要三个条件,当条件不满足的时候会弹出对话框说无法运行程序,这里的爆破点在4036C5和4036F0初的两个call。

004036CD   /74 0A           je      short 004036D9
004036CF   |C785 E8FDFFFF 0>mov     dword ptr [ebp-218], 1
004036D9   \8B85 E8FDFFFF   mov     eax, dword ptr [ebp-218]
004036DF    50              push    eax
004036E0    8B8D 10FCFFFF   mov     ecx, dword ptr [ebp-3F0]
004036E6    81C1 2C0C0000   add     ecx, 0C2C
004036EC    51              push    ecx
004036ED    8D4D E4         lea     ecx, dword ptr [ebp-1C]
004036F0    E8 9ED50C00     call    004D0C93
004036F5    83F8 01         cmp     eax, 1
004036F8    74 0A           je      short 00403704
004036FA    C785 E8FDFFFF 0>mov     dword ptr [ebp-218], 1
00403704    83BD E8FDFFFF 0>cmp     dword ptr [ebp-218], 0
0040370B    0F84 A4000000   je      004037B5

爆破点这里显而易见,只要保证[ebp-218]是0就可以正常的运行程序了,爆破方法很简单,不说了。但是爆破之后会发现Particular adjustment mode不可用。经过研究发现,改内存中的数据怎么改都没关系,只要一修改文件立刻那个功能就失效了,于是程序肯定是对文件加了自校验的暗桩。下CreateFileA的断点,点那个按钮后断下,Ctrl+F9几次可以返回到主程序,再往下翻翻,来到这里:

004055EA  |> \83BD 34FDFFFF>cmp     dword ptr [ebp-2CC], 0
004055F1  |.  75 0C         jnz     short 004055FF
004055F3  |.  C705 50995700>mov     dword ptr [579950], 1
004055FD  |.  EB 18         jmp     short 00405617
004055FF  |>  8B85 2CFBFFFF mov     eax, dword ptr [ebp-4D4]
00405605  |.  3B85 34FDFFFF cmp     eax, dword ptr [ebp-2CC]
0040560B  |.  75 0A         jnz     short 00405617
0040560D  |.  C705 50995700>mov     dword ptr [579950], 1
00405617  |>  8B8D 38FDFFFF mov     ecx, dword ptr [ebp-2C8]
0040561D  |.  51            push    ecx
0040561E  |.  E8 E3941100   call    0051EB06
00405623  |.  83C4 04       add     esp, 4
00405626  |>  833D 50995700>cmp     dword ptr [579950], 0
0040562D  |.  75 05         jnz     short 00405634

由此可见,[579950]处是一个校验处,前面是对文件进行校验,然后这里就是个校验位,校验失败按钮就失效,粗粗看了一下,校验位有好几十个,每个还可能都不只一个位置,全都修改是项很耗体力和耐心的工作,不过也不是不能干。另外,由于这个程序只校验原文件,于是可以写一个Loader来动态修改内存中的地址,这样就可以避免修改那么多的暗桩,这应该是最简单的办法了。anyway,两种方法我都尝试了一下,下面是下载地址:

Box.net | eSnips | SkyDrive

压缩包里是完整的EPSON ME2清零程序,里面的AdjProg.exe文件是原程序,我没有修改过,不信的可以自行在网上下载并比对MD5,Loader.exe是我写的loader方式的破解程序,运行时需要保证文件夹内有AdjProg.exe文件,否则不能运行。AdjProg1.exe是我改掉暗桩之后的程序,上百个暗桩,我不能保证全都修改完了,喜欢那种破解方式请自行选择。另外,loader方式会不会被认为是病毒程序我不知道,如果你信不过我的话,可以不用。



Marcher
2008年10月24日 13:15:09

哇……你的破解涉足的领域还真是广唉……
仰慕中。

ssfighter
2008年10月24日 15:58:24

@Marcher:
这是我一个朋友邀请我共同研究的,呵呵

zyhxhw
2008年10月25日 22:56:50

终于看到博主行动了,看来先生对编程很在行的嘛,不过,希望更加勤奋些

ssfighter
2008年10月26日 01:23:14

@zyhxhw:
谢谢你的鼓励,不知道您是哪位?可否认识一下?

suzy7777
2008年12月17日 23:32:45

博主实在是太厉害了!我试验了您的AdjProg1.exe和Loader.exe,不用那三个条件,完全可以运行程序。
只是还有一个小问题,请教您,和我从别的地方下载的这个清零软件一样,点Cleaning,运行一半,报错“Waste ink pad counter overflow error”并且打印机没有动作,再重新执行几遍依然是这个问题。都是不成功。
要是点Initialization,报错”Communication error! Error Code:210004B0″。唉,总之不成功,请指教!

ssfighter
2008年12月18日 12:42:50

@suzy7777
谢谢您的支持。但是很抱歉我帮不到你,因为我没有用过Epson的打印机,这个程序只是和别人一起研究的,只是破解的研究,并没有研究过具体的清零能否使用,实在对不起。

suzy7777
2008年12月18日 19:18:50

ssfighter,不管怎样,还是要谢谢你!
:)

xiaoyu
2009年05月28日 11:02:21

回复的怎么都是乱码啊
PLEASE TO ME EMAIL
EMAIL:hn_tuzi@163.com

xiaoyu
2009年05月28日 11:03:55

现在又好了啊,可能是我打字太多的原因吧!CreateFileA太多要全下断吗?

发表评论

昵称:  (必须)
邮件:  (必须)
网址: 
评论: