谁有mathmetica8autocad2010注册机机发一个,谢谢

UMPC上有什么好用的计算器软件?? - UMPC / UMD- 综合评测/技术讨论区 -
UmpcFans - 打造中国最贴心的资深UMPC论坛官方站
- Powered by Discuz!
UID7987&帖子19&精华0&积分443&阅读权限30&在线时间84 小时&注册时间&最后登录&
UMPC上有什么好用的计算器软件??
如题,想找个好用的计算器软件,可以全屏用手指直接点的。; B( _&&z; ]6 [
网上找了一通,都不是很好用。( k' L! H( P+ G( @
我的要求其实很简单:
界面简洁) X* p& |* [# i+ B/ }+ ?2 C
按钮大可以直接用手指点,XP自带的那个太小了,没法用。
最好可以全屏
其他功能没什么要求,只要能做到那种简单的casio 8位计算机的功能就可以了。! O) e, \" {) C, n$ v
用过palm的兄弟应该知道,palm自带的计算器很好用。我就想找个那样的。4 l" h&&w, s7 i' _
谢谢大家。
UID188&帖子289&精华0&积分882&阅读权限50&来自England&在线时间107 小时&注册时间&最后登录&
自己做个flash版本的呗。有点基础就可以做啦
UID13&帖子1962&精华3&积分8962&阅读权限255&来自地球&在线时间1207 小时&注册时间&最后登录&
软件区有个大号的
400投诉/紧急事务直达服务(24×7 不受工作时间限制, 仅收市话费)
400- 转 899-613-5027
 网友提问及电话转接请使用本论坛免费回拨电话服务! 
UID7987&帖子19&精华0&积分443&阅读权限30&在线时间84 小时&注册时间&最后登录&
原帖由 光照天下 于
06:34 发表
软件区有个大号的 2 Z0 ~$ S2 y+ ]
请问在那里??叫啥名字啊??
UID13&帖子1962&精华3&积分8962&阅读权限255&来自地球&在线时间1207 小时&注册时间&最后登录&
400投诉/紧急事务直达服务(24×7 不受工作时间限制, 仅收市话费)
400- 转 899-613-5027
 网友提问及电话转接请使用本论坛免费回拨电话服务! 
UID1427&帖子93&精华0&积分1087&阅读权限70&在线时间195 小时&注册时间&最后登录&
装个MATLAB。牛B死了。:sPE45bE:
UID13&帖子1962&精华3&积分8962&阅读权限255&来自地球&在线时间1207 小时&注册时间&最后登录&
MATLAB 做Matrix好使,适合线性代数。# [9 Y. l# C% b7 Y
计算函数和微积分还得用 Mathmetica3 \, d2 f3 s2 C, ]& N+ p8 g
我上大一的时候这两个东西都装着
400投诉/紧急事务直达服务(24×7 不受工作时间限制, 仅收市话费)
400- 转 899-613-5027
 网友提问及电话转接请使用本论坛免费回拨电话服务! 
UID7987&帖子19&精华0&积分443&阅读权限30&在线时间84 小时&注册时间&最后登录&
原帖由 光照天下 于
11:39 发表
! a. R4 z0 g8 i! I5 O" q5 e' E( i
' E5 _, b- |' }
那个地址打不开。。。。
Google上也找不到别的下载地址。% [+ n/ G5 R0 |# S' a&&x! K
UID13&帖子1962&精华3&积分8962&阅读权限255&来自地球&在线时间1207 小时&注册时间&最后登录&
$ ~7 b* t2 e. D&&b# d
可以打开,anyway 给你把程序粘贴过来了。 自己装一下 framework .net 2.0
附件: 您需要才可以下载或查看附件。没有帐号?
400投诉/紧急事务直达服务(24×7 不受工作时间限制, 仅收市话费)
400- 转 899-613-5027
 网友提问及电话转接请使用本论坛免费回拨电话服务! 
UID7987&帖子19&精华0&积分443&阅读权限30&在线时间84 小时&注册时间&最后登录&
原帖由 光照天下 于
16:04 发表 2 M/ N' ~8 j% S2 Y1 t5 f7 U0 U! G% W
可以打开,anyway 给你把程序粘贴过来了。 自己装一下 framework .net 2.0
看来是被blocked鸟,好不容易用glader下了下来。却发现你已经贴上来了,呵呵。: ]/ p2 j8 _8 Z- ^+ o& V4 s/ A
不过在我的UX37CN上看来还不是太大,可以全屏就好了。" P&&a! D( T: Y+ K
UID2431&帖子195&精华0&积分1254&阅读权限70&在线时间203 小时&注册时间&最后登录&
一打开报错,点继续可以运行。
已经装了framework .net 2.0 SP1
Treo680+UX18c+iphone
[通过 QQ、MSN 分享给朋友]初三数学概率问题/math/ques/detail/2edfd-436e-a83c-b12请问这题它说任选为什么不是有九种情况 都任选了应该就可以重复啊
怎样判断概率题里可不可以重复选啊?_作业帮
拍照搜题,秒出答案
初三数学概率问题/math/ques/detail/2edfd-436e-a83c-b12请问这题它说任选为什么不是有九种情况 都任选了应该就可以重复啊
怎样判断概率题里可不可以重复选啊?
初三数学概率问题/math/ques/detail/2edfd-436e-a83c-b12请问这题它说任选为什么不是有九种情况 都任选了应该就可以重复啊
怎样判断概率题里可不可以重复选啊?
所经过的6个点分别为:P1(-2,-3)、P2(-2,4)、P3(-3,-2)、P4(-3,4)、P5(4,-2)、P6(4,-3),总共就这6个啊,你还能举出不同的点来吗?你可以这样计算,先取x轴坐标数字,这时有3个数字可选,再取y轴坐标数字的时候,因为已经取走一个了,就只有2个数字可选了,那么根据公式,就是3*2=6种情况.[.NET][爆破]我的Microsoft Math 3.0激活之路
[标& & 题][原创][.NET][爆破]我的Microsoft Math 3.0激活之路[作& &者]快雪时晴,日[目& & 标]& & & & 在CNBeta看到一则新闻:Microsoft Math 3.0 试用版发布啦!CB_Freshman发布于
06:54:32|3185 次阅读 字体:大 小 打印预览来源:AppBeta微软推出的Math工具提供了强大的数学工具,尤其适合学生和教师,可以帮助他们逐步解方程,更好的理解代数学、几何学、物理、化学和微积分等。(该软件为收费软件,30天试用时间)Math的界面左侧被设计成一个计算器模型,右侧则是主要的显示区域。主要功能有:1、图形化计算器:具有广泛的图形和解方程能力,具有制作2D和增强的3D彩色图形功能,有助于人们可视化解决问题并理解概念。2、逐步解方程:从基本的数学问题到微积分,可以解决许多数学问题。3、公式和方程库:具有100多个常用方程和公式。4、解三角形。5、单位换算。6、新:支持Tablet和Ultra-Mobile PC的数字墨水技术,可以通过手写解决许多Math可以识别的问题。提示:Math是收费软件,这个是30天试用版。每次程序运行都会提示,30天后必须输入25位产品序列ID。下载地址:oh-yeah,就是它![工& & 具] PEID、OllyICE、010Editor、Reflector、ILDasm、ILAsm、SN.exe、SNRemove、SNReplace.exe、StrongName Patcher、Abel_Load231、DUP2.15finalPEBrowseDbg_pro[平& & 台]EN-WINXPSP2+MUI.Net Framwork v2.0.50727[第一部分] 探究关键代码主程序MATHAPP.EXE为.NET程序,当然首先采用静态分析方法了(动态调试还不熟悉,工具和参考资料都远不及WIN32 PE)。微软的东西就是好,不加壳,没有应用代码混淆,很快就找到关键地方。===============================================Reflector逆向情况========================================================private static void Main(string[] args);Declaring Type: Microsoft.MicrosoftMath.Application.AppMain Assembly: MathApp, Version=3.0. [STAThread]private static void Main(string[] args){& & Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException);& & AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(AppMain.OnUnhandledException);& & ResManager.InitializeMinimum();& & SingleInstance.AppName = (ResManager.SKU == null) ? "EncCalc" : ("EncCalc-" + ResManager.SKU);& & if (SingleInstance.CheckSingleInstance(args, false, true) == SingleInstanceState.AlreadyRunning)& & {& && &&&& & }& & AppResManager.Initialize();& & AppDrawingInfo.Initialize();& & uint dwGraceTime = 0;& & AppResManager.Activated = NativeMethods.CheckLicenseStatus(ResManager.SKU, out dwGraceTime) != 0;& & if (!CheckEula())& & {& && &&&& & }& & CheckSQM();& & if (!AppResManager.bine(ResManager.AppDirectory, "MathRichEditNative.dll")))& & {& && &&&AppResManager.ExitApp();& & }& & if (!AppResManager.Activated)& & {& && &&&string pszProdKey =& && &&&switch (NativeMethods.ShowActivationWizard(IntPtr.Zero, pszProdKey, 0, dwGraceTime, ResManager.SKU))& && &&&{& && && && &case 0:& && && && &case 0xc000000c:& && && && &case 0xf000000e:& && && && && & AppResManager.Activated = NativeMethods.CheckLicenseStatus(ResManager.SKU, out dwGraceTime) != 0;& && && && && & if ((dwGraceTime == 0) && !AppResManager.Activated)& && && && && & {& && && && && && &&&AppResManager.ExitApp();& && && && && & }& && && && && & goto Label_00FB;& && &&&}& && &&&if (dwGraceTime == 0)& && &&&{& && && && &AppResManager.ExitApp();& && &&&}& & }Label_00FB:& & Application.ApplicationExit += new EventHandler(AppMain.OnApplicationExit);& & Application.Idle += new EventHandler(AppMain.OnApplicationIdle);& & Application.EnableVisualStyles();& & MainForm mainForm = new MainForm();& & mainForm.SetCommandArgs(args);& & Application.Run(mainForm);}====================================ILDASM 显示情况========================================================.method private hidebysig static void&&Main(string[] args) cil managed// SIG: 00 01 01 1D 0E{&&.entrypoint&&.custom instance void [mscorlib]System.STAThreadAttribute::.ctor() = ( 01 00 00 00 ) &&// Method begins at RVA 0xb80c&&// Code size& && & 313 (0x139)&&.maxstack&&5&&.locals init (valuetype [MathControls]Microsoft.MicrosoftMath.Controls.SingleInstanceState V_0,& && && &&&uint32 V_1,& && && &&&string V_2,& && && &&&uint32 V_3,& && && &&&class Microsoft.MicrosoftMath.Application.MainForm V_4)&&IL_0000:&&/* 17& &|& && && && && && &*/ ldc.i4.1&&IL_0001:&&/* 28& &| (0A)0001DD& && & */ call& && & void [System.Windows.Forms]System.Windows.Forms.Application::SetUnhandledExceptionMode(valuetype [System.Windows.Forms]System.Windows.Forms.UnhandledExceptionMode)&&IL_0006:&&/* 28& &| (0A)0001DE& && & */ call& && & class [mscorlib]System.AppDomain [mscorlib]System.AppDomain::get_CurrentDomain()&&IL_000b:&&/* 14& &|& && && && && && &*/ ldnull&&IL_000c:&&/* FE06 | (06)00009C& && & */ ldftn& && &void Microsoft.MicrosoftMath.Application.AppMain::OnUnhandledException(object, class [mscorlib]System.UnhandledExceptionEventArgs)&&IL_0012:&&/* 73& &| (0A)0001DF& && & */ newobj& &&&instance void [mscorlib]System.UnhandledExceptionEventHandler::.ctor(object,native int)&&IL_0017:&&/* 6F& &| (0A)0001E0& && & */ callvirt& &instance void [mscorlib]System.AppDomain::add_UnhandledException(class [mscorlib]System.UnhandledExceptionEventHandler)&&IL_001c:&&/* 28& &| (0A)0001E1& && & */ call& && & void [MathControls]Microsoft.MicrosoftMath.Controls.ResManager::InitializeMinimum()&&IL_0021:&&/* 28& &| (0A)0001E2& && & */ call& && & string [MathControls]Microsoft.MicrosoftMath.Controls.ResManager::get_SKU()&&IL_0026:&&/* 2C& &| 11& && && && && &*/ brfalse.s&&IL_0039&&IL_0028:&&/* 72& &| (70)0006A9& && & */ ldstr& && &"EncCalc-"&&IL_002d:&&/* 28& &| (0A)0001E2& && & */ call& && & string [MathControls]Microsoft.MicrosoftMath.Controls.ResManager::get_SKU()&&IL_0032:&&/* 28& &| (0A)000091& && & */ call& && & string [mscorlib]System.String::Concat(string,string)&&IL_0037:&&/* 2B& &| 05& && && && && &*/ br.s& && & IL_003e&&IL_0039:&&/* 72& &| (70)0006BB& && & */ ldstr& && &"EncCalc"&&IL_003e:&&/* 28& &| (0A)0001E3& && & */ call& && & void [MathControls]Microsoft.MicrosoftMath.Controls.SingleInstance::set_AppName(string)&&IL_0043:&&/* 02& &|& && && && && && &*/ ldarg.0&&IL_0044:&&/* 16& &|& && && && && && &*/ ldc.i4.0&&IL_0045:&&/* 17& &|& && && && && && &*/ ldc.i4.1&&IL_0046:&&/* 28& &| (0A)0001E4& && & */ call& && & valuetype [MathControls]Microsoft.MicrosoftMath.Controls.SingleInstanceState [MathControls]Microsoft.MicrosoftMath.Controls.SingleInstance::CheckSingleInstance(string[],bool,bool)&&IL_004b:&&/* 0A& &|& && && && && && &*/ stloc.0&&IL_004c:&&/* 06& &|& && && && && && &*/ ldloc.0&&IL_004d:&&/* 17& &|& && && && && && &*/ ldc.i4.1&&IL_004e:&&/* 33& &| 01& && && && && &*/ bne.un.s& &IL_0051&&IL_0050:&&/* 2A& &|& && && && && && &*/ ret&&IL_0051:&&/* 28& &| (06)00027A& && & */ call& && & void Microsoft.MicrosoftMath.Application.AppResManager::Initialize()&&IL_0056:&&/* 28& &| (06)00009E& && & */ call& && & void Microsoft.MicrosoftMath.Application.AppDrawingInfo::Initialize()&&IL_005b:&&/* 16& &|& && && && && && &*/ ldc.i4.0&&IL_005c:&&/* 0B& &|& && && && && && &*/ stloc.1&&IL_005d:&&/* 28& &| (0A)0001E2& && & */ call& && & string [MathControls]Microsoft.MicrosoftMath.Controls.ResManager::get_SKU()&&IL_0062:&&/* 12& &| 01& && && && && &*/ ldloca.s& &V_1**********************************************************二进制搜索定位(共2处):FE0128//这句看不懂,有看懂的朋友跟我说一声*********************************************************&&IL_0064:&&/* 28& &| (06)000413& && & */ call& && & uint32 Microsoft.MicrosoftMath.Application.NativeMethods::CheckLicenseStatus(string,uint32&)&&IL_0069:&&/* 16& &|& && && && && && &*/ ldc.i4.0&&IL_006a:&&/* FE01 |& && && && && && &*/ ceq&&IL_006c:&&/* 16& &|& && && && && && &*/ ldc.i4.0&&IL_006d:&&/* FE01 |& && && && && && &*/ ceq&&IL_006f:&&/* 28& &| (06)00026D& && & */ call& && & void Microsoft.MicrosoftMath.Application.AppResManager::set_Activated(bool)&&IL_0074:&&/* 28& &| (06)000099& && & */ call& && & bool Microsoft.MicrosoftMath.Application.AppMain::CheckEula()&&IL_0079:&&/* 2D& &| 01& && && && && &*/ brtrue.s& &IL_007c&&IL_007b:&&/* 2A& &|& && && && && && &*/ ret&&IL_007c:&&/* 28& &| (06)000098& && & */ call& && & void Microsoft.MicrosoftMath.Application.AppMain::CheckSQM()&&IL_0081:&&/* 28& &| (0A)0001E5& && & */ call& && & string [MathControls]Microsoft.MicrosoftMath.Controls.ResManager::get_AppDirectory()&&IL_0086:&&/* 72& &| (70)0006CB& && & */ ldstr& && &"MathRichEditNative.dll"&&IL_008b:&&/* 28& &| (0A)0001E6& && & */ call& && & string [mscorlib]System.IO.Path::Combine(string, string)&&IL_0090:&&/* 28& &| (06)000291& && & */ call& && & bool Microsoft.MicrosoftMath.Application.AppResManager::VerifyMSCertificate(string)&&IL_0095:&&/* 2D& &| 05& && && && && &*/ brtrue.s& &IL_009c&&IL_0097:&&/* 28& &| (06)000292& && & */ call& && & void Microsoft.MicrosoftMath.Application.AppResManager::ExitApp()&&IL_009c:&&/* 28& &| (06)00026C& && & */ call& && & bool Microsoft.MicrosoftMath.Application.AppResManager::get_Activated()&&IL_00a1:&&/* 2D& &| 58& && && && && &*/ brtrue.s& &IL_00fb&&IL_00a3:&&/* 14& &|& && && && && && &*/ ldnull&&IL_00a4:&&/* 0C& &|& && && && && && &*/ stloc.2&&IL_00a5:&&/* 7E& &| (0A)0001E7& && & */ ldsfld& &&&native int [mscorlib]System.IntPtr::Zero&&IL_00aa:&&/* 08& &|& && && && && && &*/ ldloc.2&&IL_00ab:&&/* 16& &|& && && && && && &*/ ldc.i4.0&&IL_00ac:&&/* 07& &|& && && && && && &*/ ldloc.1&&IL_00ad:&&/* 28& &| (0A)0001E2& && & */ call& && & string [MathControls]Microsoft.MicrosoftMath.Controls.ResManager::get_SKU()&&IL_00b2:&&/* 28& &| (06)000414& && & */ call& && & uint32 Microsoft.MicrosoftMath.Application.NativeMethods::ShowActivationWizard(native int,string,uint32,uint32,string)&&IL_00b7:&&/* 0D& &|& && && && && && &*/ stloc.3&&IL_00b8:&&/* 09& &|& && && && && && &*/ ldloc.3&&IL_00b9:&&/* 2C& &| 10& && && && && &*/ brfalse.s&&IL_00cb&&IL_00bb:&&/* 09& &|& && && && && && &*/ ldloc.3&&IL_00bc:&&/* 20& &| 0C0000C0& && && &*/ ldc.i4& &&&0xc000000c&&IL_00c1:&&/* 2E& &| 08& && && && && &*/ beq.s& && &IL_00cb&&IL_00c3:&&/* 09& &|& && && && && && &*/ ldloc.3&&IL_00c4:&&/* 20& &| 0E0000F0& && && &*/ ldc.i4& &&&0xf000000e&&IL_00c9:&&/* 33& &| 28& && && && && &*/ bne.un.s& &IL_00f3&&IL_00cb:&&/* 28& &| (0A)0001E2& && & */ call& && & string [MathControls]Microsoft.MicrosoftMath.Controls.ResManager::get_SKU()&&IL_00d0:&&/* 12& &| 01& && && && && &*/ ldloca.s& &V_1&&IL_00d2:&&/* 28& &| (06)000413& && & */ call& && & uint32 Microsoft.MicrosoftMath.Application.NativeMethods::CheckLicenseStatus(string, uint32&)&&IL_00d7:&&/* 16& &|& && && && && && &*/ ldc.i4.0&&IL_00d8:&&/* FE01 |& && && && && && &*/ ceq&&IL_00da:&&/* 16& &|& && && && && && &*/ ldc.i4.0&&IL_00db:&&/* FE01 |& && && && && && &*/ ceq&&IL_00dd:&&/* 28& &| (06)00026D& && & */ call& && & void Microsoft.MicrosoftMath.Application.AppResManager::set_Activated(bool)&&IL_00e2:&&/* 07& &|& && && && && && &*/ ldloc.1&&IL_00e3:&&/* 2D& &| 16& && && && && &*/ brtrue.s& &IL_00fb&&IL_00e5:&&/* 28& &| (06)00026C& && & */ call& && & bool Microsoft.MicrosoftMath.Application.AppResManager::get_Activated()&&IL_00ea:&&/* 2D& &| 0F& && && && && &*/ brtrue.s& &IL_00fb&&IL_00ec:&&/* 28& &| (06)000292& && & */ call& && & void Microsoft.MicrosoftMath.Application.AppResManager::ExitApp()&&IL_00f1:&&/* 2B& &| 08& && && && && &*/ br.s& && & IL_00fb&&IL_00f3:&&/* 07& &|& && && && && && &*/ ldloc.1&&IL_00f4:&&/* 2D& &| 05& && && && && &*/ brtrue.s& &IL_00fb&&IL_00f6:&&/* 28& &| (06)000292& && & */ call& && & void Microsoft.MicrosoftMath.Application.AppResManager::ExitApp()&&IL_00fb:&&/* 14& &|& && && && && && &*/ ldnull&&IL_00fc:&&/* FE06 | (06)00009A& && & */ ldftn& && &void Microsoft.MicrosoftMath.Application.AppMain::OnApplicationExit(object, class [mscorlib]System.EventArgs)&&IL_0102:&&/* 73& &| (0A)000020& && & */ newobj& &&&instance void [mscorlib]System.EventHandler::.ctor(object, native int)&&IL_0107:&&/* 28& &| (0A)0001E8& && & */ call& && & void [System.Windows.Forms]System.Windows.Forms.Application::add_ApplicationExit(class [mscorlib]System.EventHandler)&&IL_010c:&&/* 14& &|& && && && && && &*/ ldnull&&IL_010d:&&/* FE06 | (06)00009B& && & */ ldftn& && &void Microsoft.MicrosoftMath.Application.AppMain::OnApplicationIdle(object, class [mscorlib]System.EventArgs)&&IL_0113:&&/* 73& &| (0A)000020& && & */ newobj& &&&instance void [mscorlib]System.EventHandler::.ctor(object,native int)&&IL_0118:&&/* 28& &| (0A)0001E9& && & */ call& && & void [System.Windows.Forms]System.Windows.Forms.Application::add_Idle(class [mscorlib]System.EventHandler)&&IL_011d:&&/* 28& &| (0A)0001EA& && & */ call& && & void [System.Windows.Forms]System.Windows.Forms.Application::EnableVisualStyles()&&IL_0122:&&/* 73& &| (06)00047C& && & */ newobj& &&&instance void Microsoft.MicrosoftMath.Application.MainForm::.ctor()&&IL_0127:&&/* 13& &| 04& && && && && &*/ stloc.s& & V_4&&IL_0129:&&/* 11& &| 04& && && && && &*/ ldloc.s& & V_4&&IL_012b:&&/* 02& &|& && && && && && &*/ ldarg.0&&IL_012c:&&/* 6F& &| (06)0004B2& && & */ callvirt& &instance void Microsoft.MicrosoftMath.Application.MainForm::SetCommandArgs(string[])&&IL_0131:&&/* 11& &| 04& && && && && &*/ ldloc.s& & V_4&&IL_0133:&&/* 28& &| (0A)0001EB& && & */ call& && & void [System.Windows.Forms]System.Windows.Forms.Application::Run(class [System.Windows.Forms]System.Windows.Forms.Form)&&IL_0138:&&/* 2A& &|& && && && && && &*/ ret} // end of method AppMain::Main[第二部分]&&找下手的地方用二进制编辑器010Editor搜索:FE0128查到两处,只改第一处即可使AppResManager.Activated为真。简单问题不简单,改后保存,程序异常退出拒绝运行。用PEBrowdbg调试,修改后的主程序(不管是IL patch,还是强名去除,或是强名替换)在加载过程中异常,说明是.NET检测到程序被修改了。这都是强名保护干的好事了,RSA1024保护着,要破解得到正确产品ID看来不可能了。去强名吧,网上似乎谈的也多。下了好几个工具,比如SNRemover,SNReplacer等等,都不行,难道微软的.NET Framework对这些小动作有了新anti功能。我没有去试直接修改.net平台检测强名签名的程序,那样影响整个.net平台的安全性,不大好。办法总是有,生活从来不缺少意外,当然也包括惊喜。====================================================================================================注意到注册验证模块在MathRichEditNative.dll(本地方法)中: 名称位于 MathRich, 条目 25地址=4745650C区段=.text类型=输出名称=CheckLicenseStatus用PEID检测MathRichEditNative.dll,显示Armidillo壳,????似乎不太可能吧,这不是微软的作风。我就不把它当有壳,呵呵。用OllyICE加载,CTRL+N,输入输出函数都很齐全摆那,应该是PEid误报了。更重要的一点是该dll没有自校验,那修改起来就省去很多麻烦了。该输出函数似乎没干什么正事,可能只是.net IMPORT外部dll的一个COM接口代码而已,实际代码需要继续跟下去。4745650C &/$&&51& && && && && & push& & ecx4745650D&&|.&&8D6424 FC& && && &lea& &&&esp, dword ptr [esp-4]&&|.&&890C24& && && && &mov& &&&dword ptr [esp], ecx&&|.&&8D0D D1634547& &&&lea& &&&ecx, dword ptr []4745651A&&|.&&8D89 6D010000& &&&lea& &&&ecx, dword ptr [ecx+16D]&&|.&&894C24 04& && && &mov& &&&dword ptr [esp+4], ecx&&|.&&8D0D & &&&lea& &&&ecx, dword ptr []4745652A&&|.&&8D89 5C010000& &&&lea& &&&ecx, dword ptr [ecx+15C]&&|.&&8D6424 FC& && && &lea& &&&esp, dword ptr [esp-4]&&|.&&890C24& && && && &mov& &&&dword ptr [esp], ecx&&|.&&8B4C24 04& && && &mov& &&&ecx, dword ptr [esp+4]4745653B&&\.&&C2 0400& && && &&&retn& & 4堆栈:(ESP--〉)& &00A7B2B1&&返回到 00A7B2B1& &013E6920&&UNICODE "G07ASTRC"& &根据堆栈指示直接来到这里:(retn 4不会立即返回00A7B2B1)00A7B2AF& & FF10& && && && && & call& & dword ptr [eax]00A7B2B1& & C643 08 01& && && & mov& &&&byte ptr [ebx+8], 1//在OllyICE中手动修改EAX=1,函数返回真,程序变成已经激活!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//---------------------------------------但如何修改呢?请注意这里是动态申请的内存空间00A7B2B5& & 833D F& & cmp& &&&dword ptr [7A3817F0], 0当然也可以逐级返回跟踪:036D0266& & E8 91903BFD& &&&call& & 00A892FC036D026B& & 85C0& && && && &test& & eax, eax//返回这里036D026D& & 0F95C2& && && & setne& &dl036D0270& & 0FB6D2& && && & movzx& &edx, dl036D0273& & A800& &mov& &&&byte ptr [A8356C], dl做内存补丁的时候把setne& &dl修改为sete& && & & & dlOD加载.NET程序时最初停在kernel.dll领空,因为.net程序是类似java虚拟机/vb一样从中间字节码解释执行的,这时候程序二进制代码还没有产生(感觉没还脱壳一样)。不知道做出来的内存补丁loader能不能跨平台,或许不同机器不同的.net平台版本会申请不同的内存地址,以至于补丁地址不一样。^^^^^^想法总是好的,但制作内存补丁的路子似乎有点坎坷而且没有成功,一切源于.NET以及其强名保护(STRONG NAME)我没找到用现有的loader制作工具似乎难以定位啥时候打补丁,如何针对动态内存打。先继续看看上面跟踪到的这段代码:036D024C& & FF15 & &call& & dword ptr [A87288]036D0252& & FF15 E87CA800& &call& & dword ptr [A87CE8]036D0258& & 33D2& && && && &xor& &&&edx, edx036D025A& & 8955 F4& && && &mov& &&&dword ptr [ebp-C], edx036D025D& & 8B0D 14343E02& &mov& &&&ecx, dword ptr [23E3414]036D0263& & 8D55 F4& && && &lea& &&&edx, dword ptr [ebp-C]036D0266& & E8 91903BFD& &&&call& & 00A892FC& & & & //********************036D026B& & 85C0& && && && &test& & eax, eax036D026D& & 0F95C2& && && & setne& &dl036D0270& & 0FB6D2& && && & movzx& &edx, dl036D0273& & A800& &mov& &&&byte ptr [A8356C], dl036D0279& & FF15 & &call& & dword ptr [A83660]036D027F& & 85C0& && && && &test& & eax, eax036D0281& & 75 05& && && &&&jnz& &&&short 036D0288036D0283& & 59& && && && &&&pop& &&&ecx036D0284& & 5E& && && && &&&pop& &&&esi036D0285& & 5F& && && && &&&pop& &&&edi036D0286& & 5D& && && && &&&pop& &&&ebp036D0287& & C3& && && && &&&retn036D0288& & FF15 5C36A800& &call& & dword ptr [A8365C]036D028E& & 8B0D 2C343E02& &mov& &&&ecx, dword ptr [23E342C]036D0294& & 8B15 D07B3E02& &mov& &&&edx, dword ptr [23E7BD0]036D029A& & E8 2DECCA75& &&&call& & mscorlib.7937EECC036D029F& & 8BC8& && && && &mov& &&&ecx, eax036D02A1& & FF15 E472A800& &call& & dword ptr [A872E4]036D02A7& & 85C0& && && && &test& & eax, eax036D02A9& & 75 13& && && &&&jnz& &&&short 036D02BE036D02AB& & E8 105B9F77& &&&call& & System_W.7B0C5DC0036D02B0& & E8 F343F976& &&&call& & System_n.7A6646A8036D02B5& & 8BC8& && && && &mov& &&&ecx, eax036D02B7& & 3909& && && && &cmp& &&&dword ptr [ecx], ecx036D02B9& & E8 AE771A77& &&&call& & System_n.7A877A6C036D02BE& & 803D 6C35A800 0&cmp& &&&byte ptr [A8356C], 0036D02C5& & 0F85 7F000000& &jnz& &&&036D034A036D02CB& & 6A 00& && && &&&push& & 0036D02CD& & FF75 F4& && && &push& & dword ptr [ebp-C]036D02D0& & FF35 14343E02& &push& & dword ptr [23E3414]036D02D6& & 33D2& && && && &xor& &&&edx, edx036D02D8& & 33C9& && && && &xor& &&&ecx, ecx036D02DA& & E8 29903BFD& &&&call& & 00A89308036D02DF& & 85C0& && && && &test& & eax, eax036D02E1& & 74 0E& && && &&&je& && &short 036D02F1036D02E3& & 3D 0C0000C0& &&&cmp& &&&eax, C000000C036D02E8& & 74 07& && && &&&je& && &short 036D02F1036D02EA& & 3D 0E0000F0& &&&cmp& &&&eax, F000000E036D02EF& & 75 40& && && &&&jnz& &&&short 036D0331036D02F1& & 8B0D 14343E02& &mov& &&&ecx, dword ptr [23E3414]036D02F7& & 8D55 F4& && && &lea& &&&edx, dword ptr [ebp-C]036D02FA& & E8 FD8F3BFD& &&&call& & 00A892FC& & & & & & & & //********************036D02FF& & 85C0& && && && &test& & eax, eax036D0301& & 0F95C2& && && & setne& &dl036D0304& & 0FB6D2& && && & movzx& &edx, dl036D0307& & A800& &mov& &&&byte ptr [A8356C], dl是不是和我们在reflector里看到的c#源代码或者ildasm里看到的IL代码很相似呢?AppResManager.Initialize();& & AppDrawingInfo.Initialize();& & uint dwGraceTime = 0;& & AppResManager.Activated = NativeMethods.CheckLicenseStatus(ResManager.SKU, out dwGraceTime) != 0;& & if (!CheckEula())& & {& && &&&& & }& & CheckSQM();& & if (!AppResManager.bine(ResManager.AppDirectory, "MathRichEditNative.dll")))& & {& && &&&AppResManager.ExitApp();& & }& & if (!AppResManager.Activated)& & {& && &&&string pszProdKey =& && &&&switch (NativeMethods.ShowActivationWizard(IntPtr.Zero, pszProdKey, 0, dwGraceTime, ResManager.SKU))& && &&&{& && && && &case 0:& && && && &case 0xc000000c:& && && && &case 0xf000000e:& && && && && & AppResManager.Activated = NativeMethods.CheckLicenseStatus(ResManager.SKU, out dwGraceTime) != 0;& && && && && & if ((dwGraceTime == 0) && !AppResManager.Activated)& && && && && & {& && && && && && &&&AppResManager.ExitApp();& && && && && & }& && && && && & goto Label_00FB;& && &&&}& && &&&if (dwGraceTime == 0)& && &&&{& && && && &AppResManager.ExitApp();& && &&&}& & }Label_00FB:.net程序真的跟脱壳很相似,二进制代码就这么动态出现了。==========================================================================================================事实就是这样,我用PEBorwseDBG动态跟踪程序看到的情况:Disassembly of JITTED Microsoft.MicrosoftMath.Application.AppMain::Main () at 0x03A48990&&; Stack Size (in BYTES): 16 (0x)&&; Number of Parameters: 0&&; Local Variables Size (in BYTES): 4 (0x)&&; Prologue Size (in BYTES): 27 (0x1B)&&; Standard Frame&&0x3A4& && && && && &&&PUSH& && &&&0x0& && && && && &&&&&0x3A4& && && && && &&&PUSH& && &&&0x0& && && && && &&&&&0x3A4& && && && && &&&PUSH& && &&&0x0& && && && && &&&&&0x3A4A600& && && &&&PUSH& && &&&0xA63600& && && && &&&0x3A4899B: EC& && && &&&CALL& && &&&0x& && && & &&0x3A489A0: 55& && && && && && & PUSH& && &&&EBP& && && && && &&&&&0x3A489A1: 8BEC& && && && && &&&MOV& && && &EBP,ESP& && && && & &&0x3A489A3: 57& && && && && && & PUSH& && &&&EDI& && && && && &&&&&0x3A489A4: 56& && && && && && & PUSH& && &&&ESI& && && && && &&&&&0x3A489A5: 50& && && && && && & PUSH& && &&&EAX& && && && && &&&&&0x3A489A6: 33C0& && && && && &&&XOR& && && &EAX,EAX& && && && & &&0x3A489A8: 8945F4& && && && && &MOV& && && &DWORD PTR [EBP-0xC],EAX; VAR:0xC&&; end of prologue&&0x3A489AB: 8BF9& && && && && &&&MOV& && && &EDI,ECX& && && && & &&; IL_0000: ldc.i4.1 &&; IL_0001: call&&System.Windows.Forms.Application::SetUnhandledExceptionMode()&&0x3A489AD: B& && && &&&MOV& && && &ECX,0x1& && && && & &&0x3A489B2: FF& && && &CALL& && &&&DWORD PTR [0x4291F98]&&; IL_0006: call&&System.AppDomain::get_CurrentDomain()&&; IL_000B: ldnull &&; IL_000C: ldftn&&Microsoft.MicrosoftMath.Application.AppMain::OnUnhandledException()&&; IL_0012: newobj&&System.UnhandledExceptionEventHandler::.ctor()&&0x3A489B8: B9641BAB03& && && &&&MOV& && && &ECX,0x3AB1B64& && & &&0x3A489BD: E80A9700FD& && && &&&CALL& && &&&0xA520CC& && && && &&&0x3A489C2: 8BF0& && && && && &&&MOV& && && &ESI,EAX& && && && & &&0x3A489C4: FF15F8273701& && && &CALL& && &&&DWORD PTR [0x13727F8]&&0x3A489CA: 8BC8& && && && && &&&MOV& && && &ECX,EAX& && && && & &&0x3A489CC: 8D5604& && && && && &LEA& && && &EDX,[ESI+0x4]& && & &&0x3A489CF: E852B04276& && && &&&CALL& && &&&DllUnregisterServerInternal + 0x0206& && && & ; (0x79E73A26)&&0x3A489D4: C0& && & MOV& && && &DWORD PTR [ESI+0xC],0x392104&&0x3A489DB: B8F8212904& && && &&&MOV& && && &EAX,0x42921F8& && & &&0x3A489E0: 894610& && && && && &MOV& && && &DWORD PTR [ESI+0x10],EAX&&; IL_0017: callvirt&&System.AppDomain::add_UnhandledException()&&0x3A489E3: 8BD6& && && && && &&&MOV& && && &EDX,ESI& && && && & &&0x3A489E5: 8B01& && && && && &&&MOV& && && &EAX,DWORD PTR [ECX] &&0x3A489E7: FF& && && &CALL& && &&&DWORD PTR [EAX+0x120]&&; IL_001C: call&&Microsoft.MicrosoftMath.Controls.ResManager::InitializeMinimum()&&; IL_0021: call&&Microsoft.MicrosoftMath.Controls.ResManager::get_SKU()&&; IL_0026: brfalse.s IL_0039&&; IL_0028: ldstr "EncCalc-"&&; IL_002D: call&&Microsoft.MicrosoftMath.Controls.ResManager::get_SKU()&&; IL_0032: call&&System.String::Concat()&&; IL_0037: br.s IL_003E&&; IL_0039: ldstr "EncCalc"&&; IL_003E: call&&Microsoft.MicrosoftMath.Controls.SingleInstance::set_AppName()&&0x3A489ED: FF& && && &CALL& && &&&DWORD PTR [0x4292580]&&0x3A489F3: 833D& && & CMP& && && &DWORD PTR [0x24F&&0x3A489FA: 7414& && && && && &&&JE& && && & 0x3A48A10& && && &&&; (*+0x16) &&0x3A489FC: 8B0DC8204F02& && && &MOV& && && &ECX,DWORD PTR [0x24F20C8]&&0x3A48A02: 8B& && && &MOV& && && &EDX,DWORD PTR [0x24F3634]&&0x3A48A08: FF15C495A800& && && &CALL& && &&&DWORD PTR [0xA895C4]&&0x3A48A0E: EB06& && && && && &&&JMP& && && &0x3A48A16& && && &&&&&0x3A48A10: 8B05CC204F02& && && &MOV& && && &EAX,DWORD PTR [0x24F20CC]& & & & ; &==0x03A489FA(*-0x16)&&0x3A48A16: 8D& && && &LEA& && && &EDX,[0x24F3460]& &&&& & & & ; &==0x03A48A0E(*-0x8)&&0x3A48A1C: E80FAF4276& && && &&&CALL& && &&&DllUnregisterServerInternal + 0x0110& && && & ; (0x79E73930)&&; IL_0043: ldarg.0 &&; IL_0044: ldc.i4.0 &&; IL_0045: ldc.i4.1 &&; IL_0046: call&&Microsoft.MicrosoftMath.Controls.SingleInstance::CheckSingleInstance()&&; IL_004B: stloc.0 &&0x3A48A21: 6A01& && && && && &&&PUSH& && &&&0x1& && && && && &&&&&0x3A48A23: 8BCF& && && && && &&&MOV& && && &ECX,EDI& && && && & &&0x3A48A25: 33D2& && && && && &&&XOR& && && &EDX,EDX& && && && & &&0x3A48A27: FF& && && &CALL& && &&&DWORD PTR [0x4292830]&&; IL_004C: ldloc.0 &&; IL_004D: ldc.i4.1 &&; IL_004E: bne.un.s IL_0051&&0x3A48A2D: 83F801& && && && && &CMP& && && &EAX,0x1& && && && & &&0x3A48A30: 7505& && && && && &&&JNE& && && &0x3A48A37& && && &&&; (*+0x7) &&; IL_0050: ret &&0x3A48A32: E& && && &&&JMP& && && &0x3A48BBA& && && &&&&&; IL_0051: call&&Microsoft.MicrosoftMath.Application.AppResManager::Initialize()&&0x3A48A37: FF& && && &CALL& && &&&DWORD PTR [0x4292C78]& & & & ; &==0x03A48A30(*-0x7)&&; IL_0056: call&&Microsoft.MicrosoftMath.Application.AppDrawingInfo::Initialize()&&0x3A48A3D: FF& && && &CALL& && &&&DWORD PTR [0x4295288]&&; IL_005B: ldc.i4.0 &&; IL_005C: stloc.1 &&0x3A48A43: 33D2& && && && && &&&XOR& && && &EDX,EDX& && && && & &&0x3A48A45: 8955F4& && && && && &MOV& && && &DWORD PTR [EBP-0xC],EDX; VAR:0xC&&; IL_005D: call&&Microsoft.MicrosoftMath.Controls.ResManager::get_SKU()&&; IL_0062: ldloca.s 0x01&&; IL_0064: call&&Microsoft.MicrosoftMath.Application.NativeMethods::CheckLicenseStatus()&&; IL_0069: ldc.i4.0 &&; IL_006A: ceq &&; IL_006C: ldc.i4.1 &&; IL_006D: ceq &&; IL_006F: call&&Microsoft.MicrosoftMath.Application.AppResManager::set_Activated()&&0x3A48A48: 8B0D34364F02& && && &MOV& && && &ECX,DWORD PTR [0x24F3634]&&0x3A48A4E: 8D55F4& && && && && &LEA& && && &EDX,[EBP-0xC]& && & ; VAR:0xC&&0x3A48A51: E& && && &&&CALL& && &&&0x468C05C& && && &&&&&0x3A48A56: 85C0& && && && && &&&TEST& && &&&EAX,EAX& && && && & &&0x3A48A58: 0F94C2& && && && && &SETZ& && &&&DL& && && && && && &&&0x3A48A5B: 0FB6D2& && && && && &MOVZX& && & EDX,DL& && && && &&&&&0x3A48A5E: & && && &MOV& && && &BYTE PTR [0xA63580],DL&&; IL_0074: call&&Microsoft.MicrosoftMath.Application.AppMain::CheckEula()&&; IL_0079: brtrue.s IL_007C&&0x3A48A64: FF& && && &CALL& && &&&DWORD PTR [0xA63678]&&0x3A48A6A: 85C0& && && && && &&&TEST& && &&&EAX,EAX& && && && & &&0x3A48A6C: 7505& && && && && &&&JNZ& && && &0x3A48A73& && && &&&; (*+0x7) &&; IL_007B: ret &&0x3A48A6E: E& && && &&&JMP& && && &0x3A48BBA& && && &&&&&; IL_007C: call&&Microsoft.MicrosoftMath.Application.AppMain::CheckSQM()&&0x3A48A73: FF& && && &CALL& && &&&DWORD PTR [0xA63674]& & & & ; &==0x03A48A6C(*-0x7)&&; IL_0081: call&&Microsoft.MicrosoftMath.Controls.ResManager::get_AppDirectory()&&; IL_0086: ldstr "MathRichEditNative.dll"&&; IL_008B: call&&System.IO.Path::Combine()&&; IL_0090: call&&Microsoft.MicrosoftMath.Application.AppResManager::VerifyMSCertificate()&&; IL_0095: brtrue.s IL_009C&&0x3A48A79: 8B0D4C364F02& && && &MOV& && && &ECX,DWORD PTR [0x24F364C]&&0x3A48A7F: 8B15EC204F02& && && &MOV& && && &EDX,DWORD PTR [0x24F20EC]&&0x3A48A85: FF15E09C3701& && && &CALL& && &&&DWORD PTR [0x1379CE0]&&0x3A48A8B: 8BC8& && && && && &&&MOV& && && &ECX,EAX& && && && & &&0x3A48A8D: FF15D42C2904& && && &CALL& && &&&DWORD PTR [0x4292CD4]&&0x3A48A93: 85C0& && && && && &&&TEST& && &&&EAX,EAX& && && && & &&0x3A48A95: 7515& && && && && &&&JNZ& && && &0x3A48AAC& && && &&&; (*+0x17) &&; IL_0097: call&&Microsoft.MicrosoftMath.Application.AppResManager::ExitApp()&&0x3A48A97: FF& && && &CALL& && &&&DWORD PTR [0x4291F30]&&0x3A48A9D: FF15B0BD6804& && && &CALL& && &&&DWORD PTR [0x468BDB0]&&0x3A48AA3: 8BC8& && && && && &&&MOV& && && &ECX,EAX& && && && & &&0x3A48AA5: 3909& && && && && &&&CMP& && && &DWORD PTR [ECX],ECX &&0x3A48AA7: E8BC35C400& && && &&&CALL& && &&&0x468C068& && && &&&&&; IL_009C: call&&Microsoft.MicrosoftMath.Application.AppResManager::get_Activated()&&; IL_00A1: brtrue.s IL_00FB&&; IL_00A3: ldnull &&; IL_00A4: stloc.2 &&0x3A48AAC: 803D& && & CMP& && && &BYTE PTR [0xA6& & & & ; &==0x03A48A95(*-0x17)&&0x3A48AB3: 0F& && && &JNE& && && &0x3A48B3C& && && &&&; (*+0x89) &&; IL_00A5: ldsfld&&System.IntPtr::Zero()&&; IL_00AA: ldloc.2 &&; IL_00AB: ldc.i4.0 &&; IL_00AC: ldloc.1 &&; IL_00AD: call&&Microsoft.MicrosoftMath.Controls.ResManager::get_SKU()&&; IL_00B2: call&&Microsoft.MicrosoftMath.Application.NativeMethods::ShowActivationWizard()&&; IL_00B7: stloc.3 &&0x3A48AB9: 6A00& && && && && &&&PUSH& && &&&0x0& && && && && &&&&&0x3A48ABB: FF75F4& && && && && &PUSH& && &&&DWORD PTR [EBP-0xC] ; VAR:0xC&&0x3A48ABE: FF& && && &PUSH& && &&&DWORD PTR [0x24F3634]&&0x3A48AC4: 33D2& && && && && &&&XOR& && && &EDX,EDX& && && && & &&0x3A48AC6: 33C9& && && && && &&&XOR& && && &ECX,ECX& && && && & &&0x3A48AC8: E8AF35C400& && && &&&CALL& && &&&0x468C07C& && && &&&&&; IL_00B8: ldloc.3 &&; IL_00B9: brfalse.s IL_00CB&&0x3A48ACD: 85C0& && && && && &&&TEST& && &&&EAX,EAX& && && && & &&0x3A48ACF: 740E& && && && && &&&JZ& && && & 0x3A48ADF& && && &&&; (*+0x10) &&; IL_00BB: ldloc.3 &&; IL_00BC: ldc.i4 0xC000000C&&; IL_00C1: beq.s IL_00CB&&0x3A48AD1: 3D0C0000C0& && && &&&CMP& && && &EAX,0xC000000C& && &; ERR:STATUS_TIMER_NOT_CANCELED&&0x3A48AD6: 7407& && && && && &&&JE& && && & 0x3A48ADF& && && &&&; (*+0x9) &&; IL_00C3: ldloc.3 &&; IL_00C4: ldc.i4 0xF000000E&&; IL_00C9: bne.un.s IL_00F3&&0x3A48AD8: 3D0E0000F0& && && &&&CMP& && && &EAX,0xF000000E& && &&&0x3A48ADD: 7542& && && && && &&&JNE& && && &0x3A48B21& && && &&&; (*+0x44) &&; IL_00CB: call&&Microsoft.MicrosoftMath.Controls.ResManager::get_SKU()&&; IL_00D0: ldloca.s 0x01&&; IL_00D2: call&&Microsoft.MicrosoftMath.Application.NativeMethods::CheckLicenseStatus()&&; IL_00D7: ldc.i4.0 &&; IL_00D8: ceq &&; IL_00DA: ldc.i4.1 &&; IL_00DB: ceq &&; IL_00DD: call&&Microsoft.MicrosoftMath.Application.AppResManager::set_Activated()&&0x3A48ADF: 8B0D34364F02& && && &MOV& && && &ECX,DWORD PTR [0x24F3634]& & & & ; &==0x03A48ACF(*-0x10), 0x03A48AD6(*-0x9)&&0x3A48AE5: 8D55F4& && && && && &LEA& && && &EDX,[EBP-0xC]& && & ; VAR:0xC&&0x3A48AE8: E86F35C400& && && &&&CALL& && &&&0x468C05C& && && &&&&&0x3A48AED: 85C0& && && && && &&&TEST& && &&&EAX,EAX& && && && & &&0x3A48AEF: 0F94C2& && && && && &SETZ& && &&&DL& && && && && && &&&0x3A48AF2: 0FB6D2& && && && && &MOVZX& && & EDX,DL& && && && &&&&&0x3A48AF5: & && && &MOV& && && &BYTE PTR [0xA63580],DL&&; IL_00E2: ldloc.1 &&; IL_00E3: brtrue.s IL_00FB&&0x3A48AFB: 837DF400& && && && & CMP& && && &DWORD PTR [EBP-0xC],0x0; VAR:0xC&&0x3A48AFF: 753B& && && && && &&&JNE& && && &0x3A48B3C& && && &&&; (*+0x3D) &&; IL_00E5: call&&Microsoft.MicrosoftMath.Application.AppResManager::get_Activated()&&; IL_00EA: brtrue.s IL_00FB&&0x3A48B01: 803D& && & CMP& && && &BYTE PTR [0xA6&&0x3A48B08: 7532& && && && && &&&JNE& && && &0x3A48B3C& && && &&&; (*+0x34) &&; IL_00EC: call&&Microsoft.MicrosoftMath.Application.AppResManager::ExitApp()&&; IL_00F1: br.s IL_00FB&&0x3A48B0A: FF& && && &CALL& && &&&DWORD PTR [0x4291F30]&&0x3A48B10: FF15B0BD6804& && && &CALL& && &&&DWORD PTR [0x468BDB0]&&0x3A48B16: 8BC8& && && && && &&&MOV& && && &ECX,EAX& && && && & &&0x3A48B18: 3909& && && && && &&&CMP& && && &DWORD PTR [ECX],ECX &&0x3A48B1A: E& && && &&&CALL& && &&&0x468C068& && && &&&&&0x3A48B1F: EB1B& && && && && &&&JMP& && && &0x3A48B3C& && && &&&&&; IL_00F3: ldloc.1 &&; IL_00F4: brtrue.s IL_00FB&&0x3A48B21: 837DF400& && && && & CMP& && && &DWORD PTR [EBP-0xC],0x0; VAR:0xC& & & & ; &==0x03A48ADD(*-0x44)&&0x3A48B25: 7515& && && && && &&&JNE& && && &0x3A48B3C& && && &&&; (*+0x17) &&; IL_00F6: call&&Microsoft.MicrosoftMath.Application.AppResManager::ExitApp()&&0x3A48B27: FF& && && &CALL& && &&&DWORD PTR [0x4291F30]&&0x3A48B2D: FF15B0BD6804& && && &CALL& && &&&DWORD PTR [0x468BDB0]&&0x3A48B33: 8BC8& && && && && &&&MOV& && && &ECX,EAX& && && && & &&0x3A48B35: 3909& && && && && &&&CMP& && && &DWORD PTR [ECX],ECX &&0x3A48B37: E82C35C400& && && &&&CALL& && &&&0x468C068& && && &&&&&; IL_00FB: ldnull &&; IL_00FC: ldftn&&Microsoft.MicrosoftMath.Application.AppMain::OnApplicationExit()&&; IL_0102: newobj&&System.EventHandler::.ctor()&&0x3A48B3C: B9841CAB03& && && &&&MOV& && && &ECX,0x3AB1C84& && & & & & & ; &==0x03A48B1F(*-0x1D), 0x03A48B25(*-0x17), 0x03A48B08(*-0x34), 0x03A48AB3(*-0x89), 0x03A48AFF(*-0x3D)&&0x3A48B41: E8869500FD& && && &&&CALL& && &&&0xA520CC& && && && &&&0x3A48B46: 8BC8& && && && && &&&MOV& && && &ECX,EAX& && && && & &&0x3A48B48: 8D5104& && && && && &LEA& && && &EDX,[ECX+0x4]& && & &&0x3A48B4B: E809AE4276& && && &&&CALL& && &&&DllUnregisterServerInternal + 0x0139& && && & ; (0x79E73959)&&0x3A48B50: C0& && & MOV& && && &DWORD PTR [ECX+0xC],0x392104&&0x3A48B57: B& && && &&&MOV& && && &EAX,0x4295568& && & &&0x3A48B5C: 894110& && && && && &MOV& && && &DWORD PTR [ECX+0x10],EAX&&; IL_0107: call&&System.Windows.Forms.Application::add_ApplicationExit()&&0x3A48B5F: FF15D81E2904& && && &CALL& && &&&DWORD PTR [0x4291ED8]&&; IL_010C: ldnull &&; IL_010D: ldftn&&Microsoft.MicrosoftMath.Application.AppMain::OnApplicationIdle()&&; IL_0113: newobj&&System.EventHandler::.ctor()&&0x3A48B65: B9841CAB03& && && &&&MOV& && && &ECX,0x3AB1C84& && & &&0x3A48B6A: E85D9500FD& && && &&&CALL& && &&&0xA520CC& && && && &&&0x3A48B6F: 8BC8& && && && && &&&MOV& && && &ECX,EAX& && && && & &&0x3A48B71: 8D5104& && && && && &LEA& && && &EDX,[ECX+0x4]& && & &&0x3A48B74: E8E0AD4276& && && &&&CALL& && &&&DllUnregisterServerInternal + 0x0139& && && & ; (0x79E73959)&&0x3A48B79: C0& && & MOV& && && &DWORD PTR [ECX+0xC],0x392104&&0x3A48B80: B& && && &&&MOV& && && &EAX,0x4295578& && & &&0x3A48B85: 894110& && && && && &MOV& && && &DWORD PTR [ECX+0x10],EAX&&; IL_0118: call&&System.Windows.Forms.Application::add_Idle()&&0x3A48B88: FF15F01E2904& && && &CALL& && &&&DWORD PTR [0x4291EF0]&&; IL_011D: call&&System.Windows.Forms.Application::EnableVisualStyles()&&0x3A48B8E: FF& && && &CALL& && &&&DWORD PTR [0x4291F24]&&; IL_0122: newobj&&Microsoft.MicrosoftMath.Application.MainForm::.ctor()&&; IL_0127: stloc.s 0x04&&0x3A48B94: B& && && &&&MOV& && && &ECX,0x4684F14& && & &&0x3A48B99: E& && && &&&CALL& && &&&LogHelp_TerminateOnAssert + 0x8054& && && & ; (0x79E8E0A4)&&0x3A48B9E: 8BF0& && && && && &&&MOV& && && &ESI,EAX& && && && & &&0x3A48BA0: 8BCE& && && && && &&&MOV& && && &ECX,ESI& && && && & &&0x3A48BA2: E8E134C400& && && &&&CALL& && &&&0x468C088& && && &&&&&; IL_0129: ldloc.s 0x04&&; IL_012B: ldarg.0 &&; IL_012C: callvirt&&Microsoft.MicrosoftMath.Application.MainForm::SetCommandArgs()&&0x3A48BA7: 8BD7& && && && && &&&MOV& && && &EDX,EDI& && && && & &&0x3A48BA9: 8BCE& && && && && &&&MOV& && && &ECX,ESI& && && && & &&0x3A48BAB: 3909& && && && && &&&CMP& && && &DWORD PTR [ECX],ECX &&0x3A48BAD: E8EA34C400& && && &&&CALL& && &&&0x468C09C& && && &&&&&; IL_0131: ldloc.s 0x04&&; IL_0133: call&&System.Windows.Forms.Application::Run()&&0x3A48BB2: 8BCE& && && && && &&&MOV& && && &ECX,ESI& && && && & &&0x3A48BB4: FF& && && &CALL& && &&&DWORD PTR [0x4291F84]&&; IL_0138: ret &&0x3A48BBA: 6A00& && && && && &&&PUSH& && &&&0x0& && && && && &&&& & & & ; &==0x03A48A6E(*-0x14C), 0x03A48A32(*-0x188)&&0x3A48BBC: 6A00& && && && && &&&PUSH& && &&&0x0& && && && && &&&&&0x3A48BBE: 6A00& && && && && &&&PUSH& && &&&0x0& && && && && &&&&&0x3A48BC0: & && && &&&PUSH& && &&&0xA63600& && && && &&&0x3A48BC5: E8E6845B0C& && && &&&CALL& && &&&0x& && && & &&0x3A48BCA: 59& && && && && && & POP& && && &ECX& && && && && &&&&&0x3A48BCB: 5E& && && && && && & POP& && && &ESI& && && && && &&&&&0x3A48BCC: 5F& && && && && && & POP& && && &EDI& && && && && &&&&&0x3A48BCD: 5D& && && && && && & POP& && && &EBP& && && && && &&&&&0x3A48BCE: C3& && && && && && & RET& && && && && && && && && &&&简直是字节码和翻译的二进制代码一一对应,太~~~~~~~~~让人兴奋了,对于.NET程序似乎更有信心了。[第三部分]&&出彩之处就在那么一点想了很久如何去打补丁,用OD的ODBGScript脚本倒是很方便,但谁用程序的时候还开个OD呀!思路在一瞬间打开了,就从那个进入CheckLicenseStatus函数首地址时堆栈指示开始,跳到找到的空白地址,记录下当前ESP,然后修改它为[ESP]--〉[ESP]-5为什么是-5呢,因为MOV EAX,1对应的二进制串:B也就是通过直接修改MathRichEditNative.dll来间接修改MATHAPP.EXE动态申请的内存,使得返回时不是到原来的00A7B2B1,而是00A7B2AC=00A7B2B1-5使得**********************************前面第一部分提到的*************************************00A7B2AF& & FF10& && && && && & call& & dword ptr [eax]00A7B2B1& & C643 08 01& && && & mov& &&&byte ptr [ebx+8], 1//在OllyICE中手动修改EAX=1,函数返回真,程序变成已经激活!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//---------------------------------------但如何修改呢?请注意这里是动态申请的内存空间00A7B2B5& & 833D F& & cmp& &&&dword ptr [7A3817F0], 0*****************************************************************************************变为**********************************前面第一部分提到的*************************************00A7B2AC& & B8 & && && &mov& & & & eax,1& & & & & & & & & & & & //返回这里!!!!!!!!00A7B2B1& & C643 08 01& && && & mov& &&&byte ptr [ebx+8], 100A7B2B5& & 833D F& & cmp& &&&dword ptr [7A3817F0], 0*****************************************************************************************爆破方法:只要修改MathRichEditNative.dll相关代码&第一处&4745650C &/$&&51& && && && &&&push& & ecx4745650D&&|.&&8D6424 FC& && & lea& &&&esp, dword ptr [esp-4]&&|.&&890C24& && && & mov& &&&dword ptr [esp], ecx===&修改为4745650C && &/E9 3F3A0D00& &&&jmp& &&&47529F50&&|. |890C24& && && & mov& &&&dword ptr [esp], ecx&第二处&DLL领空末尾空白:47529F50& && &51& && && && &&&push& & ecx47529F51& && &50& && && && &&&push& & eax47529F52& && &8D4424 08& && & lea& &&&eax, dword ptr [esp+8]47529F56& && &8B08& && && && &mov& &&&ecx, dword ptr [eax]47529F58& && &83C1 FB& && && &add& &&&ecx, -547529F5B& && &8908& && && && &mov& &&&dword ptr [eax], ecx47529F5D& && &C701 B8010000& &mov& &&&dword ptr [ecx], 1B847529F63& && &C641 04 00& && &mov& &&&byte ptr [ecx+4], 047529F67& && &58& && && && &&&pop& &&&eax47529F68& && &59& && && && &&&pop& &&&ecx47529F69& && &51& && && && &&&push& & ecx47529F6A& && &8D6424 FC& && & lea& &&&esp, dword ptr [esp-4]47529F6E& & ^ E9 9EC5F2FF& &&&jmp& &&&二进制:51 50 8D 44 24 08 8B 08 83 C1 FB 89 08 C7 01 B8 01 00 00 C6 41 04 00 58 59 51 8D 64 24 FC E9 9E C5 F2 FF复制保存替换原MathRichEditNative.dll文件。退出OLLYDBG,运行程序,现在没有30天试用提示要你激活的NAG了。[总结]程序破解了,补丁看来也要有技巧;.NET程序强名保护的问题没有解决。
好东西要珍藏,收下礼物要谢谢
ekinglong12:45 PM
如果你不懂.net逆向,又对它感兴趣,又不靠破程序吃饭,请进!先声明,偶既不是专业程序员,从事的工作也和IT毫无关系,只是有兴趣时就看一点逆向的东东,纯粹是当游戏。所以各位大牛不用以专业的眼光来审视偶写的文章及偶做的工作。偶接触.net可能比某些新手早些,为了让对.net逆向有兴趣的朋友少走弯路,特写此文。1、从哪儿着手& 要想逆,首先对写程序多少要有点了解。因此,偶觉得掌握一门高级的.net编程语言是必须的,一般都是C#、VC.net或VB.net。不必程序编得很好,但至少流程要看得懂吧。这类书很多,找本入门的看看既可。然后,就得了解.net运行的基本机制了,类似于win32下ring3层必须要了解线程啊、进程啊、断点啊之类的,.net下也必须了解一些最基本的运行机制。(后面还要介绍一些更底层的机制,类似于win32下的rootkit,属于.net中的ring0)。& 就像win32下逆向要学asm一样,.net下也必须掌握MSIL,这是.net下的汇编语言。与asm比起来,IL的语法简单的多,会很快掌握的。还有一个很重要的,就是.net下PE的结构。这里讲的PE结构,和win32下也不同,指的是一种叫元数据的结构(Metadata),.net下程序集的信息都以各种形式的Metadata存储在文件中。了解了元数据的结构,对于了解.net下的各种运行机制(比如名称混淆)都很有帮助。& 下面给出几本资料,有的有中文译本,但毕竟.net是人家微软的东东,所以还是英文资料多(网上均可下)。不要求每本看完,但求用时有地方查:Applied Microsoft .NET Framework Programming(Microsoft Press)Inside Microsoft .NET IL Assembler (Microsoft Press).Net Framework Essentials(O'Reilly)The Common Language Infrastructure Annotated Standard(Addison Wesley)Understanding .NET, Second Edition(Addison Wesley)2、用哪些工具& 如果上面书都看完了(不会吧,你全都看完了?天才啊!),下面开始动手了。搞破解逆向玩儿的谁没几个用得得心应手的工具。下面我按分类列一些我用的多点的工具,不求全,但求精。2.1 程序设计& 最好用的就是VS.net 了,配合上VisualAssist,程序设计就不愁了。买(或下)一个VS套装,里面包含了.Net SDK和VS的IDE。2.2 编译& 当然,如果是只有几行代码的小程序,C#的便可以用CSC.exe编译,IL代码的可以直接用ILASM编译。2.3 反编译& 这是逆向中最基本也可以说是最重要的一环,微软的东东往往是最基本也最不可或缺少的,SDK中自带的ildasm.exe。& 再就是一些第三方开发的反编译软件,最好用的莫过于Reflector(能在PEDIY里搜到的就不再贴链接了),当然,也因为它被使用的最广,现在越来越多anti的手段了,但仍是必不可少。& Decompiler .Net 2005是另一个功能比较强的软件,但偶用的不多。还有就是Xenocode Fox。IDApro在win32是相当好用,可惜在.net下其应用性实在是大打折扣。2.4 调试& 调试一直是.net下的弱项。其实不是弱,只是比起win32下起来,用户可做的感觉没那么多,没那么底层,操作习惯也是大有改变。& 如果编程中的调试,用VS.net自带的调试功能既可,非常方便的。& 对于无源码的程序要调试,可以用ildasm反汇编至il,再带/debug编译成exe文件,这样可以用SDK安装目录下的GuiDBG进行调试。不过现在这种可能性越来越少,比如最简单的混淆成不可见字符的.net程序集,在编译回去时会报错。& 如果直接调试,偶知道的目前唯一好用的就是PEBrowse的软件。关于它的使用坛里有文章,对于大多数.net程序确实是一把利剑,强烈推荐大家使用。& 我没说Ollydbg和Windbg不能用啊,只是调试起来不是很直观,不太方便。但仍有不少好例子,比如Flier大牛写的《用WinDbg探索CLR世界》,对.net不是了解到一定层次是写不出这种文章的。2.5 混淆与反混淆& 混淆的东西太多,只举几个有代表性的。偶知道的第一个混淆器就是VS.net自带的Dotfuscator的演示版,只是将有意义的字符变为几个简短的数字,谈不上什么强度。& 另一个比较有名的就是Xenocode的混淆,文件名变为长长的字母加数字。不过说实话,这样搞还不如前面说的混淆成简短数字来的有效。但是它还有一个功能就是流程混淆(好像是它的功能,没有验证),类似于win32下的花指令,并且这种方法是对付Reflector静态反编译的有效利器。& 再就是Spices.net出的混淆器了,将字符串加密为不可见字符,在Reflector里看到的都是方框。这种相对恼火一些,但这种混淆再强,只要花了足够的时间,总是可以找到关键的代码的。2.6 加壳& 加壳是win32下很普遍的做法了,但在.net下还不是很多。同样,分两种,压缩壳和加密壳。压缩壳不多说了,只说加密壳。比较好的是MaxtoCode和Remotesoft Protector,这两个壳相当于在.net和windows中添加了个过滤层,将源代码加密存储,动态解密执行,现在还没有较好的方法应付,也或者是有了但没公开。(当然,除了JasonNET大牛了,呵呵)3 & .net的核心& 这里讲讲前文提到的.net下的ring0,说白了三大块,Profiler、Debugger和Metadata。当你爆破过N个程序后,会感觉到止步不前,这时你就要考虑下看看更深层次的东西了。这些文档在.Net v1.1中的目录是\Microsoft.NET\SDK\v1.1\Tool Developers Guide\docs,V2.0的文档已经被移到MSDN了。不过微软的开发手册更适合当资料查,还是看一些tutorial入门快些。这里给出一些文献,全都在MSDN中和google中可以搜到,大家一同学吧。虽然如lccracker所说,是别人数年前的东西,但还是得看啊(加红色为我已看过并强力推荐先阅读的):dotNET Internals The Profiling APIDrill Into .NET Framework Internals to See How the CLR Creates Runtime ObjectsExamine Running Processes Using Both Managed and Unmanaged CodeImprove Your Understanding of .NET Internals by Building a Debugger for Managed CodeRewrite MSIL Code on the Fly with the .NET Framework Profiling APIThe .NET Profiling API and the DNProfiler ToolTracing APIs in .NET Framework 2.0Write Profilers With Ease Using High-Level Wrapper Classes在 .NET Framework 2.0 中,没有任何代码能够逃避 Profiling API 的分析使用 .NET Profiler API 检查并优化程序的内存使用.NET Framework Developer Center CLR Run-Time Breaking ChangesModifying IL at runtimeAn Overview of Managed Unmanaged Code InteroperabilityBuild a Logging and Event Viewing Library to Help Debug Your .NET Framework based AppTaming the CLR: How to Write Real-Time Managed CodeUsing the Profiling API Enter/Leave Function HooksWriting High-Performance Managed Applications上面这些是文章,还有一本书也涉及到这方面内容,非常值得一看。[B]Debugging Applications for Microsoft .NET and Microsoft Windows(MS Press)[/B]4 .net破解的层次& 这不是权威的层次划分,纯属搞笑,大家请勿对号入座。& 第一层自然是静态分析加爆破了,用Reflector看程序的源码,搜索关键字符以找到注册码的比较代码,最简单的跳转指令修改,将br.true和br.false互改,这是人生必须经过的阶段。& 第二层,仍是静态分析,但是找到了注册码计算的代码,并且会将这些代码粘贴到自己的程序中,写个小的keygen。& 第三层,能熟练运用动态调试工具对.net程序集进行调试,能下关键的断点,动静结合并更容易的写出注册机(复杂的算法除外)。& 第四层,能更精妙地运用已有的Profiler或Debugger,甚至写个自己的小Profiler或Debugger,在.net的核心层上对程序进行分析。& 第五层,在.net中绝对属于大牛类型,对.net内核极其清楚,能编写程序干预.net与windows的通讯,能将win32的技术运用到.net的保护中,从而破解(或编写)加解密程序。最后:写这篇文章就像搞逆向破解,反正又不靠它吃饭,纯粹是玩儿。所以你看时也别当真,就当小说吧,虽然没啥情节!
第二部分,用二进制编辑器010Editor搜索:
FE0128
查到两处,只改第一处即可使AppResManager.Activated为真。
这里是什么原理,搜索到怎么改,为什么可使为真呢?&&&&

我要回帖

更多关于 注册机 的文章

 

随机推荐