問題タブ [fasm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
683 参照

string - FASM-シンプル:lstrcpy&lstrcat-結果の文字列が正しくありません

私はFASMで簡単なタスクを実行しようとしていますが、これは文字通り約2時間苦労しています。

目標と問題についてコードにコメントしましたが、説明します。

特定のファイルへのパスを変数に保存しようとしています。ファイルはTempDirectoryにあります。したがって、最初に一時パスを取得してから、ファイル名を一時パスの最後に追加する必要があります。

私はこれを2回続けて行おうとしています。しかし、何らかの理由で、結果として得られる文字列は「ねじれた」ものになってしまいます。

私の現在のコードは次のとおりです。

これを解決するための助けをいただければ幸いです。ありがとう!

0 投票する
2 に答える
4909 参照

winapi - FASM-ファイルが存在する場合-GetFileAttributesの使用-INVALID_FILE_ATTRIBUTES値?

GetFileAttributesAを使用して、FASMにファイルが存在するかどうかを判断しています。ファイルが存在しない場合、戻り値はINVALID_FILE_ATTRIBUTESになることは知っていますが、この値を確認する方法がわかりません。

私のコード:

コンパイラがINVALID_FILE_ATTRIBUTESを値として認識しないため、次のようになります。

動作しないでしょう。

誰かがこの定数の値を知っているので、手動で入力するだけです。

どんな助けでも大歓迎です。ありがとう


JensBjörnhagerからの応答の後、以下は興味のある他の人のための作業コードです。

あるいは:

もう一度ありがとうJensBjörnhager!

0 投票する
1 に答える
1050 参照

if-statement - FASM-x64とx86

Windows Vista x86を使用しながら、FASMで簡単なアプリケーションを作成しました。アプリケーションはコンパイルされ、エラーなしで正常に実行されました。

次に、まったく同じソースコード(文字通り同じファイル)を、WindowsVistax64を実行している他のPCに移動しました。ソースコードをコンパイルすると、エラーが発生しました。

x86の場合、次のように簡単に始めることができます。

x64でコンパイルするときは、次のようなものを使用する必要がありました。


もう1つの問題(私の主な関心事)は、x86でいつ使用できるかということです。

しかし、x64で同じコードをコンパイルしていると、次の行が強調表示された「IllegalInstruction」が表示されます。

x64でこれを行う別の方法はありますか?

また、両方で互換性がある場所にコーディングするにはどうすればよいですか?x86でコンパイルすると、結果の出力はx64で正常に実行されると思いますか?

最後に、これはアーキテクチャ以外の何かと関係がある可能性がありますか?

0 投票する
1 に答える
332 参照

api - FASM-HKCUのスタートアップに追加

「SOFTWARE\Microsoft \ Windows \ CurrentVersion \ Run」にエントリを追加して、FASMアプリケーションをシステムの起動に追加しようとしています。

次のAPIを使用しています。

RegOpenKeyExA

RegSetValueExA

RegCloseKey

advapi32.dllで

コードを実行すると、エントリが作成されることはありません。これが私のコードです:

自分のエントリがレジストリに追加されない理由がわかりません。この問題に関する助けをいただければ幸いです。


OllyDbgを使用して、これを考え出しました。

ここに画像の説明を入力してください

アクセス拒否エラーが発生する理由がわかりません。RegOpenKeyExAはERROR_SUCCESSを返します


スタートアップに自分自身を追加していたことが判明しましたが、RegEditでは表示できず、MSConfig..weird ..?でのみ表示されます。

0 投票する
1 に答える
307 参照

64-bit - FASM-IsWow64Process-ブール結果のチェック

アプリを実行しているPCがx64かx86かを判断しようとしています。

これが私の現在のコードです:

実行時にクラッシュするだけです。

ブール値をチェックする適切な方法は何ですか、その部分を正しく実行していますか?

この問題の解決にご協力いただきありがとうございます。

0 投票する
1 に答える
1239 参照

assembly - 環境変数 - 起動フォルダー

スタートアップ フォルダーの環境変数はありますか。

XP では C:\Documents and Settings(user)\Start Menu\Programs\Startup の下にあり、Vista 7 では Appdata\Microsoft\Windows\Start Menu\Programs\Startup\ の下にあります。

このフォルダに EnVar があるかどうか疑問に思っていましたか?

0 投票する
3 に答える
2550 参照

delphi - FASM-DelphiDLLに文字列を渡す

私は次のコードでDelphiXE2でコード化されたdllを持っています:

今、私はこの関数を次のようなFASMアプリケーションにインポートしています。

そして利用はそうです:

ただし、結果のメッセージボックスは、次のように歪んだ文字で表示されます。

ここに画像の説明を入力してください

これは、関数呼び出しの正確な結果です。

この問題を解決するにはどうすればよいですか?

0 投票する
3 に答える
2856 参照

assembly - コンパイルにFASMコンソールを使用する方法

ユーザーがコードを入力してNASM、FASM、YASMなどでコンパイルできるアセンブリIDEを作成しようとしていますが、FASMにはIDEが付属しているため、コンソールでのコンパイルに関する情報が見つかりません。たとえば、プログラムtest.asmがある場合、次のようにコンパイルしますか?

もしそうなら、fasm.exeはコマンドプロンプトが動作していたのと同じディレクトリにある必要があります。助けてくれてありがとう。

0 投票する
2 に答える
848 参照

windows - アセンブリから Windows API を呼び出していますが、ハードコードされたアドレスはありません

Windows XP 環境で fasm を学習しているときに fasm のソース コードを読んでいると、invoke マクロが見つかりました。

そしてインポートマクロ。

しかし、MessageBoxA のハードコーディングされたアドレスも、アセンブリ コードでの user32.dll の読み込みも見つかりませんでした。アドレスではなく文字列にラベルを付けるマクロ定義のみがあります。

私の仮定はこれです

  1. user32.dll をロードし、ロードされた dll の開始アドレスを返すコードがあります => ここで、返されたアドレスをロケーション A に呼び出しましょう

  2. ハードコーディングされたアドレスとラベルのペアがあります (例: MessageBoxA = 0x00000000)

  3. したがって、命令「call」は MessageBoxA ラベルを呼び出すことができます (位置 A + MessageBoxA オフセットに変換されます)。

私の仮定は間違っていますか?API はどのように呼び出されるのだろうか。

ありがとう

0 投票する
1 に答える
191 参照

winapi - FASM で GdiGradientFill に問題がある

Win32 ASM のプロジェクトとして、最近開発した Java アプリの ASM バージョンを作成しようとしていますが、タイトルが示すように、GdiGradientFill に問題があります。現時点では、FASM を使用し、INVOKE や WIN32 インクルードの使用などの高レベルの ASM 構造を避けることをお勧めします。

私が持っているもの、atm:

ただし、コードは FALSE のみを返し、両方の MSDN を通過した後 ( http://msdn.microsoft.com/en-us/library/windows/desktop/dd373585(v=vs.85).aspx )

および他のいくつかの例 (http://www.asmcommunity.net/board/index.php?topic=4100.0) を参照してください。

Msimg32 の GradientFill を使用しようとしたときに別の問題がありました。これは常にクラッシュにつながるためです。これは正確ですか、それともこのフォームで問題を経験した人はいますか?

コード全体の Pastebin リンク: http://pastebin.com/GEHDw6Qe

助けてくれてありがとう、SS

編集: コードは現在機能しています。正直なところ、何が変わったのかわかりません。PUSH / POP シーケンスを MOV EAX に変更する以外に、以前と現在の作業データの間に違いはありません。[rectClient.left]、 ect (PUSH / POP メソッドも機能します) - 支援を提供してくれた人々に感謝します!