亀裂vscode 16進エディタ
あなたはどのようにハッカー独自のアプリケーションをバイパスする方法を模索する必要がありますか?閉じるこの動画はお気に入りから削除されています.
このポストでは、LinuxやMacOSで簡単な実行可能ファイルをクラックする方法を見ます.
インストール
最初の列はファイル内の命令の開始アドレスです. 番目の列はASM命令名で、4番目の列は引数です. 番目の列は命令の対応するバイトコードとその引数(s)があればです. これらは以下の2つの手順を知っています. JMP命令はEBとしてエンコードされ、基本的にメモリ内のアドレスにジャンプする. JE命令(74)は、等しいならばジャンプであり、 JNE命令(75)は、等しくなければジャンプであり、
あなたのCPUモデルに依存するので、対応する命令はあなたのコンピュータの同じ数字によってエンコードされないかもしれないことに注意してください.
推測何.この課題を解決するためには、アドレス1148で最初のJE命令を変更する必要があります. JMP命令 JNE命令 アドレス1148で16進エディタ拡張と74 Aの検索を開きます.覚えておいて、私があなたに提示するすべての数字はあなたのために異なるかもしれないので、あなたの出力からそれらを得る.
JIPに命令jeを変更します
保存と実行:
結論
Cutter Radare
Ghidra (カッター一体) ハッピークラック🛠
このポストでは、LinuxやMacOSで簡単な実行可能ファイルをクラックする方法を見ます.
インストール
vscodeと拡張モジュールが必要になります.Hex Editor .
次にgccやclangのようなCコンパイラが必要です.
コンパイル
亀裂のプロセスを学ぶために、我々は非常に単純なCプログラムをクラックする方法を参照してください.以下をメインにします.C
#include <stdio.h>
int main()
{
int i = 0;
if (i)
printf("OK\n");
else
printf("KO\n");
if (!i)
printf("i = 0\n");
return (0);
}
次に、gcc main.c -o a.out
. A Out実行可能ファイルはコンパイラによって生成されます.ソースコードを持っていないかのように、私たちは直接A . outを修正してやりたいことをします.
チャレンジ1
最初の課題は実行可能な印刷を行うことです.
$ ./a.out
OK
i = 0
しかし、今では、
$ ./a.out
KO
i = 0
プログラムを変更するには、CPUによって実行される命令がどれであるかを知る必要があります.実行時に実行可能ファイルを分解します.
$ objdump -M intel -j .text --disassemble=main ./a.out # on Linux
$ objdump -d -x86-asm-syntax=intel ./a.out # on macOS
Linuxではx 86 six 64 CPUを使っています.
a.out: file format elf64-x86-64
Disassembly of section .text:
0000000000001135 <main>:
1135: 55 push rbp
1136: 48 89 e5 mov rbp,rsp
1139: 48 83 ec 10 sub rsp,0x10
113d: c7 45 fc 00 00 00 00 mov DWORD PTR [rbp-0x4],0x0
1144: 83 7d fc 00 cmp DWORD PTR [rbp-0x4],0x0
1148: 74 0e je 1158 <main+0x23>
114a: 48 8d 3d b3 0e 00 00 lea rdi,[rip+0xeb3] # 2004 <_IO_stdin_used+0x4>
1151: e8 da fe ff ff call 1030 <puts@plt>
1156: eb 0c jmp 1164 <main+0x2f>
1158: 48 8d 3d a8 0e 00 00 lea rdi,[rip+0xea8] # 2007 <_IO_stdin_used+0x7>
115f: e8 cc fe ff ff call 1030 <puts@plt>
1164: 83 7d fc 00 cmp DWORD PTR [rbp-0x4],0x0
1168: 75 0c jne 1176 <main+0x41>
116a: 48 8d 3d 99 0e 00 00 lea rdi,[rip+0xe99] # 200a <_IO_stdin_used+0xa>
1171: e8 ba fe ff ff call 1030 <puts@plt>
1176: b8 00 00 00 00 mov eax,0x0
117b: c9 leave
117c: c3 ret
それは不可解だ.はいこれはアセンブラです.JavaScriptがハードであると思ったならば、あなたの脳は多分今溶けているでしょうが、それはOKです、我々はちょうど3つのものを知っている必要があります:
亀裂のプロセスを学ぶために、我々は非常に単純なCプログラムをクラックする方法を参照してください.以下をメインにします.C
#include <stdio.h>
int main()
{
int i = 0;
if (i)
printf("OK\n");
else
printf("KO\n");
if (!i)
printf("i = 0\n");
return (0);
}
次に、gcc main.c -o a.out
. A Out実行可能ファイルはコンパイラによって生成されます.ソースコードを持っていないかのように、私たちは直接A . outを修正してやりたいことをします.チャレンジ1
最初の課題は実行可能な印刷を行うことです.
$ ./a.out
OK
i = 0
しかし、今では、
$ ./a.out
KO
i = 0
プログラムを変更するには、CPUによって実行される命令がどれであるかを知る必要があります.実行時に実行可能ファイルを分解します.
$ objdump -M intel -j .text --disassemble=main ./a.out # on Linux
$ objdump -d -x86-asm-syntax=intel ./a.out # on macOS
Linuxではx 86 six 64 CPUを使っています.
a.out: file format elf64-x86-64
Disassembly of section .text:
0000000000001135 <main>:
1135: 55 push rbp
1136: 48 89 e5 mov rbp,rsp
1139: 48 83 ec 10 sub rsp,0x10
113d: c7 45 fc 00 00 00 00 mov DWORD PTR [rbp-0x4],0x0
1144: 83 7d fc 00 cmp DWORD PTR [rbp-0x4],0x0
1148: 74 0e je 1158 <main+0x23>
114a: 48 8d 3d b3 0e 00 00 lea rdi,[rip+0xeb3] # 2004 <_IO_stdin_used+0x4>
1151: e8 da fe ff ff call 1030 <puts@plt>
1156: eb 0c jmp 1164 <main+0x2f>
1158: 48 8d 3d a8 0e 00 00 lea rdi,[rip+0xea8] # 2007 <_IO_stdin_used+0x7>
115f: e8 cc fe ff ff call 1030 <puts@plt>
1164: 83 7d fc 00 cmp DWORD PTR [rbp-0x4],0x0
1168: 75 0c jne 1176 <main+0x41>
116a: 48 8d 3d 99 0e 00 00 lea rdi,[rip+0xe99] # 200a <_IO_stdin_used+0xa>
1171: e8 ba fe ff ff call 1030 <puts@plt>
1176: b8 00 00 00 00 mov eax,0x0
117b: c9 leave
117c: c3 ret
それは不可解だ.はいこれはアセンブラです.JavaScriptがハードであると思ったならば、あなたの脳は多分今溶けているでしょうが、それはOKです、我々はちょうど3つのものを知っている必要があります:
$ ./a.out
OK
i = 0
$ ./a.out
KO
i = 0
$ objdump -M intel -j .text --disassemble=main ./a.out # on Linux
$ objdump -d -x86-asm-syntax=intel ./a.out # on macOS
a.out: file format elf64-x86-64
Disassembly of section .text:
0000000000001135 <main>:
1135: 55 push rbp
1136: 48 89 e5 mov rbp,rsp
1139: 48 83 ec 10 sub rsp,0x10
113d: c7 45 fc 00 00 00 00 mov DWORD PTR [rbp-0x4],0x0
1144: 83 7d fc 00 cmp DWORD PTR [rbp-0x4],0x0
1148: 74 0e je 1158 <main+0x23>
114a: 48 8d 3d b3 0e 00 00 lea rdi,[rip+0xeb3] # 2004 <_IO_stdin_used+0x4>
1151: e8 da fe ff ff call 1030 <puts@plt>
1156: eb 0c jmp 1164 <main+0x2f>
1158: 48 8d 3d a8 0e 00 00 lea rdi,[rip+0xea8] # 2007 <_IO_stdin_used+0x7>
115f: e8 cc fe ff ff call 1030 <puts@plt>
1164: 83 7d fc 00 cmp DWORD PTR [rbp-0x4],0x0
1168: 75 0c jne 1176 <main+0x41>
116a: 48 8d 3d 99 0e 00 00 lea rdi,[rip+0xe99] # 200a <_IO_stdin_used+0xa>
1171: e8 ba fe ff ff call 1030 <puts@plt>
1176: b8 00 00 00 00 mov eax,0x0
117b: c9 leave
117c: c3 ret
if (...)
インC .if (!...)
インC .Always remember that numbers can vary from one CPU to another. I'm on an x86_64 and you're probably on an x86 CPU as well but there are other architectures like ARMv6. Each architecture can have a more or less different instruction set.
あなたのCPUモデルに依存するので、対応する命令はあなたのコンピュータの同じ数字によってエンコードされないかもしれないことに注意してください.
推測何.この課題を解決するためには、アドレス1148で最初のJE命令を変更する必要があります.
JIPに命令jeを変更します
保存と実行:
$ ./a.out
OK
i = 0
結論
よく行わ、あなたの最初の亀裂チャレンジを解決!
あなたがそれを好めば、あなたのようなプラットフォーム上で困難な課題を試みることができますroot-me.org .
または、あなたは自分で次の課題を解決しようとすることができます:
$ ./a.out
OK
https://www.felixcloutier.com/x86/
別のポストでは、以下のような亀裂のプロセスを緩和するために、より高いレベルのツールをカバーします.
$ ./a.out
OK
Ghidra (カッター一体)
Reference
この問題について(亀裂vscode 16進エディタ), 我々は、より多くの情報をここで見つけました https://dev.to/ctison/crack-executables-with-vscode-hex-editor-5gdfテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol