<?xml version="1.0" encoding="ISO-8859-1"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Forum du club des développeurs et IT Pro - Contribuez</title>
		<link>https://www.developpez.net/forums/</link>
		<description>Contribuez à la FAQ Assembleur ou partagez vos sources</description>
		<language>fr</language>
		<lastBuildDate>Sun, 19 Apr 2026 03:54:56 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>15</ttl>
		<image>
			<url>https://forum.developpez.be/images/misc/rss.png</url>
			<title>Forum du club des développeurs et IT Pro - Contribuez</title>
			<link>https://www.developpez.net/forums/</link>
		</image>
		<item>
			<title>RC4 Cipher du virus bagle</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2176908&amp;goto=newpost</link>
			<pubDate>Fri, 16 May 2025 00:36:43 GMT</pubDate>
			<description>Je vois que pas mal de monde...</description>
			<content:encoded><![CDATA[<div>Je vois que pas mal de monde s'intéresse aux outils de bagle alors j'ai décidé de poster ce RC4.<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="40"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br />92<br />93<br />94<br />95<br />96<br />97<br />98<br />99<br />100<br />101<br />102<br />103<br />104<br />105<br />106<br />107<br />108<br />109<br />110<br />111<br />112<br />113<br />114<br />115<br />116<br />117<br />118<br />119<br />120<br />121<br />122<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #808080;">; RC4 Cipher</span>
<span style="color: #808080;">; #########################################################################</span>
&nbsp;
rc4_state <span style="color: #0080ff;">struct</span>
    x   <span style="color: #0080ff;">BYTE</span>   ?
    y   <span style="color: #0080ff;">BYTE</span>   ?
    m   <span style="color: #0080ff;">BYTE</span>   <span style="color: #cc66cc;">256</span> <span style="color: #0080ff;">dup</span><span class="br0">&#40;</span>?<span class="br0">&#41;</span>
rc4_state <span style="color: #0080ff;">ends</span>
&nbsp;
<span style="color: #808080;">; Reset RC4 state, initialize encryption key</span>
RC4Setup <span style="color: #0080ff;">proc</span> <span style="color: #0080ff;">uses</span> <span style="color: #339933;">esi</span> <span style="color: #339933;">edi</span> <span style="color: #339933;">ebx</span> state, key, len: <span style="color: #0080ff;">DWORD</span>
        LOCAL   a: <span style="color: #0080ff;">BYTE</span>
        LOCAL   j: <span style="color: #0080ff;">BYTE</span>
&nbsp;
        <span style="color: #0080ff;">invoke</span>  ZeroMemory, state, <span style="color: #0080ff;">sizeof</span> rc4_state
        <span style="color: #0000ff;">mov</span>     <span style="color: #339933;">edi</span>, state
        <span style="color: #0000ff;">inc</span>     <span style="color: #339933;">edi</span>
        <span style="color: #0000ff;">inc</span>     <span style="color: #339933;">edi</span>             <span style="color: #808080;">; m</span>
&nbsp;
        <span style="color: #0000ff;">xor</span>     <span style="color: #339933;">edx</span>, <span style="color: #339933;">edx</span>
        <span style="color: #0000ff;">mov</span>     <span style="color: #339933;">ecx</span>, <span style="color: #cc66cc;">256</span>
@l:
        <span style="color: #0000ff;">mov</span>     <span style="color: #0080ff;">byte</span> <span style="color: #0080ff;">ptr</span><span class="br0">&#91;</span><span style="color: #339933;">edi</span>+<span style="color: #339933;">edx</span><span class="br0">&#93;</span>, <span style="color: #339933;">dl</span>
        <span style="color: #0000ff;">inc</span>     <span style="color: #339933;">dl</span>
        <span style="color: #0000ff;">loop</span>    @l
&nbsp;
        <span style="color: #0000ff;">mov</span>     <span style="color: #339933;">edi</span>, state
        <span style="color: #0000ff;">inc</span>     <span style="color: #339933;">edi</span>
        <span style="color: #0000ff;">inc</span>     <span style="color: #339933;">edi</span>             <span style="color: #808080;">; m</span>
        <span style="color: #0000ff;">mov</span>     <span style="color: #339933;">esi</span>, key
&nbsp;
        <span style="color: #0000ff;">mov</span>     j, <span style="color: #cc66cc;">0</span>
        <span style="color: #0000ff;">xor</span>     <span style="color: #339933;">ecx</span>, <span style="color: #339933;">ecx</span>        <span style="color: #808080;">; k</span>
        <span style="color: #0000ff;">xor</span>     <span style="color: #339933;">ebx</span>, <span style="color: #339933;">ebx</span>        <span style="color: #808080;">; i</span>
&nbsp;
@l_gen:
        <span style="color: #0000ff;">mov</span>     <span style="color: #339933;">al</span>, <span style="color: #0080ff;">byte</span> <span style="color: #0080ff;">ptr</span><span class="br0">&#91;</span><span style="color: #339933;">edi</span>+<span style="color: #339933;">ebx</span><span class="br0">&#93;</span>
        <span style="color: #0000ff;">mov</span>     a, <span style="color: #339933;">al</span>
&nbsp;
        <span style="color: #0000ff;">add</span>     j, <span style="color: #339933;">al</span>
        <span style="color: #0000ff;">mov</span>     <span style="color: #339933;">al</span>, <span style="color: #0080ff;">byte</span> <span style="color: #0080ff;">ptr</span><span class="br0">&#91;</span><span style="color: #339933;">esi</span>+<span style="color: #339933;">ecx</span><span class="br0">&#93;</span>
        <span style="color: #0000ff;">add</span>     j, <span style="color: #339933;">al</span>
&nbsp;
        <span style="color: #0000ff;">movzx</span>   <span style="color: #339933;">edx</span>, j
        <span style="color: #0000ff;">mov</span>     <span style="color: #339933;">al</span>, <span style="color: #0080ff;">byte</span> <span style="color: #0080ff;">ptr</span><span class="br0">&#91;</span><span style="color: #339933;">edi</span>+<span style="color: #339933;">edx</span><span class="br0">&#93;</span>
        <span style="color: #0000ff;">mov</span>     <span style="color: #0080ff;">byte</span> <span style="color: #0080ff;">ptr</span><span class="br0">&#91;</span><span style="color: #339933;">edi</span>+<span style="color: #339933;">ebx</span><span class="br0">&#93;</span>, <span style="color: #339933;">al</span>
        <span style="color: #0000ff;">mov</span>     <span style="color: #339933;">al</span>, a
        <span style="color: #0000ff;">mov</span>     <span style="color: #0080ff;">byte</span> <span style="color: #0080ff;">ptr</span><span class="br0">&#91;</span><span style="color: #339933;">edi</span>+<span style="color: #339933;">edx</span><span class="br0">&#93;</span>, <span style="color: #339933;">al</span>
&nbsp;
        <span style="color: #0000ff;">inc</span>     <span style="color: #339933;">ecx</span>
        .<span style="color: #0080ff;">IF</span>     <span style="color: #339933;">ecx</span> &gt;= len
                <span style="color: #0000ff;">xor</span>     <span style="color: #339933;">ecx</span>, <span style="color: #339933;">ecx</span>
        .<span style="color: #0080ff;">ENDIF</span>
        <span style="color: #0000ff;">inc</span>     <span style="color: #339933;">bl</span>
        <span style="color: #0000ff;">jnz</span>     @l_gen
        <span style="color: #0000ff;">ret</span>
RC4Setup <span style="color: #0080ff;">endp</span>
&nbsp;
<span style="color: #808080;">; Crypt data using RC4 algorithm &amp; update the state</span>
RC4Crypt <span style="color: #0080ff;">proc</span> <span style="color: #0080ff;">uses</span> <span style="color: #339933;">ebx</span> <span style="color: #339933;">esi</span> <span style="color: #339933;">edi</span> state, cdata, len: <span style="color: #0080ff;">DWORD</span>
        LOCAL   a: <span style="color: #0080ff;">BYTE</span>
        LOCAL   b: <span style="color: #0080ff;">BYTE</span>
        LOCAL   x: <span style="color: #0080ff;">BYTE</span>
        LOCAL   y: <span style="color: #0080ff;">BYTE</span>
        LOCAL   i: <span style="color: #0080ff;">DWORD</span>
&nbsp;
        <span style="color: #0000ff;">mov</span>     <span style="color: #339933;">ebx</span>, state
        <span style="color: #0080ff;">assume</span>  <span style="color: #339933;">ebx</span>: <span style="color: #0080ff;">ptr</span> rc4_state
        <span style="color: #0000ff;">mov</span>     <span style="color: #339933;">al</span>, <span class="br0">&#91;</span><span style="color: #339933;">ebx</span><span class="br0">&#93;</span>.x
        <span style="color: #0000ff;">mov</span>     x, <span style="color: #339933;">al</span>
        <span style="color: #0000ff;">mov</span>     <span style="color: #339933;">al</span>, <span class="br0">&#91;</span><span style="color: #339933;">ebx</span><span class="br0">&#93;</span>.y
        <span style="color: #0000ff;">mov</span>     y, <span style="color: #339933;">al</span>
        <span style="color: #0000ff;">mov</span>     <span style="color: #339933;">edi</span>, <span style="color: #339933;">ebx</span>
        <span style="color: #0000ff;">inc</span>     <span style="color: #339933;">edi</span>
        <span style="color: #0000ff;">inc</span>     <span style="color: #339933;">edi</span>
&nbsp;
        <span style="color: #0000ff;">mov</span>     <span style="color: #339933;">esi</span>, cdata
&nbsp;
        <span style="color: #0000ff;">mov</span>     i, <span style="color: #cc66cc;">0</span>
&nbsp;
        <span style="color: #0000ff;">mov</span>     <span style="color: #339933;">ecx</span>, len
        <span style="color: #0000ff;">jecxz</span>   @no_data
&nbsp;
@l:
        <span style="color: #808080;">; x = (unsigned char) ( x + 1 ); a = m[x];</span>
        <span style="color: #0000ff;">inc</span>     x
        <span style="color: #0000ff;">movzx</span>   <span style="color: #339933;">eax</span>, x
        <span style="color: #0000ff;">movzx</span>   <span style="color: #339933;">edx</span>, <span style="color: #0080ff;">byte</span> <span style="color: #0080ff;">ptr</span><span class="br0">&#91;</span><span style="color: #339933;">edi</span>+<span style="color: #339933;">eax</span><span class="br0">&#93;</span>   <span style="color: #808080;">; a</span>
        <span style="color: #0000ff;">mov</span>     a, <span style="color: #339933;">dl</span>
&nbsp;
        <span style="color: #808080;">; y = (unsigned char) ( y + a );</span>
        <span style="color: #0000ff;">add</span>     y, <span style="color: #339933;">dl</span>
&nbsp;
        <span style="color: #808080;">; m[x] = b = m[y];</span>
        <span style="color: #0000ff;">movzx</span>   <span style="color: #339933;">eax</span>, y
        <span style="color: #0000ff;">mov</span>     <span style="color: #339933;">dl</span>, <span style="color: #0080ff;">byte</span> <span style="color: #0080ff;">ptr</span><span class="br0">&#91;</span><span style="color: #339933;">edi</span>+<span style="color: #339933;">eax</span><span class="br0">&#93;</span>
        <span style="color: #0000ff;">mov</span>     b, <span style="color: #339933;">dl</span>
        <span style="color: #0000ff;">movzx</span>   <span style="color: #339933;">eax</span>, x
        <span style="color: #0000ff;">mov</span>     <span style="color: #0080ff;">byte</span> <span style="color: #0080ff;">ptr</span><span class="br0">&#91;</span><span style="color: #339933;">edi</span>+<span style="color: #339933;">eax</span><span class="br0">&#93;</span>, <span style="color: #339933;">dl</span>
&nbsp;
        <span style="color: #808080;">; m[y] = a;</span>
        <span style="color: #0000ff;">movzx</span>   <span style="color: #339933;">eax</span>, y
        <span style="color: #0000ff;">mov</span>     <span style="color: #339933;">dl</span>, a
        <span style="color: #0000ff;">mov</span>     <span style="color: #0080ff;">byte</span> <span style="color: #0080ff;">ptr</span><span class="br0">&#91;</span><span style="color: #339933;">edi</span>+<span style="color: #339933;">eax</span><span class="br0">&#93;</span>, <span style="color: #339933;">dl</span>
&nbsp;
        <span style="color: #808080;">; data[i] ^= m[(unsigned char) ( a + b )];</span>
        <span style="color: #0000ff;">mov</span>     <span style="color: #339933;">dl</span>, a
        <span style="color: #0000ff;">add</span>     <span style="color: #339933;">dl</span>, b
        <span style="color: #0000ff;">mov</span>     <span style="color: #339933;">dl</span>, <span style="color: #0080ff;">byte</span> <span style="color: #0080ff;">ptr</span><span class="br0">&#91;</span><span style="color: #339933;">edi</span>+<span style="color: #339933;">edx</span><span class="br0">&#93;</span>
        <span style="color: #0000ff;">mov</span>     <span style="color: #339933;">eax</span>, i
        <span style="color: #0000ff;">xor</span>     <span style="color: #0080ff;">byte</span> <span style="color: #0080ff;">ptr</span><span class="br0">&#91;</span><span style="color: #339933;">esi</span>+<span style="color: #339933;">eax</span><span class="br0">&#93;</span>, <span style="color: #339933;">dl</span>
&nbsp;
        <span style="color: #0000ff;">inc</span>     i
        <span style="color: #0000ff;">loop</span>    @l
&nbsp;
@no_data:
        <span style="color: #0000ff;">mov</span>     <span style="color: #339933;">al</span>, x
        <span style="color: #0000ff;">mov</span>     <span style="color: #0080ff;">byte</span> <span style="color: #0080ff;">ptr</span><span class="br0">&#91;</span><span style="color: #339933;">ebx</span><span class="br0">&#93;</span>, <span style="color: #339933;">al</span>
        <span style="color: #0000ff;">mov</span>     <span style="color: #339933;">al</span>, y
        <span style="color: #0000ff;">mov</span>     <span style="color: #0080ff;">byte</span> <span style="color: #0080ff;">ptr</span><span class="br0">&#91;</span><span style="color: #339933;">ebx</span><span style="color: #cc66cc;">+1</span><span class="br0">&#93;</span>, <span style="color: #339933;">al</span>
        <span style="color: #0000ff;">ret</span>
RC4Crypt <span style="color: #0080ff;">endp</span></pre></td></tr></table></code><hr />
</div></div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f956/autres-langages/assembleur/contribuez/">Contribuez</category>
			<dc:creator>n5Rzn1D9dC</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2176908/autres-langages/assembleur/contribuez/rc4-cipher-virus-bagle/</guid>
		</item>
		<item>
			<title>Exemple de base64 du virus Bagle</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2176601&amp;goto=newpost</link>
			<pubDate>Sun, 04 May 2025 04:36:48 GMT</pubDate>
			<description>Bonjour, 
 
Comme certains...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Comme certains d'entre-vous doivent le savoir, le virus bagle a été écrit entièrement en assembleur.<br />
J'ai récupéré la partie &quot;encode&quot; du base64 (il n'y pas de partie &quot;decode).<br />
Si vous regardez la différence avec le miens que j'ai posté dans cette section du forum, vous verrez que contrairement à moi, il n'a pas utilisé de buffer pour stocker les différentes valeurs, tout a été écrit en dynamique, ce qui est impressionnant (pour un non mateu comme moi)<br />
<br />
Voilà le code: (pour intel x86 sous Windows)<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #808080;">; Encodes data to base64 format</span>
Base64Encode <span style="color: #0080ff;">proc</span> <span style="color: #0080ff;">uses</span> <span style="color: #339933;">esi</span> <span style="color: #339933;">edi</span> <span style="color: #339933;">ebx</span> lpSrc, lpDst, dwSrcLen: <span style="color: #0080ff;">DWORD</span>
        <span style="color: #0000ff;">mov</span>     <span style="color: #339933;">esi</span>, lpSrc
        <span style="color: #0000ff;">mov</span>     <span style="color: #339933;">edi</span>, lpDst
        <span style="color: #0000ff;">mov</span>     <span style="color: #339933;">ecx</span>, dwSrcLen
&nbsp;
        <span style="color: #0000ff;">xor</span>     <span style="color: #339933;">ebx</span>, <span style="color: #339933;">ebx</span>
&nbsp;
@l:
        <span style="color: #0000ff;">jecxz</span>   @b64_ret
&nbsp;
        <span style="color: #0000ff;">lodsb</span>
        <span style="color: #0000ff;">shl</span>     <span style="color: #339933;">eax</span>, <span style="color: #cc66cc;">16</span>
        <span style="color: #0000ff;">cmp</span>     <span style="color: #339933;">ecx</span>, <span style="color: #cc66cc;">1</span>
        <span style="color: #0000ff;">jz</span>      @work
        <span style="color: #0000ff;">lodsb</span>
        <span style="color: #0000ff;">shl</span>     <span style="color: #339933;">ax</span>, <span style="color: #cc66cc;">8</span>
        <span style="color: #0000ff;">cmp</span>     <span style="color: #339933;">ecx</span>, <span style="color: #cc66cc;">2</span>
        <span style="color: #0000ff;">jz</span>      @work
        <span style="color: #0000ff;">lodsb</span>
&nbsp;
@work:
        <span style="color: #808080;">; Output b64 quad</span>
        <span style="color: #0000ff;">mov</span>     <span style="color: #339933;">edx</span>, <span style="color: #339933;">eax</span>
        <span style="color: #0000ff;">ror</span>     <span style="color: #339933;">edx</span>, <span style="color: #cc66cc;">24</span>
&nbsp;
        <span style="color: #0000ff;">push</span>    <span style="color: #339933;">ecx</span>
        <span style="color: #0000ff;">push</span>    <span style="color: #cc66cc;">4</span>
        <span style="color: #0000ff;">pop</span>     <span style="color: #339933;">ecx</span>
@l2:
        <span style="color: #0000ff;">call</span>    @b64_write
        <span style="color: #0000ff;">loop</span>    @l2
        <span style="color: #0000ff;">pop</span>     <span style="color: #339933;">ecx</span>
&nbsp;
        <span style="color: #0000ff;">inc</span>     <span style="color: #339933;">ebx</span>
        .<span style="color: #0080ff;">IF</span>     <span style="color: #339933;">ebx</span> == <span style="color: #cc66cc;">18</span>
                <span style="color: #0000ff;">xor</span>     <span style="color: #339933;">ebx</span>, <span style="color: #339933;">ebx</span>
                <span style="color: #0000ff;">mov</span>     <span style="color: #339933;">ax</span>, <span style="color: #cc66cc;">0a0d</span>h
                <span style="color: #0000ff;">stosw</span>
        .<span style="color: #0080ff;">ENDIF</span>
&nbsp;
        <span style="color: #0000ff;">sub</span>     <span style="color: #339933;">ecx</span>, <span style="color: #cc66cc;">3</span>
        <span style="color: #0000ff;">jns</span>     @l
&nbsp;
        <span style="color: #808080;">; Pad</span>
        <span style="color: #0000ff;">neg</span>     <span style="color: #339933;">ecx</span>
        <span style="color: #0000ff;">sub</span>     <span style="color: #339933;">edi</span>, <span style="color: #339933;">ecx</span>
        <span style="color: #0000ff;">mov</span>     <span style="color: #339933;">al</span>, <span style="color: #FF0000;">'='</span>
        <span style="color: #0000ff;">rep</span> <span style="color: #0000ff;">stosb</span>
&nbsp;
@b64_ret:
        <span style="color: #0000ff;">ret</span>
&nbsp;
@b64_write:
        <span style="color: #0000ff;">rol</span>     <span style="color: #339933;">edx</span>, <span style="color: #cc66cc;">6</span>
        <span style="color: #0000ff;">mov</span>     <span style="color: #339933;">eax</span>, <span style="color: #339933;">edx</span>
        <span style="color: #0000ff;">and</span>     <span style="color: #339933;">al</span>, <span style="color: #cc66cc;">00111111b</span>
        <span style="color: #0000ff;">cmp</span>     <span style="color: #339933;">al</span>, <span style="color: #cc66cc;">62</span>
        <span style="color: #0000ff;">jae</span>     @write_spec
&nbsp;
        <span style="color: #0000ff;">cmp</span>     <span style="color: #339933;">al</span>, <span style="color: #cc66cc;">52</span>
        <span style="color: #0000ff;">jae</span>     @write_number
&nbsp;
        <span style="color: #808080;">; Uppercase</span>
        <span style="color: #0000ff;">add</span>     <span style="color: #339933;">al</span>, <span style="color: #FF0000;">'A'</span>
        <span style="color: #0000ff;">cmp</span>     <span style="color: #339933;">al</span>, <span style="color: #FF0000;">'A'</span><span style="color: #cc66cc;">+26</span>
        <span style="color: #0000ff;">jb</span>      @<span style="color: #0080ff;">write</span>
        <span style="color: #808080;">; Lowercase</span>
        <span style="color: #0000ff;">add</span>     <span style="color: #339933;">al</span>, <span style="color: #cc66cc;">6</span>
        <span style="color: #0000ff;">jmp</span>     @<span style="color: #0080ff;">write</span>
        <span style="color: #808080;">; Number</span>
@write_number:
        <span style="color: #0000ff;">add</span>     <span style="color: #339933;">al</span>, <span style="color: #FF0000;">'0'</span><span style="color: #cc66cc;">-52</span>
        <span style="color: #0000ff;">jmp</span>     @<span style="color: #0080ff;">write</span>
        <span style="color: #808080;">; Special: +/</span>
@write_spec:
        <span style="color: #0000ff;">sub</span>     <span style="color: #339933;">al</span>, <span style="color: #cc66cc;">62</span>
        <span style="color: #0000ff;">shl</span>     <span style="color: #339933;">al</span>, <span style="color: #cc66cc;">2</span>
        <span style="color: #0000ff;">add</span>     <span style="color: #339933;">al</span>, <span style="color: #cc66cc;">43</span>        
@<span style="color: #0080ff;">write</span>:
        <span style="color: #0000ff;">stosb</span>
&nbsp;
        retn
Base64Encode <span style="color: #0080ff;">endp</span></pre></td></tr></table></code><hr />
</div></div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f956/autres-langages/assembleur/contribuez/">Contribuez</category>
			<dc:creator>n5Rzn1D9dC</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2176601/autres-langages/assembleur/contribuez/exemple-base64-virus-bagle/</guid>
		</item>
		<item>
			<title>inversion de bits</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2176600&amp;goto=newpost</link>
			<pubDate>Sun, 04 May 2025 04:26:58 GMT</pubDate>
			<description><![CDATA[Voilà un exemple propre d'un...]]></description>
			<content:encoded><![CDATA[<div>Voilà un exemple propre d'un système d'inversion de bits.<br />
Attention, si vous voulez commencer par en faire un vous même, ne choisissait pas la lettre A ni la lettre B.<br />
Je m'explique la lettre A est 0x41 ce qui donne 0100 0001b et on pourrait penser que son double est la solution puisque 0x82 donne le bon résultat 1000 0010b, donc on pourrait être tenter de penser qu'il suffit de faire x2 pour inverser les bits.<br />
Ensuite vient le problème de la lettre B 0x42, qui est en faite un miroir d'elle même 0100 0010b donc non utilisable pour commencer à travailler. C'est pourquoi j'ai choisi la lettre C 0x43 qui donne 0xC2 en sortie et une inversion de bits parfaite.<br />
Amusez-vous bien.<br />
<br />
A compiler avec FASM, fonctionne  sous Windows 11, intel x86<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
format PE console
include <span style="color: #FF0000;">'include/win32a.inc'</span>
entry <span style="color: #0080ff;">start</span>
&nbsp;
<span style="color: #0080ff;">section</span> <span style="color: #FF0000;">'.text'</span> <span style="color: #0080ff;">code</span> readable executable
&nbsp;
<span style="color: #800000;">start:</span>
    <span style="color: #0000ff;">xor</span> <span style="color: #339933;">eax</span>,<span style="color: #339933;">eax</span>
    <span style="color: #0000ff;">mov</span> <span style="color: #339933;">al</span>,<span style="color: #cc66cc;">0x43</span>
&nbsp;
    <span style="color: #0000ff;">call</span> reverse_bits
&nbsp;
    <span style="color: #0000ff;">push</span> <span style="color: #339933;">eax</span>
    <span style="color: #0000ff;">push</span> formh
    <span style="color: #0000ff;">call</span> <span class="br0">&#91;</span>printf<span class="br0">&#93;</span>
&nbsp;
    <span style="color: #0000ff;">push</span> <span style="color: #cc66cc;">0</span>
    <span style="color: #0000ff;">call</span> <span class="br0">&#91;</span>ExitProcess<span class="br0">&#93;</span>
&nbsp;
<span style="color: #800000;">reverse_bits:</span>
    <span style="color: #0000ff;">push</span> <span style="color: #339933;">ecx</span>
    <span style="color: #0000ff;">push</span> <span style="color: #339933;">edx</span>
&nbsp;
    <span style="color: #0000ff;">xor</span> <span style="color: #339933;">edx</span>,<span style="color: #339933;">edx</span>
    <span style="color: #0000ff;">mov</span> <span style="color: #339933;">cl</span>,<span style="color: #cc66cc;">8</span>
&nbsp;
@@:
    <span style="color: #0000ff;">shl</span> <span style="color: #339933;">al</span>,<span style="color: #cc66cc;">1</span>        <span style="color: #808080;">; bit de gauche &rarr; CF</span>
    <span style="color: #0000ff;">rcr</span> <span style="color: #339933;">dl</span>,<span style="color: #cc66cc;">1</span>        <span style="color: #808080;">; CF &rarr; bit de droite de DL</span>
    <span style="color: #0000ff;">dec</span> <span style="color: #339933;">cl</span>
    <span style="color: #0000ff;">jnz</span> <span style="color: #0080ff;">@b</span>
&nbsp;
    <span style="color: #0000ff;">mov</span> <span style="color: #339933;">al</span>,<span style="color: #339933;">dl</span>
&nbsp;
    <span style="color: #0000ff;">pop</span> <span style="color: #339933;">edx</span>
    <span style="color: #0000ff;">pop</span> <span style="color: #339933;">ecx</span>
    <span style="color: #0000ff;">ret</span>
&nbsp;
<span style="color: #0080ff;">section</span> <span style="color: #FF0000;">'.data'</span> <span style="color: #0080ff;">data</span> readable writeable
&nbsp;
formh <span style="color: #0080ff;">db</span> <span style="color: #FF0000;">'%08x'</span>,<span style="color: #cc66cc;">13</span>,<span style="color: #cc66cc;">10</span>,<span style="color: #cc66cc;">0</span>
&nbsp;
<span style="color: #0080ff;">section</span> <span style="color: #FF0000;">'.idata'</span> <span style="color: #0080ff;">import</span> <span style="color: #0080ff;">data</span> readable writeable
&nbsp;
library kernel32,<span style="color: #FF0000;">'kernel32.dll'</span>,\
		msvcrt,<span style="color: #FF0000;">'msvcrt.dll'</span>,\
		user32,<span style="color: #FF0000;">'user32.dll'</span>,\
		wsock32,<span style="color: #FF0000;">'ws2_32.dll'</span>
&nbsp;
include <span style="color: #FF0000;">'include\api\kernel32.inc'</span>
include <span style="color: #FF0000;">'include\api\user32.inc'</span>
include <span style="color: #FF0000;">'include\api\wsock32.inc'</span>
&nbsp;
<span style="color: #0080ff;">import</span> msvcrt,\
printf,<span style="color: #FF0000;">'printf'</span></pre></td></tr></table></code><hr />
</div></div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f956/autres-langages/assembleur/contribuez/">Contribuez</category>
			<dc:creator>n5Rzn1D9dC</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2176600/autres-langages/assembleur/contribuez/inversion-bits/</guid>
		</item>
	</channel>
</rss>
