flat assembler
Message board for the users of flat assembler.
Index
> Windows > Need an exorcist for this code :( |
Author |
|
StakFallT 19 Jan 2006, 04:27
Ok so I been working on this little pet-project of mine. The first time I seen this example, I said to myself, [this has ALOT of potential]. The example I'm referring to is an MASM32 example, more specifically the LCD cd-player
( (C) 2000 by Thomas Bleeker [exagone]. http://exagone.cjb.net -- Awesome work man, if your reading this.. It's one of the things that really intrigued me to start writting in asm) I started out with it by stripping out almost all of the cd stuff, pasting in some mp3 code I found off the net, and modifying it a little to fit my needs, then managing to get scrolling text (just in a straight line though and somewhat buggy at that). I then posted in the Win32ASM community asking why things weren't behaving properly, and someone suggested to take out all the HLL statements as certain registers don't get preserved, etc.. I also noticed that [] didn't seem to matter in MASM which I did not like at all .. The more and more I looked at fasm the more I liked, but was kind of turned off by it being a) Open Source and b) the version number being so low.. Nothing personal just at the time it seemed like the two combined factors gave me the impression it wasn't developed enough to be worth the effort to re--get-used-to.. Long story short, I got tired of masm so much that I finally decided to make the jump to fasm and I converted the lcd code as best as I could given my fairly limited knowledge and experience in asm.. Problem is it just does not want to seem to show the window at all.. It loads and I see it in my process tab in my task manager but no window and no application tab on my task bar, and I am using ws+visible and what not.. Anyhow both the original code and my butchered and modified code (lol) is attached to this thread. I was really hoping to be able to fix it myself and surprise the community by releasing it in hopes that it'd greatly help someone. I found the examples that come with FASM way to basic (simple msg box stuff) or way too advanced (multi formed code; code that has code for individual dialogs, etc and links them all together through the code; ex.. Teeth [the image/music previewer]). In a way I feel like I failed but I know it's been a long time I been trying to get it to work right, and it's long past that time I think that I just ask for help on it :/ There's just so much I still don't undertsand yet, like some documentation I read says edx is data, ecx is integer (a counter) ebx is a base pointer, eax is a return value, but it seems almost like it's more of a convention than anything, as I've seen some stuff that doesn't seem to follow that -- StakFallT
|
|||||||||||||||||||||
19 Jan 2006, 04:27 |
|
StakFallT 19 Jan 2006, 13:44
Well in my code line 419->421 acctually was not the showwindow stuff but interestingly enough I did have my showwindow stuff rem'ed out for some reason, unfortunatly un-rem'ing them out and changing them to have the []'s didn't help it any
|
|||
19 Jan 2006, 13:44 |
|
StakFallT 20 Jan 2006, 06:22
ok I reworked ALOT of my code, unfortunately same result.. so. I decided to fire up OllyDbg (My disassembler/debugger of choice.. on a side note man that is one sick little debugger... sux the guy doesn't work on it anymore ) Anyhow I opened the file and got some message about the PE header and breakpoints possibly causing disasterious effects because the code uncompiles itself of some weird claim that the prog definately desn't do lol so I figured w/e.. I continued and told the debugger to "analyze" the code (I also have the MS Symbol collection installed on my machine [windoze xp] and Olly pointed to that directory for it's symbol lookups). I then "Run Trace | Add Entry of all procedures" and then "Animate Into" and I notice it constantly loops through
Code: 00401723 > 6A 00 PUSH 0 ; /MsgFilterMax = 0 00401725 . |6A 00 PUSH 0 ; |MsgFilterMin = 0 00401727 . |6A 00 PUSH 0 ; |hWnd = NULL 00401729 . |68 70164000 PUSH Demo1_-_.00401670 ; |pMsg = Demo1_-_.00401670 0040172E . |FF15 29234000 CALL [<&USER32.GetMessageA>] ; \GetMessageA 00401734 . |09C0 OR EAX, EAX 00401736 . |74 18 JE SHORT Demo1_-_.00401750 00401738 . |68 70164000 PUSH Demo1_-_.00401670 ; /pMsg = WM_NULL 0040173D . |FF15 55234000 CALL [<&USER32.TranslateMessage>] ; \TranslateMessage 00401743 . |68 70164000 PUSH Demo1_-_.00401670 ; /pMsg = WM_NULL 00401748 . |FF15 1D234000 CALL [<&USER32.DispatchMessageA>] ; \DispatchMessageA 0040174E .^\EB D3 JMP SHORT Demo1_-_.00401723 Not really sure how that helps me, but it sems like it should... Again I have the task running in the background, no task bar tab just the process in memory, and no window... I tried adding in an InvalidateRect api call (no phun intended) to force a repain afx message thereby forcing the prog to jump into the WndProc::wm_paint section.. but then I quickly realized that won't work because my hWnd is declared on my WndProc procedure entry line: proc WndProc hWnd, uMsg, wParam, lParam and I kind of need that to stay there because the stuff inside WndProc works off of that formal hWnd paramater so... nuless there's some way to grab the correct hWnd at the right time outside of the WndProc procedure there's no way for me to take that out of there.. so I'm kinda back to square one except that I now know it's looping like mad through my msgloop-loop *puzzled* -- StakFallT |
|||
20 Jan 2006, 06:22 |
|
wisepenguin 20 Jan 2006, 06:49
ive just had a quick look and it kept on crashing initially.
i fixed that, and now it is doing what you said. the program is running but nothing is shown on the screen. the CreateWindowEx function is failing as i added a check after it. so im trying to figure out why. |
|||
20 Jan 2006, 06:49 |
|
wisepenguin 20 Jan 2006, 06:57
i get it to create the window properly, but it is still not shown.
but now it crashes again. i suspect its using nameofvariable instead of [nameofvariable] and vice versa for the windows calls. change WNDCLASS to WNDCLASSEX and uncomment the [wc.cbSize] line. |
|||
20 Jan 2006, 06:57 |
|
wisepenguin 20 Jan 2006, 07:21
ok, i commented everything out apart from the code that creates the window.
i needed FASMW to have comment/uncomment blocks of code quite badly. RegisterClass function was causing the crash. you need to use wc and not [wc]. so its your job now to make it look pretty with all that code i commented out good luck StakFallT, post a copy when its finished. ive uploaded the zip, for you.
|
|||||||||||
20 Jan 2006, 07:21 |
|
< Last Thread | Next Thread > |
Forum Rules:
|
Copyright © 1999-2025, Tomasz Grysztar. Also on GitHub, YouTube.
Website powered by rwasa.