単純なクラックミーの研究(パート2)

こんにちは、Habralyudi!

このトピックは、奇形の研究に関する一連の記事の続きです( パート1 )。 この記事では、前の記事よりも複雑な方法でkryakmisを見ていきます。 主な困難は暗号化アルゴリズムにあります。 しかし、すべて同じですが、多くの人にとっては単純すぎるように思われます。



必要な材料


それでは始めましょう。

ツールのうち、デバッガーのみを使用します。 それがクラックです。



試運転


そのため、伝統的に、デバッガなしで実行し、偽のデータを入力し、結果を確認します。

画像

今回はメッセージボックスはありませんでした。 この場合、テキストフィールドからのデータの「抽出」を担当するのは彼女であるため、GetDlgItemTextA関数へのすべての呼び出しに内訳を付けます。



トレース


休憩を入れて、プログラムを実行し、名前とシリアル番号を入力して、[確認]をクリックします。 故障が機能したことがわかります。 一歩前進して、関数を実行できるようにします。 関数が実行され、データ(名前)がアドレス022F9C4のスタックにプッシュされました。 2番目の関数呼び出しまでプログラムをトレースします。 関数が実行され、データ(シリアル)がアドレス022F8B4のスタックにプッシュされました(GetDlgItemTextA関数に渡される引数からこのデータを学習しました)。

さらに、次のコードのこの部分では:

画像

すでに名前を変更する手順を実行しています。この手順では、各(名前)がASCIIテーブルの後続の文字に置き換えられます。



主な難易度


その後、最も興味深い:



004015FF |> 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]

00401602 |. 0385 14FFFFFF ADD EAX,DWORD PTR SS:[EBP-EC]

00401608 |. 83E8 70 SUB EAX,70

0040160B |. 0FBE10 MOVSX EDX,BYTE PTR DS:[EAX]

0040160E |. 8B85 10FFFFFF MOV EAX,DWORD PTR SS:[EBP-F0]

00401614 |. 31D0 XOR EAX,EDX

00401616 |. 0FBE4D EC MOVSX ECX,BYTE PTR SS:[EBP-14] // .

0040161A |. D3E0 SHL EAX,CL

0040161C |. 8B8D 14FFFFFF MOV ECX,DWORD PTR SS:[EBP-EC]

00401622 |. D3F8 SAR EAX,CL

00401624 |. 8985 0CFFFFFF MOV DWORD PTR SS:[EBP-F4],EAX

0040162A |. 8D85 10FFFFFF LEA EAX,DWORD PTR SS:[EBP-F0]

00401630 |. FF00 INC DWORD PTR DS:[EAX]

00401632 |. 8B85 0CFFFFFF MOV EAX,DWORD PTR SS:[EBP-F4]

00401638 |. 3385 10FFFFFF XOR EAX,DWORD PTR SS:[EBP-F0]

0040163E |. 894424 08 MOV DWORD PTR SS:[ESP+8],EAX

00401642 |. 8B85 0CFFFFFF MOV EAX,DWORD PTR SS:[EBP-F4]

00401648 |. 894424 04 MOV DWORD PTR SS:[ESP+4],EAX

0040164C |. 8B85 10FFFFFF MOV EAX,DWORD PTR SS:[EBP-F0]

00401652 |. 890424 MOV DWORD PTR SS:[ESP],EAX

00401655 |. E8 36FCFFFF CALL craomaxx.00401290

0040165A |. 8985 08FFFFFF MOV DWORD PTR SS:[EBP-F8],EAX

00401660 |. 8B85 0CFFFFFF MOV EAX,DWORD PTR SS:[EBP-F4]

00401666 |. 3385 10FFFFFF XOR EAX,DWORD PTR SS:[EBP-F0]

0040166C |. 894424 08 MOV DWORD PTR SS:[ESP+8],EAX

00401670 |. 8B85 0CFFFFFF MOV EAX,DWORD PTR SS:[EBP-F4]

00401676 |. 894424 04 MOV DWORD PTR SS:[ESP+4],EAX

0040167A |. 8B85 10FFFFFF MOV EAX,DWORD PTR SS:[EBP-F0]

00401680 |. 890424 MOV DWORD PTR SS:[ESP],EAX

00401683 |. E8 2EFCFFFF CALL craomaxx.004012B6

00401688 |. 8985 04FFFFFF MOV DWORD PTR SS:[EBP-FC],EAX

0040168E |. 8B85 04FFFFFF MOV EAX,DWORD PTR SS:[EBP-FC]

00401694 |. 894424 04 MOV DWORD PTR SS:[ESP+4],EAX

00401698 |. 8B85 08FFFFFF MOV EAX,DWORD PTR SS:[EBP-F8]

0040169E |. 890424 MOV DWORD PTR SS:[ESP],EAX

004016A1 |. E8 34FCFFFF CALL craomaxx.004012DA

004016A6 |. 8985 00FFFFFF MOV DWORD PTR SS:[EBP-100],EAX

004016AC |. 8B85 00FFFFFF MOV EAX,DWORD PTR SS:[EBP-100]

004016B2 |. 2385 08FFFFFF AND EAX,DWORD PTR SS:[EBP-F8]

004016B8 |. 3385 04FFFFFF XOR EAX,DWORD PTR SS:[EBP-FC]

004016BE |. 8985 FCFEFFFF MOV DWORD PTR SS:[EBP-104],EAX

004016C4 |. 8B85 00FFFFFF MOV EAX,DWORD PTR SS:[EBP-100]

004016CA |. 894424 08 MOV DWORD PTR SS:[ESP+8],EAX

004016CE |. 8B85 04FFFFFF MOV EAX,DWORD PTR SS:[EBP-FC]

004016D4 |. 894424 04 MOV DWORD PTR SS:[ESP+4],EAX

004016D8 |. 8B85 08FFFFFF MOV EAX,DWORD PTR SS:[EBP-F8]

004016DE |. 890424 MOV DWORD PTR SS:[ESP],EAX

004016E1 |. E8 D0FBFFFF CALL craomaxx.004012B6

004016E6 |. 8985 F8FEFFFF MOV DWORD PTR SS:[EBP-108],EAX

004016EC |. 8B85 F8FEFFFF MOV EAX,DWORD PTR SS:[EBP-108]

004016F2 |. 894424 0C MOV DWORD PTR SS:[ESP+C],EAX

004016F6 |. 8B85 FCFEFFFF MOV EAX,DWORD PTR SS:[EBP-104]

004016FC |. 894424 08 MOV DWORD PTR SS:[ESP+8],EAX

00401700 |. 8B85 04FFFFFF MOV EAX,DWORD PTR SS:[EBP-FC]

00401706 |. 894424 04 MOV DWORD PTR SS:[ESP+4],EAX

0040170A |. 8B85 08FFFFFF MOV EAX,DWORD PTR SS:[EBP-F8]

00401710 |. 890424 MOV DWORD PTR SS:[ESP],EAX

00401713 |. E8 DCFBFFFF CALL craomaxx.004012F4

00401718 |. 8985 F4FEFFFF MOV DWORD PTR SS:[EBP-10C],EAX

0040171E |. 8B85 10FFFFFF MOV EAX,DWORD PTR SS:[EBP-F0]

00401724 |. 890424 MOV DWORD PTR SS:[ESP],EAX

00401727 |. E8 F8FBFFFF CALL craomaxx.00401324

0040172C |. 8985 10FFFFFF MOV DWORD PTR SS:[EBP-F0],EAX

00401732 |. 8B85 0CFFFFFF MOV EAX,DWORD PTR SS:[EBP-F4]

00401738 |. 890424 MOV DWORD PTR SS:[ESP],EAX

0040173B |. E8 E4FBFFFF CALL craomaxx.00401324

00401740 |. 8985 0CFFFFFF MOV DWORD PTR SS:[EBP-F4],EAX

00401746 |. 8B85 08FFFFFF MOV EAX,DWORD PTR SS:[EBP-F8]

0040174C |. 890424 MOV DWORD PTR SS:[ESP],EAX

0040174F |. E8 D0FBFFFF CALL craomaxx.00401324

00401754 |. 8985 08FFFFFF MOV DWORD PTR SS:[EBP-F8],EAX

0040175A |. 8B85 04FFFFFF MOV EAX,DWORD PTR SS:[EBP-FC]

00401760 |. 890424 MOV DWORD PTR SS:[ESP],EAX

00401763 |. E8 BCFBFFFF CALL craomaxx.00401324

00401768 |. 8985 04FFFFFF MOV DWORD PTR SS:[EBP-FC],EAX

0040176E |. 8B85 00FFFFFF MOV EAX,DWORD PTR SS:[EBP-100]

00401774 |. 890424 MOV DWORD PTR SS:[ESP],EAX

00401777 |. E8 A8FBFFFF CALL craomaxx.00401324

0040177C |. 8985 00FFFFFF MOV DWORD PTR SS:[EBP-100],EAX

00401782 |. 8B85 F4FEFFFF MOV EAX,DWORD PTR SS:[EBP-10C]

00401788 |. 890424 MOV DWORD PTR SS:[ESP],EAX

0040178B |. E8 94FBFFFF CALL craomaxx.00401324

00401790 |. 8985 F4FEFFFF MOV DWORD PTR SS:[EBP-10C],EAX ; |

00401796 |. 8B85 F4FEFFFF MOV EAX,DWORD PTR SS:[EBP-10C] ; |

0040179C |. 894424 1C MOV DWORD PTR SS:[ESP+1C],EAX ; |

004017A0 |. 8B85 00FFFFFF MOV EAX,DWORD PTR SS:[EBP-100] ; |

004017A6 |. 894424 18 MOV DWORD PTR SS:[ESP+18],EAX ; |

004017AA |. 8B85 04FFFFFF MOV EAX,DWORD PTR SS:[EBP-FC] ; |

004017B0 |. 894424 14 MOV DWORD PTR SS:[ESP+14],EAX ; |

004017B4 |. 8B85 08FFFFFF MOV EAX,DWORD PTR SS:[EBP-F8] ; |

004017BA |. 894424 10 MOV DWORD PTR SS:[ESP+10],EAX ; |

004017BE |. 8B85 0CFFFFFF MOV EAX,DWORD PTR SS:[EBP-F4] ; |

004017C4 |. 894424 0C MOV DWORD PTR SS:[ESP+C],EAX ; |

004017C8 |. 8B85 10FFFFFF MOV EAX,DWORD PTR SS:[EBP-F0] ; |

004017CE |. 894424 08 MOV DWORD PTR SS:[ESP+8],EAX ; |

004017D2 |. C74424 04 7840>MOV DWORD PTR SS:[ESP+4],craomaxx.004040>; |ASCII "C%dr%do%dm%da%dx%dX"

004017DA |. 8D85 18FFFFFF LEA EAX,DWORD PTR SS:[EBP-E8] ; |

004017E0 |. 890424 MOV DWORD PTR SS:[ESP],EAX ; |

004017E3 |. E8 C8070000 CALL <JMP.&msvcrt.sprintf> ; \sprintf

004017E8 |. C785 14FFFFFF >MOV DWORD PTR SS:[EBP-EC],0

004017F2 |> 8D85 18FFFFFF /LEA EAX,DWORD PTR SS:[EBP-E8] ; |

004017F8 |. 890424 |MOV DWORD PTR SS:[ESP],EAX ; |

004017FB |. E8 D0070000 |CALL <JMP.&msvcrt.strlen> ; \strlen

00401800 |. 3985 14FFFFFF |CMP DWORD PTR SS:[EBP-EC],EAX

00401806 |. 73 2A |JNB SHORT craomaxx.00401832

00401808 |. 8D45 F8 |LEA EAX,DWORD PTR SS:[EBP-8]

0040180B |. 0385 14FFFFFF |ADD EAX,DWORD PTR SS:[EBP-EC]

00401811 |. 2D E0000000 |SUB EAX,0E0

00401816 |. FE00 |INC BYTE PTR DS:[EAX]

00401818 |. 8D45 F8 |LEA EAX,DWORD PTR SS:[EBP-8]

0040181B |. 0385 14FFFFFF |ADD EAX,DWORD PTR SS:[EBP-EC]

00401821 |. 2D E0000000 |SUB EAX,0E0

00401826 |. FE00 |INC BYTE PTR DS:[EAX]

00401828 |. 8D85 14FFFFFF |LEA EAX,DWORD PTR SS:[EBP-EC]

0040182E |. FF00 |INC DWORD PTR DS:[EAX]

00401830 |.^EB C0 \JMP SHORT craomaxx.004017F2

00401832 |> 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]

00401835 |. 894424 08 MOV DWORD PTR SS:[ESP+8],EAX








これは、数字で構成される8つのシーケンスの作成です。 次に、引数C%dr%do%dm%da%dx%dXを指定してsprintf関数を使用して、そのうちの6つがこのような行を形成します(nはシーケンスです)-

C p1 r p2 o p3 m p4 a p5 x p6 X.

次に、この巨大な行の各文字をASCIIテーブルの次の文字の隣の文字に置き換える手順があります(申し訳ありませんが、異なる説明の仕方はわかりません)。 たとえば、シンボルAがCになり、1が3になった、などです。 そして、結果は完成した有効なシリアルです。

難点は、これらの線がほぼランダムに形成されることです。 つまり、ここでは、従来の名前の変更ではなく、レジスタとスタックに含まれるアドレスの変更を確認しています。 アドレスは名前の長さに応じて変化するため、同じ長さの名前には、ランダムな値がなければ同じシリアルがありますが、その形成の原理は理解できません(コメントされています)。 上記のコードには、理解するのが難しくない数学的な操作が主に含まれているため、私はコメントしていません。





名前の例-Myname

シリアルの例は、E99696 ;: 2t5284; 342q87 ;: 6458o696924:c3995:68326z432575 ;: 22Z



例name2-名前

シリアル例2-E73872238t9:5274:q; 5257262o; 2752558c3:72987622z3:575886 :: Z

ランダムな値のために、サンプルが機能しない場合があります。



不安定なキージェニーの例を次に示します。



PS次の記事はもっとおもしろいでしょう。 手動での解凍と、より複雑な暗号化アルゴリズムについて説明します。



All Articles