本人现只能在此处发贴,如有不便表示歉意。
在论坛下了个Crack_New_Year_Presents_2009.iso也就是传说中的新年大礼包,并在其中翻出来了IDA的插件hexrays,也就是把汇编翻译成伪c代码的软件。按照说明安装了一下.但是打开IDA运行插件时告知过期,很是郁闷。这么好的东西,难道非要自己破解不成。无奈之下写了这个程序供大家使用,如果觉得还可以管理员不妨把它加到新年大礼包中(谢谢)。
简单说一下在IDA安装目录下的plugins子目录里找到hexrays.plw,用winhex打开来到文件偏移FCCDC处这里有连续4个字节存放着一个关键数据。如果全是00,那么软件就把它解释成为一个初始时间就是1970年1月1日。插件安装完后这里是492c8370h换算成十进制是1227654000整除86400得到14208这个就是从1970年1月1日至今的天数,也就是2008年11月26日,因为14208大概就是39年。如果你没有按照安装说明修改,那么修改一下系统时间还可以用。如果你完全相信安装说明,你可以试试能否在windows里把系统时间修改到1970年以前。
程序运行截了个图。
可能你对这个时间存放的地址FCCDC比较感兴趣。
当弹出显示过期时间的窗口时,你可以用个小工具看一下窗口名和窗口类,应该是用了createwindowexa
用od载入IDA后设置createwindowexa的断点断下后在右边的堆栈中找到返回地址,直接跳过去是
021B30DF 8B2D 10161202 MOV EBP,DWORD PTR DS:[<&USER32.CreateWindowExA>] user32.CreateWindowExA
021B30E5 68 00008080 PUSH 80800000
021B30EA 68 88FC1F02 PUSH hexrays.021FFC88 ; ASCII "About window"
021B30EF 68 B8FC1F02 PUSH hexrays.021FFCB8 ;ASCII"Hex-RaysSplash"
021B30F4 6A 00 PUSH 0
021B30F6 FFD5 CALL EBP ;弹出提示过期时间的窗口
往上看发现
021B2E87 68 70E12102 PUSH hexrays.0221E170 ; ASCII "f1bb5ea286819591579a2018b6edf166"
021B2E8C 68 E0E02102 PUSH hexrays.0221E0E0 ; ASCII "57-BF73-7BE4-3F"
021B2E91 51 PUSH ECX
021B2E92 E8 79B50100 CALL hexrays.021CE410
再由Memory map 地址=0221E000 大小=00007000 (28672.) 属主=hexrays 02120000 可以知道0221E000处是插件的数据段,"57-BF73-7BE4-3F"就在文件偏移的fcce0处,显然hexrays.plw插件数据段的内容就是读取了该处的文件数据。对比0221E000起始处的内容和插件偏移fcce0附近的数据,从而确定0221E000对应的文件偏移是fcc00.
再重新调试很容易来到下面地址处
0212A51C A1 DCE02102 MOV EAX,DWORD PTR DS:[221E0DC] ;221E0DC处的双字数据将会在下面生成日期
0212A521 99 CDQ
0212A522 890424 MOV DWORD PTR SS:[ESP],EAX
0212A525 8D0424 LEA EAX,DWORD PTR SS:[ESP]
0212A528 50 PUSH EAX
0212A529 895424 08 MOV DWORD PTR SS:[ESP+8],EDX
0212A52D E8 68780A00 CALL hexrays.021D1D9A
0212A532 50 PUSH EAX
0212A533 68 60BC1F02 PUSH hexrays.021FBC60 ; ASCII "%d %b %Y"
所以得到日期数据相对于数据段起始地址的偏移0221E0DC-0221E000=dc,这样在插件中的文件偏移就是fcc00+dc=fccdc。
- 标 题:有关hexrays插件时间限制的调试与解决
- 作 者:天易love
- 时 间:2009-01-29 11:08
- 链 接:http://bbs.pediy.com/showthread.php?t=81056