Click here to Skip to main content
15,881,882 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
AnswerRe: Converting an image into jpeg format Pin
Cedric Moonen12-Apr-10 21:12
Cedric Moonen12-Apr-10 21:12 
AnswerRe: Converting an image into jpeg format Pin
CPallini12-Apr-10 21:21
mveCPallini12-Apr-10 21:21 
QuestionWindows date change event Pin
Vijjuuu.12-Apr-10 20:40
Vijjuuu.12-Apr-10 20:40 
AnswerRe: Windows date change event Pin
David Crow13-Apr-10 2:56
David Crow13-Apr-10 2:56 
AnswerRe: Windows date change event Pin
KarstenK13-Apr-10 4:34
mveKarstenK13-Apr-10 4:34 
QuestionC - Application reusing memory locations that have been altered Pin
Member 259847812-Apr-10 13:35
Member 259847812-Apr-10 13:35 
AnswerRe: C - Application reusing memory locations that have been altered Pin
Garth J Lancaster12-Apr-10 15:09
professionalGarth J Lancaster12-Apr-10 15:09 
GeneralRe: C - Application reusing memory locations that have been altered Pin
Member 259847812-Apr-10 17:06
Member 259847812-Apr-10 17:06 
So i have two functions

void Send(Char* Input, UINT32 DisplayType)
UINT8 SwapBits(UINT8 b)


I then call

Send("Hello", 0);


Which gets the length of Input and then
for(int i=0;i < len;i++)
{
     Input[i] = SwapBits(Input[i]);
}


While doing this i have WinDbg open and look at the pointer location for Input, lets say its x00500, you can see all 5 characters in Hello and their hex codes in Byte view.

Swapbits reverses the hi 4 bits for the low 4 bits in each UINT8 byte put in. It does this through a lot of bit manipulation, i dont have the code available now but it doesnt matter its not pertinent really. So instead of having a Hex of 0x25 fed in, it outputs 0x52. Sort of a ghetto encryption method.

All good so far.
Now call this again...
Send("Hello", 0);


if you look at the pointer it uses it does NOT create a new char* pointer. Instead it points to the one it made the first time at 0x500(still encrypted). Obviously passing in the bit swapped value just bit swaps it back. So swapbits outputs 0x25, from the previous example.

Every time you call Send("Hello", 0) it will point to 0x500 not knowing its been manipulated. It has to be some compiler thing trying to optimize these strings used multiple times only delcaring them in memory once, but its breaking everything.
GeneralRe: C - Application reusing memory locations that have been altered Pin
Tim Craig12-Apr-10 17:42
Tim Craig12-Apr-10 17:42 
GeneralRe: C - Application reusing memory locations that have been altered Pin
enhzflep13-Apr-10 2:03
enhzflep13-Apr-10 2:03 
AnswerRe: C - Application reusing memory locations that have been altered Pin
Eugen Podsypalnikov12-Apr-10 20:34
Eugen Podsypalnikov12-Apr-10 20:34 
QuestionDLL in memory Pin
RomTibi12-Apr-10 8:53
RomTibi12-Apr-10 8:53 
QuestionRe: DLL in memory Pin
David Crow12-Apr-10 10:11
David Crow12-Apr-10 10:11 
AnswerRe: DLL in memory Pin
RomTibi13-Apr-10 6:35
RomTibi13-Apr-10 6:35 
AnswerRe: DLL in memory Pin
David Crow13-Apr-10 6:40
David Crow13-Apr-10 6:40 
GeneralRe: DLL in memory Pin
RomTibi13-Apr-10 6:55
RomTibi13-Apr-10 6:55 
GeneralRe: DLL in memory Pin
David Crow13-Apr-10 6:57
David Crow13-Apr-10 6:57 
GeneralRe: DLL in memory Pin
RomTibi13-Apr-10 6:59
RomTibi13-Apr-10 6:59 
AnswerRe: DLL in memory Pin
«_Superman_»12-Apr-10 10:30
professional«_Superman_»12-Apr-10 10:30 
GeneralRe: DLL in memory Pin
RomTibi13-Apr-10 6:37
RomTibi13-Apr-10 6:37 
AnswerRe: DLL in memory Pin
@Intersect☺™12-Apr-10 19:39
professional@Intersect☺™12-Apr-10 19:39 
GeneralRe: DLL in memory Pin
RomTibi13-Apr-10 6:38
RomTibi13-Apr-10 6:38 
AnswerRe: DLL in memory Pin
Stephen Hewitt13-Apr-10 14:05
Stephen Hewitt13-Apr-10 14:05 
QuestionVisual Studio 6.0 (1998) VS Visual Studio .NET 2003 (Working on MFC) [modified] Pin
Mr. Tomay12-Apr-10 7:11
Mr. Tomay12-Apr-10 7:11 
AnswerRe: Visual Studio 6.0 (1998) VS Visual Studio .NET 2003 (using MFC) Pin
«_Superman_»12-Apr-10 7:39
professional«_Superman_»12-Apr-10 7:39 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.