青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

jans2002的博客

專注 專心 專業(yè)

菜鳥(niǎo)對(duì)AspectC++ Add-In for Microsoft® Visual C++®插件的破解過(guò)程

AspectC++ Add-In for Microsoft® Visual C++®
http://www.pure-systems.com/fileadmin/downloads/acaddin/Aspectc-AddIn-Setup-010101.exe
我用的是VS2003環(huán)境
調(diào)試目標(biāo):C:\Program Files\pure-systems\AspectC++ Add-In\bin\CPPAddin.dll
工具:用OD調(diào)試,IDA+Hex-rays分析
重點(diǎn)集中在以下幾個(gè)地址
0x10008e60 彈許可文件詢問(wèn)的對(duì)話框
0x10017a20 解析xml格式的許可文件
0x10017730 貌似許可檢查的地方
這個(gè)是
0x10008e60的由Hex-ray分析出來(lái)的偽代碼,

代碼:

char __usercall sub_1000E860<al>(int a1<ebx>)
{
  int ST14_4_0; // ST14_4@0
  int v2; // ST10_4@1
  const CHAR *v3; // eax@3
  const CHAR *v4; // eax@10
  int v6; // eax@2
  char v7; // bl@2
  char v8; // al@9
  int v9; // [sp+Ch] [bp-9Ch]@1
  signed int v10; // [sp+A4h] [bp-4h]@1
  char v11; // [sp+10h] [bp-98h]@1
  char v12; // [sp+48h] [bp-60h]@2
  char v13; // [sp+2Ch] [bp-7Ch]@2
  LPCSTR lpText; // [sp+14h] [bp-94h]@3
  unsigned int v15; // [sp+28h] [bp-80h]@3
  char v16; // [sp+64h] [bp-44h]@15

  BYTE3(v9) = 0;
  sub_10016AA0();
  v10 = 0;
  std__basic_string_char_std__char_traits_char__std__allocator_char____basic_string_char_std__char_traits_char__std__allocator_char__(&v11);
  LOBYTE(v10) = 1;
  v2 = a1;
  while ( 1 )
  {
    sub_100169B0(16, (int)&v12);
    LOBYTE(v10) = 2;
    v6 = std__operator_(&v13, v6, "\\etc\\licence");
    LOBYTE(v10) = 3;
    v7 = sub_10017A20((int)&unk_10024460, v6, (int)&v11) == 0;
    LOBYTE(v10) = 2;
    std__basic_string_char_std__char_traits_char__std__allocator_char_____basic_string_char_std__char_traits_char__std__allocator_char__(&v13);
    LOBYTE(v10) = 1;
    std__basic_string_char_std__char_traits_char__std__allocator_char_____basic_string_char_std__char_traits_char__std__allocator_char__(&v12);
    if ( !v7 )
      break;
    std__basic_string_char_std__char_traits_char__std__allocator_char____operator__(
      &v11,
      "\nThe add-in will not work without a valid licence.\n\nInstall the licence file now?",
      v2);
    v3 = lpText;
    if ( v15 < 0x10 )
      v3 = (const CHAR *)&lpText;
    if ( MessageBoxA(0, v3, "AspectC++ Add-In for Visual Studio .NET", 0x24u) != 6 )
      break;
    if ( !sub_1000E690() )
    {
      MessageBoxA(0, "Installation of licence file failed.", "AspectC++ Add-In", 0x40u);
      break;
    }
  }
  if ( byte_10024465 )
  {
    sub_10017730((int)&unk_10024460, 16, (int)&v11);
    if ( v8 && (unsigned __int8)sub_10017520(&v11) != 1 )
    {
      BYTE3(v9) = 1;
    }
    else
    {
      std__basic_string_char_std__char_traits_char__std__allocator_char____operator__(
        &v11,
        "\nThe add-in will not work.",
        ST14_4_0);
      v4 = lpText;
      if ( v15 < 0x10 )
        v4 = (const CHAR *)&lpText;
      MessageBoxA(0, v4, "AspectC++ Add-In", 0x40u);
    }
  }
  LOBYTE(v10) = 0;
  std__basic_string_char_std__char_traits_char__std__allocator_char_____basic_string_char_std__char_traits_char__std__allocator_char__(&v11);
  v10 = -1;
  sub_10016910((int)&v16);
  return BYTE3(v9);
}
 

基本上可以得出默認(rèn)是分析
C:\Program Files\pure-systems\AspectC++ Add-In\etc\licence 許可文件
分析過(guò)程應(yīng)該在0x10017a20里

代碼:

char __thiscall sub_10017A20(int this, int a2, int a3)
{
  int v3; // ebp@1
  int v4; // esi@1
  int v5; // eax@2
  int v6; // eax@4
  int v7; // edi@5
  char result; // al@8
  int v9; // ecx@1
  int v10; // eax@5
  int v11; // eax@6
  int v12; // ST04_4@6
  char v13; // bl@6
  char v14; // [sp+Ch] [bp-28h]@6
  signed int v15; // [sp+30h] [bp-4h]@6

  v3 = a3;
  v4 = this;
  v9 = this + 96;
  *(_DWORD *)v9 = 0;
  *(_DWORD *)(v9 + 4) = 0;
  *(_DWORD *)(v9 + 8) = 0;
  *(_DWORD *)(v9 + 12) = 0;
  *(_BYTE *)(v4 + 5) = 0;
  std__basic_string_char_std__char_traits_char__std__allocator_char____operator_(v3, "Loading licence file failed.");
  if ( *(_DWORD *)(a2 + 24) < 0x10u )
    v5 = a2 + 4;
  else
    v5 = *(_DWORD *)(a2 + 4);
  v6 = xmlParseFile(v5);
  *(_DWORD *)v4 = v6;
  if ( v6
    && (v10 = xmlDocGetRootElement(v6), v7 = v10, v10)
    && (v11 = std__basic_string_char_std__char_traits_char__std__allocator_char____basic_string_char_std__char_traits_char__std__allocator_char__(
                &v14,
                "licence"), v12 = *(_DWORD *)(v7 + 8), v15 = 0, v13 = std__operator__(v11, v12), v15 = -1, std__basic_string_char_std__char_traits_char__std__allocator_char_____basic_string_char_std__char_traits_char__std__allocator_char__(&v14), v13)
    && sub_10017930(v7) )
  {
    *(_BYTE *)(v4 + 5) = 1;
    sub_10017730(v4, v3, v3);
    result = 1;
  }
  else
  {
    result = 0;
  }
  return result;
}

這是0x10017730的過(guò)程

代碼:

void __userpurge sub_10017730(int this<ecx>, int ebp0<ebp>, int a2)
{
  int ST18_4_0; // ST18_4@0
  int ST1C_4_0; // ST1C_4@0
  int v5; // esi@1
  signed int v6; // eax@4
  int v7; // ST18_4@6
  int v8; // eax@20
  int v9; // eax@4
  int v10; // ST1C_4@12
  int v11; // ST1C_4@18
  int  r; // [sp+60h] [bp+0h]@1
  int v13; // [sp+50h] [bp-10h]@1
  signed int v14; // [sp+5Ch] [bp-4h]@3
  char v15; // [sp+34h] [bp-2Ch]@4
  char v16; // [sp+18h] [bp-48h]@4
  int v17; // [sp+1Ch] [bp-44h]@12
  unsigned int v18; // [sp+30h] [bp-30h]@20
  int v19; // [sp+2Ch] [bp-34h]@22

  v5 = this;
  v13 =  r ^ dword_100242D0;
  std__basic_string_char_std__char_traits_char__std__allocator_char____operator_(a2, "Invalid licence file found.");
  if ( *(_BYTE *)(v5 + 5) && !*(_BYTE *)(v5 + 4) )
  {
    sub_10017B20((int)&a2, ebp0);
    v14 = 0;
    if ( !sub_1001A050((int)&a2) )
    {
LABEL_23:
      v14 = -1;
      sub_1001A060(&a2);
      goto LABEL_24;
    }
    v9 = std__operator_(&v15, v5 + 12, v5 + 40);
    LOBYTE(v14) = 1;
    std__operator_(&v16, v9, v5 + 68);
    LOBYTE(v14) = 3;
    std__basic_string_char_std__char_traits_char__std__allocator_char_____basic_string_char_std__char_traits_char__std__allocator_char__(&v15);
    v6 = *(_DWORD *)(v5 + 8);
    if ( v6 || !*(_DWORD *)(v5 + 96) )
    {
      if ( v6 == 1 && *(_DWORD *)(v5 + 96) && *(_DWORD *)(v5 + 100) && *(_DWORD *)(v5 + 104) && *(_DWORD *)(v5 + 108) )
      {
        std__basic_string_char_std__char_traits_char__std__allocator_char____operator__(&v16, "evaluation", ST18_4_0);
        std__basic_string_char_std__char_traits_char__std__allocator_char____operator__(
          &v17,
          *(_DWORD *)(v5 + 96),
          ST1C_4_0);
        std__basic_string_char_std__char_traits_char__std__allocator_char____operator__(
          &v17,
          *(_DWORD *)(v5 + 100),
          v10);
        std__basic_string_char_std__char_traits_char__std__allocator_char____operator__(
          &v17,
          *(_DWORD *)(v5 + 104),
          ST1C_4_0);
        v7 = *(_DWORD *)(v5 + 108);
      }
      else
      {
        if ( v6 != 2
          || !*(_DWORD *)(v5 + 96)
          || !*(_DWORD *)(v5 + 100)
          || !*(_DWORD *)(v5 + 104)
          || !*(_DWORD *)(v5 + 108) )
          goto LABEL_20;
        std__basic_string_char_std__char_traits_char__std__allocator_char____operator__(&v16, "user", ST18_4_0);
        std__basic_string_char_std__char_traits_char__std__allocator_char____operator__(
          &v17,
          *(_DWORD *)(v5 + 96),
          ST1C_4_0);
        std__basic_string_char_std__char_traits_char__std__allocator_char____operator__(
          &v17,
          *(_DWORD *)(v5 + 100),
          v11);
        std__basic_string_char_std__char_traits_char__std__allocator_char____operator__(
          &v17,
          *(_DWORD *)(v5 + 104),
          ST1C_4_0);
        v7 = *(_DWORD *)(v5 + 108);
      }
    }
    else
    {
      std__basic_string_char_std__char_traits_char__std__allocator_char____operator__(&v16, "beta", ST18_4_0);
      v7 = *(_DWORD *)(v5 + 96);
    }
    std__basic_string_char_std__char_traits_char__std__allocator_char____operator__(&v17, v7, ST1C_4_0);
LABEL_20:
    v8 = v17;
    if ( v18 < 0x10 )
      v8 = (int)&v17;
    *(_BYTE *)(v5 + 4) = sub_10019E30(v5 + 112, v8, v19, (int)&a2);
    LOBYTE(v14) = 0;
    std__basic_string_char_std__char_traits_char__std__allocator_char_____basic_string_char_std__char_traits_char__std__allocator_char__(&v16);
    goto LABEL_23;
  }
LABEL_24:
  sub_1001A7B0( r ^ v13, ebp0);
}

 

昨天我自己調(diào)試的時(shí)候也犯了一個(gè)錯(cuò)誤,就是調(diào)試CppAddin.dll很痛苦,浪費(fèi)不少時(shí)間和分散很多的精力,中間老是受到Va_X.dll的干擾,而且msdev.exe在CppAddin沒(méi)加載時(shí)沒(méi)法直接下斷點(diǎn),必須得在OD中設(shè)置一個(gè)新模塊加載的斷點(diǎn)(選項(xiàng)->調(diào)試選項(xiàng)->事件->中斷于新模塊),這樣下來(lái),每次調(diào)試失敗后重啟的過(guò)程很是漫長(zhǎng),浪費(fèi)了不少時(shí)間,發(fā)帖子的求助的時(shí)候,我為了大大們給我能方便的解決問(wèn)題,盡量把非技術(shù)問(wèn)題都試驗(yàn)了一下,以免大大們被這些問(wèn)題困住了,一怒之下不給我管我了。但是這樣一來(lái),也為我自己解決和發(fā)現(xiàn)問(wèn)題加快了速度。
總結(jié)一下:
    1.解決問(wèn)題要東方不亮,西方亮,不要將自己精力消耗在遠(yuǎn)離問(wèn)題本身的地方
    2.堅(jiān)持就是勝利,哪怕是菜鳥(niǎo),不懂多少匯編(看代碼還得靠偉大、光榮、正確的F5),也能取得成績(jī)
下面寫(xiě)寫(xiě)分析過(guò)程:
其實(shí)昨天已經(jīng)找到了關(guān)鍵的過(guò)程,那就是0x10017a20,這里面就是分析xml格式的許可文件
這里面有兩個(gè)調(diào)用,sub_10017930()和 sub_10017730()
大概可以看得出來(lái),sub_10017930參與了xml格式的許可數(shù)據(jù)的解析過(guò)程,它調(diào)用成功之后,才調(diào)用10017730對(duì)數(shù)據(jù)進(jìn)行驗(yàn)證,要分析許可數(shù)據(jù)格式,必須研究10017930

代碼:

char __stdcall sub_10017930(int a1)
{
  int v1; // ebp@1
  int v2; // esi@1
  int v3; // esi@3
  char result; // al@7
  int v5; // eax@1
  int v6; // eax@2
  char v7; // bl@2
  char v8; // [sp+Ch] [bp-28h]@2
  signed int v9; // [sp+30h] [bp-4h]@2

  v1 = a1;
  v5 = xmlGetProp(a1, "version");
  v2 = v5;
  if ( v5
    && (v6 = std__basic_string_char_std__char_traits_char__std__allocator_char____basic_string_char_std__char_traits_char__std__allocator_char__(
               &v8,
               L"1"), v9 = 0, v7 = std__operator__(v6, v2), v9 = -1, std__basic_string_char_std__char_traits_char__std__allocator_char_____basic_string_char_std__char_traits_char__std__allocator_char__(&v8), v7) )
  {
    v3 = *(_DWORD *)(v1 + 12);
    result = (unsigned __int8)sub_10016D60(*(_DWORD *)(v1 + 12))
          && (unsigned __int8)sub_10016E70(v3)
          && (unsigned __int8)sub_10017570(v3)
          && (unsigned __int8)sub_100172C0(v3);
  }
  else
  {
    result = 0;
  }
  return result;
}

在這里面取了xml的一個(gè)屬性值version,并且還有四個(gè)都不能失敗的過(guò)程:
10016d60  取product 元素
10016e70  取creation 元素
10017570  取type元素
100172c0  取signature元素
為了熟悉libxml,我特意編寫(xiě)了一段典型libxml用法,并分析了其反向工程后的代碼,

代碼:

 xmlDocPtr doc = NULL;
  xmlNodePtr cur = NULL;
  string filename("test.xml");
  doc = xmlParseFile(filename.c_str());
  cur = xmlDocGetRootElement(doc);
  if (xmlStrcmp(cur->name, BAD_CAST "licence")) 
  {

    fprintf(stderr,"document of the wrong type, root node != mail"); 

    xmlFreeDoc(doc); 

    /*return -1; */

  } 
  cur = cur->xmlChildrenNode;
  xmlNodePtr propNodePtr = cur;
  while(cur != NULL) 
  {   
    //¨¨?3??¨²¦Ì??D¦Ì??¨²¨¨Y
    if ((!xmlStrcmp(cur->name, (const xmlChar *)"product"))) 
    {
        
          string name;
          string version;
          xmlChar* szAttr = xmlGetProp(cur,BAD_CAST "name"); 

          name=(char*)szAttr;

          szAttr=xmlGetProp(cur,BAD_CAST "version");

          version=(const char *)szAttr;
          cout<<"Name:"<<name<<" Version:"<<version<<endl;


          
          xmlFree(szAttr);                      
    }
    cur=cur->next;
  }


    

  xmlFreeDoc(doc);
  /*return 0;*/

得出的結(jié)論是,凡是屬性值的獲取,都會(huì)調(diào)用xmlGetProp,而子元素的獲取則是通過(guò)直接訪問(wèn)內(nèi)存結(jié)構(gòu)或者類似c++的函數(shù)訪問(wèn),不會(huì)看到函數(shù)名稱的引用,根據(jù)這一結(jié)論和具體的調(diào)試,大致推出來(lái)licence文件的結(jié)構(gòu)如下:

代碼:

<?xml version="1.0" encoding="UTF-8"?>
<licence version="1">
<product name="aspect" version="1.0"/>
<product name="pointcut" version="1.0" />
<product name="advice"  version="1.0" />
<product name="slice"  version="1.0" />
<creation date="2009-8-13"/>
<type name="user">
<data code="xxxx" name="jans2002" email="jans2002@gmail.com" regnr="ccccc"/>
</type>
<signature sign="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" />
</licence>

 

有了這個(gè)licence文件,把它放到
C:\Program Files\pure-systems\AspectC++ Add-In\etc\目錄下
一切問(wèn)題就變得簡(jiǎn)單了,順利執(zhí)行完了0x10017930,一路殺到0x10017730

代碼:

int __thiscall sub_10017730(int this, int a2)
{
  int v2; // esi@1
  signed int v3; // eax@4
  int v4; // ST14_4@6
  int v5; // eax@20
  int v7; // eax@4
  int  r; // [sp+4Ch] [bp+0h]@1
  int v9; // [sp+3Ch] [bp-10h]@1
  signed int v10; // [sp+48h] [bp-4h]@3
  char v11; // [sp+20h] [bp-2Ch]@4
  char v12; // [sp+4h] [bp-48h]@4
  int v13; // [sp+8h] [bp-44h]@20
  unsigned int v14; // [sp+1Ch] [bp-30h]@20
  int v15; // [sp+18h] [bp-34h]@22

  v2 = this;
  v9 =  r ^ dword_100242D0;
  std__basic_string_char_std__char_traits_char__std__allocator_char____operator_(a2, "Invalid licence file found.");
  if ( *(_BYTE *)(v2 + 5) && !*(_BYTE *)(v2 + 4) )
  {
    sub_10017B20();
    v10 = 0;
    if ( !(unsigned __int8)sub_1001A050() )
    {
LABEL_23:
      v10 = -1;
      sub_1001A060();
      return sub_1001A7B0();
    }
    v7 = std__operator_(&v11, v2 + 12, v2 + 40);
    LOBYTE(v10) = 1;
    std__operator_(&v12, v7, v2 + 68);
    LOBYTE(v10) = 3;
    std__basic_string_char_std__char_traits_char__std__allocator_char_____basic_string_char_std__char_traits_char__std__allocator_char__(&v11);
    v3 = *(_DWORD *)(v2 + 8);
    if ( v3 || !*(_DWORD *)(v2 + 96) )
    {
      if ( v3 == 1 && *(_DWORD *)(v2 + 96) && *(_DWORD *)(v2 + 100) && *(_DWORD *)(v2 + 104) && *(_DWORD *)(v2 + 108) )
      {
        std__basic_string_char_std__char_traits_char__std__allocator_char____operator__(&v12, "evaluation");
        std__basic_string_char_std__char_traits_char__std__allocator_char____operator__(&v12, *(_DWORD *)(v2 + 96));
        std__basic_string_char_std__char_traits_char__std__allocator_char____operator__(&v12, *(_DWORD *)(v2 + 100));
        std__basic_string_char_std__char_traits_char__std__allocator_char____operator__(&v12, *(_DWORD *)(v2 + 104));
        v4 = *(_DWORD *)(v2 + 108);
      }
      else
      {
        if ( v3 != 2
          || !*(_DWORD *)(v2 + 96)
          || !*(_DWORD *)(v2 + 100)
          || !*(_DWORD *)(v2 + 104)
          || !*(_DWORD *)(v2 + 108) )
          goto LABEL_20;
        std__basic_string_char_std__char_traits_char__std__allocator_char____operator__(&v12, "user");
        std__basic_string_char_std__char_traits_char__std__allocator_char____operator__(&v12, *(_DWORD *)(v2 + 96));
        std__basic_string_char_std__char_traits_char__std__allocator_char____operator__(&v12, *(_DWORD *)(v2 + 100));
        std__basic_string_char_std__char_traits_char__std__allocator_char____operator__(&v12, *(_DWORD *)(v2 + 104));
        v4 = *(_DWORD *)(v2 + 108);
      }
    }
    else
    {
      std__basic_string_char_std__char_traits_char__std__allocator_char____operator__(&v12, "beta");
      v4 = *(_DWORD *)(v2 + 96);
    }
    std__basic_string_char_std__char_traits_char__std__allocator_char____operator__(&v12, v4);
LABEL_20:
    v5 = v13;
    if ( v14 < 0x10 )
      v5 = (int)&v13;
    *(_BYTE *)(v2 + 4) = sub_10019E30(v2 + 112, v5, v15, (int)&a2);
    LOBYTE(v10) = 0;
    std__basic_string_char_std__char_traits_char__std__allocator_char_____basic_string_char_std__char_traits_char__std__allocator_char__(&v12);
    goto LABEL_23;
  }
  return sub_1001A7B0();
}

由于有了正確格式的licence,前面執(zhí)行的都很順利,一直到了sub_10019E30,跟進(jìn)去一看,一切了然了:

代碼:

bool __thiscall sub_10019E30(int this, int a2, int a3, int a4)
{
  int v5; // esi@1
  int v6; // eax@1
  int v7; // eax@1
  char v8; // [sp+4h] [bp-10h]@1

  v5 = this;
  v6 = EVP_sha1();
  EVP_DigestInit(&v8, v6);
  EVP_DigestUpdate(&v8, a2, a3);
  v7 = sub_1001A030();
  return EVP_VerifyFinal(&v8, v5, *(_DWORD *)(v5 + 4096), v7) == 1;
}

前面一定都是加密驗(yàn)證的,但是函數(shù)最后來(lái)了一句:

代碼:

EVP_VerifyFinal(&v8, v5, *(_DWORD *)(v5 + 4096), v7) == 1;

嘿嘿,看名字估計(jì)就是這個(gè)了,看看這個(gè)函數(shù)的返回值,1表示成功,其他表示失敗,那就是只要讓此函數(shù)永遠(yuǎn)返回1,就大功告成了,該到匯編代碼了:

代碼:

004066F0  /$  83EC 10       sub     esp, 10                          ; 檢查數(shù)字簽名部分
004066F3  |.  56            push    esi
004066F4  |.  8BF1          mov     esi, ecx
004066F6  |.  E8 81270000   call    <jmp.&LIBEAY32.#333>
004066FB  |.  50            push    eax
004066FC  |.  8D4424 08     lea     eax, dword ptr [esp+8]
00406700  |.  50            push    eax
00406701  |.  E8 70270000   call    <jmp.&LIBEAY32.#268>
00406706  |.  8B4C24 24     mov     ecx, dword ptr [esp+24]
0040670A  |.  8B5424 20     mov     edx, dword ptr [esp+20]
0040670E  |.  51            push    ecx
0040670F  |.  52            push    edx
00406710  |.  8D4424 14     lea     eax, dword ptr [esp+14]
00406714  |.  50            push    eax
00406715  |.  E8 56270000   call    <jmp.&LIBEAY32.#269>
0040671A  |.  8B4C24 34     mov     ecx, dword ptr [esp+34]
0040671E  |.  83C4 14       add     esp, 14
00406721  |.  E8 2A100000   call    00407750
00406726  |.  8B8E 00100000 mov     ecx, dword ptr [esi+1000]
0040672C  |.  50            push    eax
0040672D  |.  51            push    ecx
0040672E  |.  8D5424 0C     lea     edx, dword ptr [esp+C]
00406732  |.  56            push    esi
00406733  |.  52            push    edx
00406734  |.  E8 49270000   call    <jmp.&LIBEAY32.#290>
00406739  |.  83C4 10       add     esp, 10
0040673C  |.  48            dec     eax
0040673D  |.  F7D8          neg     eax
0040673F      1BC0          sbb     eax, eax
00406741      90            inc     eax
00406742      5E            pop     esi
00406743      83C4 10       add     esp, 10
00406746  \.  C2 0C00       retn    0C

一般來(lái)講,函數(shù)返回值都會(huì)用EAX,不管三七二十一了,先吧EAX做了再說(shuō),把上面那個(gè)黑體的
inc eax 改成nop(呵呵,nop是大家的最愛(ài),機(jī)器碼是90了,這是改過(guò)的了)
保存到文件。
大功告成哈!!

身為菜鳥(niǎo),能取得這樣的結(jié)果,真是讓人興奮,謝謝各位閱讀,還請(qǐng)各位高手不吝賜教。
下載安裝程序及破解

posted on 2009-08-14 17:59 jans2002 閱讀(1452) 評(píng)論(2)  編輯 收藏 引用

Feedback

# re: 菜鳥(niǎo)對(duì)AspectC++ Add-In for Microsoft&reg; Visual C++&reg;插件的破解過(guò)程 2010-03-07 21:27 wooviver

沒(méi)法用,編譯VS2003后錯(cuò)誤。


正在編譯...
AspectC++ Wrapper 1.0.9
(C) 2003-2006 pure-systems GmbH
Error reading licence file
Hello : error PRJ0002 : 從“cl.exe”返回的結(jié)果有誤。
  回復(fù)  更多評(píng)論   

# re: 菜鳥(niǎo)對(duì)AspectC++ Add-In for Microsoft&reg; Visual C++&reg;插件的破解過(guò)程 2011-07-17 08:10 yql893

“一般來(lái)講,函數(shù)返回值都會(huì)用EAX,不管三七二十一了,先吧EAX做了再說(shuō),把上面那個(gè)黑體的
inc eax 改成nop(呵呵,nop是大家的最愛(ài),機(jī)器碼是90了,這是改過(guò)的了)
保存到文件。
大功告成哈!! ”


請(qǐng)問(wèn)保存到什么文件?

  回復(fù)  更多評(píng)論   


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            麻豆久久婷婷| 在线视频欧美精品| 久久久久国色av免费看影院| 一本色道久久综合精品竹菊| 91久久精品一区二区别| 日韩一级视频免费观看在线| 一区二区日本视频| 久久成人免费网| 欧美1级日本1级| 欧美—级高清免费播放| 国产精品免费区二区三区观看| 韩日精品视频| 亚洲在线视频| 欧美日韩亚洲视频| 狠狠色伊人亚洲综合成人| 亚洲性线免费观看视频成熟| 久久久www成人免费无遮挡大片| 亚洲第一天堂av| 久久天天综合| 亚洲精品一区在线观看香蕉| 久久精品国产亚洲一区二区三区| 欧美高清自拍一区| 一区二区在线看| 久久一区亚洲| 久久精品一二三区| 黄色欧美日韩| 欧美一区二区成人| 亚洲女爱视频在线| 国产视频一区二区在线观看| 亚洲性人人天天夜夜摸| 在线一区观看| 国产偷国产偷亚洲高清97cao| 一本色道久久精品| 亚洲欧美日韩另类| 国产综合网站| 美女露胸一区二区三区| 久久人人97超碰国产公开结果 | 99人久久精品视频最新地址| 久久夜色精品国产欧美乱极品| 国产午夜精品理论片a级探花| 久久精品免费观看| 久久精品国产亚洲精品| 亚洲高清在线播放| 亚洲美女av黄| 国产一区二区黄| 日韩视频专区| 国产在线精品自拍| 99re6热在线精品视频播放速度| 国产精品r级在线| 久久综合图片| 国产精品青草久久| 午夜一区二区三区在线观看| 国产情人节一区| 欧美国产在线视频| 国产有码一区二区| 99精品热视频只有精品10| 在线观看欧美一区| 亚洲欧美另类综合偷拍| 艳妇臀荡乳欲伦亚洲一区| 久久国产精品一区二区三区| 午夜在线一区| 国产精品日产欧美久久久久| 亚洲国产精品久久久久秋霞影院| 国产精品天天看| 中文无字幕一区二区三区| 亚洲精品一区在线观看香蕉| 久久婷婷国产麻豆91天堂| 久久国产精品久久w女人spa| 国产精品视频一区二区三区| 在线一区日本视频| 午夜精品国产精品大乳美女| 欧美日韩视频在线一区二区观看视频| 亚洲电影观看| 一区二区三区国产精华| 欧美精品国产精品日韩精品| 亚洲视频每日更新| 久久国产精品第一页| 一区二区在线观看av| 久久中文字幕一区二区三区| 亚洲国产视频直播| 亚洲女人小视频在线观看| 国产精品视频导航| 久久女同互慰一区二区三区| 亚洲国产精品第一区二区| 亚洲精品一区二区三区樱花| 欧美性猛交xxxx乱大交蜜桃| 亚洲一级片在线看| 欧美高清视频www夜色资源网| 99视频有精品| 99国产精品视频免费观看| 欧美日韩网址| 美乳少妇欧美精品| 亚洲天堂成人在线观看| 老牛国产精品一区的观看方式| 99re66热这里只有精品4| 国产精品三上| 欧美日韩国产综合视频在线观看中文 | 亚洲大黄网站| 欧美视频日韩视频在线观看| 一本色道久久88综合亚洲精品ⅰ | 久久综合一区二区| 亚洲日韩第九十九页| 国产亚洲一本大道中文在线| 欧美一区二区三区婷婷月色 | 久久色在线播放| 久久婷婷一区| 欧美成年人视频| 欧美日韩日日骚| 国产精品久久久一本精品| 国产精品家教| 亚洲字幕一区二区| aa级大片欧美| 欧美一区二区三区四区在线观看| 欧美黄色视屏| 亚洲美女色禁图| 亚洲在线观看| 免费在线亚洲| 日韩亚洲欧美成人| 亚洲欧美不卡| 欧美连裤袜在线视频| 欧美日韩一区二区在线观看视频| 久久免费少妇高潮久久精品99| 久久久一本精品99久久精品66| 欧美激情精品| 国产尤物精品| 一区二区不卡在线视频 午夜欧美不卡'| 日韩亚洲欧美成人| 久久久久久久综合| 亚洲深夜影院| 欧美日韩国产三级| 亚洲高清不卡| 久热精品视频在线观看一区| 亚洲欧美日韩综合aⅴ视频| 久久免费国产| 欧美国产一区视频在线观看| 国产精品亚洲综合天堂夜夜| 亚洲黄色天堂| 美日韩精品视频免费看| 亚洲永久免费视频| 欧美日韩在线播放| 99精品国产99久久久久久福利| 欧美专区第一页| 亚洲一品av免费观看| 免费高清在线一区| 禁断一区二区三区在线| 久久精品91| 小黄鸭精品密入口导航| 国产欧美日韩综合一区在线播放 | 亚洲美女黄色| 欧美国产视频日韩| 欧美日本簧片| 亚洲欧洲99久久| 久久久91精品国产一区二区三区| 国产一区二区久久精品| 亚洲东热激情| 久久免费视频网| 宅男噜噜噜66国产日韩在线观看| 亚洲国产精品成人综合色在线婷婷| 久久久蜜桃一区二区人| 狠狠色2019综合网| 亚洲电影在线看| 国产精品播放| 久久久久九九九九| 久久久久国内| 中文久久精品| 麻豆成人精品| 欧美一区二区高清在线观看| 久久欧美肥婆一二区| 亚洲视频网站在线观看| 欧美亚洲尤物久久| av成人激情| 久久一区欧美| 欧美在线播放一区二区| 欧美激情按摩| 欧美成人按摩| 国产一区二区0| 亚洲欧美视频| 羞羞答答国产精品www一本| 欧美电影专区| 欧美电影电视剧在线观看| 红桃视频成人| 久久麻豆一区二区| 麻豆国产精品va在线观看不卡| 国产精品久久久久久久免费软件 | 亚洲男人av电影| 日韩亚洲国产欧美| 欧美久久综合| 99re8这里有精品热视频免费 | 性欧美xxxx视频在线观看| 一区二区欧美亚洲| 欧美日韩免费高清一区色橹橹| 欧美14一18处毛片| 亚洲日本欧美日韩高观看| 亚洲激情在线激情| 久久综合久久综合久久| 老牛嫩草一区二区三区日本 | 欧美1区免费| 亚洲精品在线免费| 欧美在线国产| 一区视频在线看|