![]() |
|
|
|
#1
|
|||
|
|||
|
Quote:
existing "good" EXE if this "good" EXE is specified by others. But if you craft that "good" EXE yourself, you can create a "bad" one, and under some circumstances, you can defraud sb of a digital signature for the "good" EXE and then apply to the "bad" one. So my method is to some degrees concerned with EXE file. If you append the collision data to a .doc file, it will not affect the contents of that doc file, yet if you append the collision data to an exe, it can affect the results of that exe. |
|
#2
|
|||
|
|||
|
This paper describes the process of reversing a CRC32 checksum
Here is some C# code that should do what you want: Code:
public class Crc32
{
public const uint poly = 0xedb88320;
public const uint startxor = 0xffffffff;
static uint[] table = null;
static uint[] revtable = null;
public void FixChecksum(byte[] bytes, int length, int fixpos, uint wantcrc)
{
if (fixpos + 4 > length) return;
uint crc = startxor;
for (int i = 0; i < fixpos; i++) {
crc = (crc >> 8) ^ table[(crc ^ bytes[i]) & 0xff];
}
Array.Copy(BitConverter.GetBytes(crc), 0, bytes, fixpos, 4);
crc = wantcrc ^ startxor;
for (int i = length - 1; i >= fixpos; i--) {
crc = (crc << 8) ^ revtable[crc >> (3 * 8)] ^ bytes[i];
}
Array.Copy(BitConverter.GetBytes(crc), 0, bytes, fixpos, 4);
}
public Crc32()
{
if (Crc32.table == null) {
uint[] table = new uint[256];
uint[] revtable = new uint[256];
uint fwd, rev;
for (int i = 0; i < table.Length; i++) {
fwd = (uint)i;
rev = (uint)(i) << (3 * 8);
for (int j = 8; j > 0; j--) {
if ((fwd & 1) == 1) {
fwd = (uint)((fwd >> 1) ^ poly);
} else {
fwd >>= 1;
}
if ((rev & 0x80000000) != 0) {
rev = ((rev ^ poly) << 1) | 1;
} else {
rev <<= 1;
}
}
table[i] = fwd;
revtable[i] = rev;
}
Crc32.table = table;
Crc32.revtable = revtable;
}
}
}
|
![]() |
| Thread Tools | |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Difficult debugging situation | Git | General Discussion | 4 | 10-21-2005 20:13 |
| cracking jcreator, is it difficult? | doby | General Discussion | 6 | 09-27-2004 16:15 |